/*!
 * pixi.js - v4.6.2
 * Compiled Thu, 30 Nov 2017 15:24:33 UTC
 *
 * pixi.js is licensed under the MIT License.
 * http://www.opensource.org/licenses/mit-license
 */

/**
 * isMobile.js v0.4.1
 *
 * A simple library to detect Apple phones and tablets,
 * Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),
 * and any kind of seven inch device, via user agent sniffing.
 *
 * @author: Kai Mallea (kmallea@gmail.com)
 *
 * @license: http://creativecommons.org/publicdomain/zero/1.0/
 */

/*
object-assign
(c) Sindre Sorhus
@license MIT
*/

// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

/*! https://mths.be/punycode v1.4.1 by @mathias */

/**
 * The height of the top row (c)
 *
 * @member {number}
 * @memberof PIXI.NineSlicePlane#
 * @override
 */

/**
 * @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
 **/

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

/*! Spatial Plugin */

! function() {
    ! 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 e(t, n, r) {
            function i(a, s) {
                if (!n[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 = n[a] = {
                        exports: {}
                    };
                    t[a][0].call(c.exports, function(e) {
                        var n = t[a][1][e];
                        return i(n || e)
                    }, c, c.exports, e, t, n, r)
                }
                return n[a].exports
            }
            for (var o = "function" == typeof require && require, a = 0; a < r.length; a++) i(r[a]);
            return i
        }({
            1: [function(e, t, n) {
                "use restrict";

                function r(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
                }
                n.INT_BITS = 32, n.INT_MAX = 2147483647, n.INT_MIN = -1 << 31, n.sign = function(e) {
                    return (e > 0) - (e < 0)
                }, n.abs = function(e) {
                    var t = e >> 31;
                    return (e ^ t) - t
                }, n.min = function(e, t) {
                    return t ^ (e ^ t) & -(e < t)
                }, n.max = function(e, t) {
                    return e ^ (e ^ t) & -(e < t)
                }, n.isPow2 = function(e) {
                    return !(e & e - 1 || !e)
                }, n.log2 = function(e) {
                    var t, n;
                    return t = (e > 65535) << 4, e >>>= t, n = (e > 255) << 3, e >>>= n, t |= n, n = (e > 15) << 2, e >>>= n, t |= n, n = (e > 3) << 1, e >>>= n, (t |= n) | e >> 1
                }, n.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
                }, n.popCount = function(e) {
                    return e -= e >>> 1 & 1431655765, 16843009 * ((e = (858993459 & e) + (e >>> 2 & 858993459)) + (e >>> 4) & 252645135) >>> 24
                }, n.countTrailingZeros = r, n.nextPow2 = function(e) {
                    return e += 0 === e, --e, e |= e >>> 1, e |= e >>> 2, e |= e >>> 4, e |= e >>> 8, (e |= e >>> 16) + 1
                }, n.prevPow2 = function(e) {
                    return e |= e >>> 1, e |= e >>> 2, e |= e >>> 4, e |= e >>> 8, (e |= e >>> 16) - (e >>> 1)
                }, n.parity = function(e) {
                    return e ^= e >>> 16, e ^= e >>> 8, e ^= e >>> 4, 27030 >>> (e &= 15) & 1
                };
                var i = new Array(256);
                ! function(e) {
                    for (var t = 0; t < 256; ++t) {
                        var n = t,
                            r = t,
                            i = 7;
                        for (n >>>= 1; n; n >>>= 1) r <<= 1, r |= 1 & n, --i;
                        e[t] = r << i & 255
                    }
                }(i), n.reverse = function(e) {
                    return i[255 & e] << 24 | i[e >>> 8 & 255] << 16 | i[e >>> 16 & 255] << 8 | i[e >>> 24 & 255]
                }, n.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
                }, n.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
                }, n.interleave3 = function(e, t, n) {
                    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, n &= 1023, n = 4278190335 & (n | n << 16), n = 251719695 & (n | n << 8), n = 3272356035 & (n | n << 4), n = 1227133513 & (n | n << 2), e | n << 2
                }, n.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
                }, n.nextCombination = function(e) {
                    var t = e | e - 1;
                    return t + 1 | (~t & -~t) - 1 >>> r(e) + 1
                }
            }, {}],
            2: [function(e, t, n) {
                "use strict";

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

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

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

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

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

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

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

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

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

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

                function p(e, t) {
                    if (t = f(e, t)) {
                        var n = k(t, e);
                        o(n, n.next)
                    }
                }

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

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

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

                function b(e, t, n, r, i) {
                    return e = 32767 * (e - n) * i, t = 32767 * (t - r) * i, 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 _(e) {
                    var t = e,
                        n = e;
                    do {
                        t.x < n.x && (n = t), t = t.next
                    } while (t !== e);
                    return n
                }

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

                function v(e, t) {
                    return e.next.i !== t.i && e.prev.i !== t.i && !T(e, t) && P(e, t) && P(t, e) && C(e, t)
                }

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

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

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

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

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

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

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

                function E(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 A(e, t, n) {
                    this.i = e, this.x = t, this.y = n, this.prev = null, this.next = null, this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = !1
                }

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

                function r() {}

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

                function o() {
                    this._events = new r, this._eventsCount = 0
                }
                var a = Object.prototype.hasOwnProperty,
                    s = "~";
                Object.create && (r.prototype = Object.create(null), (new r).__proto__ || (s = !1)), o.prototype.eventNames = function() {
                    var e, t, n = [];
                    if (0 === this._eventsCount) return n;
                    for (t in e = this._events) a.call(e, t) && n.push(s ? t.slice(1) : t);
                    return Object.getOwnPropertySymbols ? n.concat(Object.getOwnPropertySymbols(e)) : n
                }, o.prototype.listeners = function(e, t) {
                    var n = s ? s + e : e,
                        r = this._events[n];
                    if (t) return !!r;
                    if (!r) return [];
                    if (r.fn) return [r.fn];
                    for (var i = 0, o = r.length, a = new Array(o); i < o; i++) a[i] = r[i].fn;
                    return a
                }, o.prototype.emit = function(e, t, n, r, i, o) {
                    var a = s ? s + e : e;
                    if (!this._events[a]) return !1;
                    var l, u, c = this._events[a],
                        d = arguments.length;
                    if (c.fn) {
                        switch (c.once && this.removeListener(e, c.fn, void 0, !0), d) {
                            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, n), !0;
                            case 4:
                                return c.fn.call(c.context, t, n, r), !0;
                            case 5:
                                return c.fn.call(c.context, t, n, r, i), !0;
                            case 6:
                                return c.fn.call(c.context, t, n, r, i, o), !0
                        }
                        for (u = 1, l = new Array(d - 1); u < d; u++) l[u - 1] = arguments[u];
                        c.fn.apply(c.context, l)
                    } else {
                        var h, p = c.length;
                        for (u = 0; u < p; u++) switch (c[u].once && this.removeListener(e, c[u].fn, void 0, !0), d) {
                            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, n);
                                break;
                            case 4:
                                c[u].fn.call(c[u].context, t, n, r);
                                break;
                            default:
                                if (!l)
                                    for (h = 1, l = new Array(d - 1); h < d; h++) l[h - 1] = arguments[h];
                                c[u].fn.apply(c[u].context, l)
                        }
                    }
                    return !0
                }, o.prototype.on = function(e, t, n) {
                    var r = new i(t, n || this),
                        o = s ? s + e : e;
                    return this._events[o] ? this._events[o].fn ? this._events[o] = [this._events[o], r] : this._events[o].push(r) : (this._events[o] = r, this._eventsCount++), this
                }, o.prototype.once = function(e, t, n) {
                    var r = new i(t, n || this, !0),
                        o = s ? s + e : e;
                    return this._events[o] ? this._events[o].fn ? this._events[o] = [this._events[o], r] : this._events[o].push(r) : (this._events[o] = r, this._eventsCount++), this
                }, o.prototype.removeListener = function(e, t, n, i) {
                    var o = s ? s + e : e;
                    if (!this._events[o]) return this;
                    if (!t) return 0 == --this._eventsCount ? this._events = new r : delete this._events[o], this;
                    var a = this._events[o];
                    if (a.fn) a.fn !== t || i && !a.once || n && a.context !== n || (0 == --this._eventsCount ? this._events = new r : delete this._events[o]);
                    else {
                        for (var l = 0, u = [], c = a.length; l < c; l++)(a[l].fn !== t || i && !a[l].once || n && a[l].context !== n) && u.push(a[l]);
                        u.length ? this._events[o] = 1 === u.length ? u[0] : u : 0 == --this._eventsCount ? this._events = new r : 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 r : delete this._events[t])) : (this._events = new r, 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, n, r) {
                ! function(t) {
                    var r = /iPhone/i,
                        i = /iPod/i,
                        o = /iPad/i,
                        a = /(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,
                        s = /Android/i,
                        l = /(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,
                        u = /(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,
                        c = /Windows Phone/i,
                        d = /(?=.*\bWindows\b)(?=.*\bARM\b)/i,
                        h = /BlackBerry/i,
                        p = /BB10/i,
                        f = /Opera Mini/i,
                        m = /(CriOS|Chrome)(?=.*\bMobile\b)/i,
                        g = /(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,
                        b = new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)", "i"),
                        _ = function(e, t) {
                            return e.test(t)
                        },
                        y = function(e) {
                            var t = e || navigator.userAgent,
                                n = t.split("[FBAN");
                            if (void 0 !== n[1] && (t = n[0]), n = t.split("Twitter"), void 0 !== n[1] && (t = n[0]), this.apple = {
                                    phone: _(r, t),
                                    ipod: _(i, t),
                                    tablet: !_(r, t) && _(o, t),
                                    device: _(r, t) || _(i, t) || _(o, t)
                                }, this.amazon = {
                                    phone: _(l, t),
                                    tablet: !_(l, t) && _(u, t),
                                    device: _(l, t) || _(u, t)
                                }, this.android = {
                                    phone: _(l, t) || _(a, t),
                                    tablet: !_(l, t) && !_(a, t) && (_(u, t) || _(s, t)),
                                    device: _(l, t) || _(u, t) || _(a, t) || _(s, t)
                                }, this.windows = {
                                    phone: _(c, t),
                                    tablet: _(d, t),
                                    device: _(c, t) || _(d, t)
                                }, this.other = {
                                    blackberry: _(h, t),
                                    blackberry10: _(p, t),
                                    opera: _(f, t),
                                    firefox: _(g, t),
                                    chrome: _(m, t),
                                    device: _(h, t) || _(p, t) || _(f, t) || _(g, t) || _(m, t)
                                }, this.seven_inch = _(b, t), this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch, this.phone = this.apple.phone || this.android.phone || this.windows.phone, this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet, "undefined" == typeof window) return this
                        },
                        v = function() {
                            var e = new y;
                            return e.Class = y, e
                        };
                    void 0 !== n && n.exports && "undefined" == typeof window ? n.exports = y : void 0 !== n && n.exports && "undefined" != typeof window ? n.exports = v() : "function" == typeof e && e.amd ? e("isMobile", [], t.isMobile = v()) : t.isMobile = v()
                }(this)
            }, {}],
            5: [function(e, t, n) {
                function r(e) {
                    if (null === e || void 0 === e) throw new TypeError("Object.assign cannot be called with null or undefined");
                    return Object(e)
                }
                var i = 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 = {}, n = 0; n < 10; n++) t["_" + String.fromCharCode(n)] = n;
                        if ("0123456789" !== Object.getOwnPropertyNames(t).map(function(e) {
                                return t[e]
                            }).join("")) return !1;
                        var r = {};
                        return "abcdefghijklmnopqrst".split("").forEach(function(e) {
                            r[e] = e
                        }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, r)).join("")
                    } catch (e) {
                        return !1
                    }
                }() ? Object.assign : function(e, t) {
                    for (var n, s, l = r(e), u = 1; u < arguments.length; u++) {
                        n = Object(arguments[u]);
                        for (var c in n) o.call(n, c) && (l[c] = n[c]);
                        if (i) {
                            s = i(n);
                            for (var d = 0; d < s.length; d++) a.call(n, s[d]) && (l[s[d]] = n[s[d]])
                        }
                    }
                    return l
                }
            }, {}],
            6: [function(e, t, n) {
                var r = new ArrayBuffer(0),
                    i = function(e, t, n, i) {
                        this.gl = e, this.buffer = e.createBuffer(), this.type = t || e.ARRAY_BUFFER, this.drawType = i || e.STATIC_DRAW, this.data = r, n && this.upload(n), this._updateID = 0
                    };
                i.prototype.upload = function(e, t, n) {
                    n || this.bind();
                    var r = this.gl;
                    e = e || this.data, t = t || 0, this.data.byteLength >= e.byteLength ? r.bufferSubData(this.type, t, e) : r.bufferData(this.type, e, this.drawType), this.data = e
                }, i.prototype.bind = function() {
                    this.gl.bindBuffer(this.type, this.buffer)
                }, i.createVertexBuffer = function(e, t, n) {
                    return new i(e, e.ARRAY_BUFFER, t, n)
                }, i.createIndexBuffer = function(e, t, n) {
                    return new i(e, e.ELEMENT_ARRAY_BUFFER, t, n)
                }, i.create = function(e, t, n, r) {
                    return new i(e, t, n, r)
                }, i.prototype.destroy = function() {
                    this.gl.deleteBuffer(this.buffer)
                }, t.exports = i
            }, {}],
            7: [function(e, t, n) {
                var r = e("./GLTexture"),
                    i = function(e, t, n) {
                        this.gl = e, this.framebuffer = e.createFramebuffer(), this.stencil = null, this.texture = null, this.width = t || 100, this.height = n || 100
                    };
                i.prototype.enableTexture = function(e) {
                    var t = this.gl;
                    this.texture = e || new r(t), this.texture.bind(), this.bind(), t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.texture.texture, 0)
                }, i.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)
                    }
                }, i.prototype.clear = function(e, t, n, r) {
                    this.bind();
                    var i = this.gl;
                    i.clearColor(e, t, n, r), i.clear(i.COLOR_BUFFER_BIT | i.DEPTH_BUFFER_BIT)
                }, i.prototype.bind = function() {
                    var e = this.gl;
                    e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer)
                }, i.prototype.unbind = function() {
                    var e = this.gl;
                    e.bindFramebuffer(e.FRAMEBUFFER, null)
                }, i.prototype.resize = function(e, t) {
                    var n = this.gl;
                    this.width = e, this.height = t, this.texture && this.texture.uploadData(null, e, t), this.stencil && (n.bindRenderbuffer(n.RENDERBUFFER, this.stencil), n.renderbufferStorage(n.RENDERBUFFER, n.DEPTH_STENCIL, e, t))
                }, i.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
                }, i.createRGBA = function(e, t, n, o) {
                    var a = r.fromData(e, null, t, n);
                    a.enableNearestScaling(), a.enableWrapClamp();
                    var s = new i(e, t, n);
                    return s.enableTexture(a), s.unbind(), s
                }, i.createFloat32 = function(e, t, n, o) {
                    var a = new r.fromData(e, o, t, n);
                    a.enableNearestScaling(), a.enableWrapClamp();
                    var s = new i(e, t, n);
                    return s.enableTexture(a), s.unbind(), s
                }, t.exports = i
            }, {
                "./GLTexture": 9
            }],
            8: [function(e, t, n) {
                var r = e("./shader/compileProgram"),
                    i = e("./shader/extractAttributes"),
                    o = e("./shader/extractUniforms"),
                    a = e("./shader/setPrecision"),
                    s = e("./shader/generateUniformAccessObject"),
                    l = function(e, t, n, l, u) {
                        this.gl = e, l && (t = a(t, l), n = a(n, l)), this.program = r(e, t, n, u), this.attributes = i(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": 14,
                "./shader/extractAttributes": 16,
                "./shader/extractUniforms": 17,
                "./shader/generateUniformAccessObject": 18,
                "./shader/setPrecision": 22
            }],
            9: [function(e, t, n) {
                var r = function(e, t, n, r, i) {
                    this.gl = e, this.texture = e.createTexture(), this.mipmap = !1, this.premultiplyAlpha = !1, this.width = t || -1, this.height = n || -1, this.format = r || e.RGBA, this.type = i || e.UNSIGNED_BYTE
                };
                r.prototype.upload = function(e) {
                    this.bind();
                    var t = this.gl;
                    t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);
                    var n = e.videoWidth || e.width,
                        r = e.videoHeight || e.height;
                    r !== this.height || n !== 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 = n, this.height = r
                };
                var i = !1;
                r.prototype.uploadData = function(e, t, n) {
                    this.bind();
                    var r = this.gl;
                    if (e instanceof Float32Array) {
                        if (!i) {
                            if (!r.getExtension("OES_texture_float")) throw new Error("floating point textures not available");
                            i = !0
                        }
                        this.type = r.FLOAT
                    } else this.type = this.type || r.UNSIGNED_BYTE;
                    r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha), t !== this.width || n !== this.height ? r.texImage2D(r.TEXTURE_2D, 0, this.format, t, n, 0, this.format, this.type, e || null) : r.texSubImage2D(r.TEXTURE_2D, 0, 0, 0, t, n, this.format, this.type, e || null), this.width = t, this.height = n
                }, r.prototype.bind = function(e) {
                    var t = this.gl;
                    void 0 !== e && t.activeTexture(t.TEXTURE0 + e), t.bindTexture(t.TEXTURE_2D, this.texture)
                }, r.prototype.unbind = function() {
                    var e = this.gl;
                    e.bindTexture(e.TEXTURE_2D, null)
                }, r.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)
                }, r.prototype.magFilter = function(e) {
                    var t = this.gl;
                    this.bind(), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, e ? t.LINEAR : t.NEAREST)
                }, r.prototype.enableMipmap = function() {
                    var e = this.gl;
                    this.bind(), this.mipmap = !0, e.generateMipmap(e.TEXTURE_2D)
                }, r.prototype.enableLinearScaling = function() {
                    this.minFilter(!0), this.magFilter(!0)
                }, r.prototype.enableNearestScaling = function() {
                    this.minFilter(!1), this.magFilter(!1)
                }, r.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)
                }, r.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)
                }, r.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)
                }, r.prototype.destroy = function() {
                    this.gl.deleteTexture(this.texture)
                }, r.fromSource = function(e, t, n) {
                    var i = new r(e);
                    return i.premultiplyAlpha = n || !1, i.upload(t), i
                }, r.fromData = function(e, t, n, i) {
                    var o = new r(e);
                    return o.uploadData(t, n, i), o
                }, t.exports = r
            }, {}],
            10: [function(e, t, n) {
                function r(e, t) {
                    if (this.nativeVaoExtension = null, r.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 n = e.getParameter(e.MAX_VERTEX_ATTRIBS);
                        this.nativeState = {
                            tempAttribState: new Array(n),
                            attribState: new Array(n)
                        }
                    }
                    this.gl = e, this.attributes = [], this.indexBuffer = null, this.dirty = !1
                }
                var i = e("./setVertexAttribArrays");
                r.prototype.constructor = r, t.exports = r, r.FORCE_NATIVE = !1, r.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
                }, r.prototype.unbind = function() {
                    return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(null), this
                }, r.prototype.activate = function() {
                    for (var e = this.gl, t = null, n = 0; n < this.attributes.length; n++) {
                        var r = this.attributes[n];
                        t !== r.buffer && (r.buffer.bind(), t = r.buffer), e.vertexAttribPointer(r.attribute.location, r.attribute.size, r.type || e.FLOAT, r.normalized || !1, r.stride || 0, r.start || 0)
                    }
                    return i(e, this.attributes, this.nativeState), this.indexBuffer && this.indexBuffer.bind(), this
                }, r.prototype.addAttribute = function(e, t, n, r, i, o) {
                    return this.attributes.push({
                        buffer: e,
                        attribute: t,
                        location: t.location,
                        type: n || this.gl.FLOAT,
                        normalized: r || !1,
                        stride: i || 0,
                        start: o || 0
                    }), this.dirty = !0, this
                }, r.prototype.addIndex = function(e) {
                    return this.indexBuffer = e, this.dirty = !0, this
                }, r.prototype.clear = function() {
                    return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(this.nativeVao), this.attributes.length = 0, this.indexBuffer = null, this
                }, r.prototype.draw = function(e, t, n) {
                    var r = this.gl;
                    return this.indexBuffer ? r.drawElements(e, t || this.indexBuffer.data.length, r.UNSIGNED_SHORT, 2 * (n || 0)) : r.drawArrays(e, n, t || this.getSize()), this
                }, r.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
                }, r.prototype.getSize = function() {
                    var e = this.attributes[0];
                    return e.buffer.data.length / (e.stride / 4 || e.attribute.size)
                }
            }, {
                "./setVertexAttribArrays": 13
            }],
            11: [function(e, t, n) {
                var r = function(e, t) {
                    var n = e.getContext("webgl", t) || e.getContext("experimental-webgl", t);
                    if (!n) throw new Error("This browser does not support webGL. Try using the canvas renderer");
                    return n
                };
                t.exports = r
            }, {}],
            12: [function(e, t, n) {
                var r = {
                    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 = r), "undefined" != typeof window && (window.PIXI = window.PIXI || {}, window.PIXI.glCore = r)
            }, {
                "./GLBuffer": 6,
                "./GLFramebuffer": 7,
                "./GLShader": 8,
                "./GLTexture": 9,
                "./VertexArrayObject": 10,
                "./createContext": 11,
                "./setVertexAttribArrays": 13,
                "./shader": 19
            }],
            13: [function(e, t, n) {
                var r = function(e, t, n) {
                    var r;
                    if (n) {
                        var i = n.tempAttribState,
                            o = n.attribState;
                        for (r = 0; r < i.length; r++) i[r] = !1;
                        for (r = 0; r < t.length; r++) i[t[r].attribute.location] = !0;
                        for (r = 0; r < o.length; r++) o[r] !== i[r] && (o[r] = i[r], n.attribState[r] ? e.enableVertexAttribArray(r) : e.disableVertexAttribArray(r))
                    } else
                        for (r = 0; r < t.length; r++) {
                            var a = t[r];
                            e.enableVertexAttribArray(a.attribute.location)
                        }
                };
                t.exports = r
            }, {}],
            14: [function(e, t, n) {
                var r = function(e, t, n, r) {
                        var o = i(e, e.VERTEX_SHADER, t),
                            a = i(e, e.FRAGMENT_SHADER, n),
                            s = e.createProgram();
                        if (e.attachShader(s, o), e.attachShader(s, a), r)
                            for (var l in r) e.bindAttribLocation(s, r[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
                    },
                    i = function(e, t, n) {
                        var r = e.createShader(t);
                        return e.shaderSource(r, n), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS) ? r : null
                    };
                t.exports = r
            }, {}],
            15: [function(e, t, n) {
                var r = 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 i(2 * t);
                            case "bvec3":
                                return i(3 * t);
                            case "bvec4":
                                return i(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])
                        }
                    },
                    i = function(e) {
                        for (var t = new Array(e), n = 0; n < t.length; n++) t[n] = !1;
                        return t
                    };
                t.exports = r
            }, {}],
            16: [function(e, t, n) {
                var r = e("./mapType"),
                    i = e("./mapSize"),
                    o = function(e, t) {
                        for (var n = {}, o = e.getProgramParameter(t, e.ACTIVE_ATTRIBUTES), s = 0; s < o; s++) {
                            var l = e.getActiveAttrib(t, s),
                                u = r(e, l.type);
                            n[l.name] = {
                                type: u,
                                size: i(u),
                                location: e.getAttribLocation(t, l.name),
                                pointer: a
                            }
                        }
                        return n
                    },
                    a = function(e, t, n, r) {
                        gl.vertexAttribPointer(this.location, this.size, e || gl.FLOAT, t || !1, n || 0, r || 0)
                    };
                t.exports = o
            }, {
                "./mapSize": 20,
                "./mapType": 21
            }],
            17: [function(e, t, n) {
                var r = e("./mapType"),
                    i = e("./defaultValue"),
                    o = function(e, t) {
                        for (var n = {}, o = e.getProgramParameter(t, e.ACTIVE_UNIFORMS), a = 0; a < o; a++) {
                            var s = e.getActiveUniform(t, a),
                                l = s.name.replace(/\[.*?\]/, ""),
                                u = r(e, s.type);
                            n[l] = {
                                type: u,
                                size: s.size,
                                location: e.getUniformLocation(t, l),
                                value: i(u, s.size)
                            }
                        }
                        return n
                    };
                t.exports = o
            }, {
                "./defaultValue": 15,
                "./mapType": 21
            }],
            18: [function(e, t, n) {
                function r(e, t) {
                    return function(n) {
                        this.data[e].value = n;
                        var r = this.data[e].location;
                        1 === t.size ? s[t.type](this.gl, r, n) : l[t.type](this.gl, r, n)
                    }
                }

                function i(e, t) {
                    for (var n = t, r = 0; r < e.length - 1; r++) {
                        var i = n[e[r]] || {
                            data: {}
                        };
                        n[e[r]] = i, n = i
                    }
                    return n
                }
                var o = function(e, t) {
                        var n = {
                            data: {}
                        };
                        n.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],
                                d = i(u, n),
                                h = t[l];
                            d.data[c] = h, d.gl = e, Object.defineProperty(d, c, {
                                get: a(c),
                                set: r(c, h)
                            })
                        }
                        return n
                    },
                    a = function(e) {
                        return function() {
                            return this.data[e].value
                        }
                    },
                    s = {
                        float: function(e, t, n) {
                            e.uniform1f(t, n)
                        },
                        vec2: function(e, t, n) {
                            e.uniform2f(t, n[0], n[1])
                        },
                        vec3: function(e, t, n) {
                            e.uniform3f(t, n[0], n[1], n[2])
                        },
                        vec4: function(e, t, n) {
                            e.uniform4f(t, n[0], n[1], n[2], n[3])
                        },
                        int: function(e, t, n) {
                            e.uniform1i(t, n)
                        },
                        ivec2: function(e, t, n) {
                            e.uniform2i(t, n[0], n[1])
                        },
                        ivec3: function(e, t, n) {
                            e.uniform3i(t, n[0], n[1], n[2])
                        },
                        ivec4: function(e, t, n) {
                            e.uniform4i(t, n[0], n[1], n[2], n[3])
                        },
                        bool: function(e, t, n) {
                            e.uniform1i(t, n)
                        },
                        bvec2: function(e, t, n) {
                            e.uniform2i(t, n[0], n[1])
                        },
                        bvec3: function(e, t, n) {
                            e.uniform3i(t, n[0], n[1], n[2])
                        },
                        bvec4: function(e, t, n) {
                            e.uniform4i(t, n[0], n[1], n[2], n[3])
                        },
                        mat2: function(e, t, n) {
                            e.uniformMatrix2fv(t, !1, n)
                        },
                        mat3: function(e, t, n) {
                            e.uniformMatrix3fv(t, !1, n)
                        },
                        mat4: function(e, t, n) {
                            e.uniformMatrix4fv(t, !1, n)
                        },
                        sampler2D: function(e, t, n) {
                            e.uniform1i(t, n)
                        }
                    },
                    l = {
                        float: function(e, t, n) {
                            e.uniform1fv(t, n)
                        },
                        vec2: function(e, t, n) {
                            e.uniform2fv(t, n)
                        },
                        vec3: function(e, t, n) {
                            e.uniform3fv(t, n)
                        },
                        vec4: function(e, t, n) {
                            e.uniform4fv(t, n)
                        },
                        int: function(e, t, n) {
                            e.uniform1iv(t, n)
                        },
                        ivec2: function(e, t, n) {
                            e.uniform2iv(t, n)
                        },
                        ivec3: function(e, t, n) {
                            e.uniform3iv(t, n)
                        },
                        ivec4: function(e, t, n) {
                            e.uniform4iv(t, n)
                        },
                        bool: function(e, t, n) {
                            e.uniform1iv(t, n)
                        },
                        bvec2: function(e, t, n) {
                            e.uniform2iv(t, n)
                        },
                        bvec3: function(e, t, n) {
                            e.uniform3iv(t, n)
                        },
                        bvec4: function(e, t, n) {
                            e.uniform4iv(t, n)
                        },
                        sampler2D: function(e, t, n) {
                            e.uniform1iv(t, n)
                        }
                    };
                t.exports = o
            }, {}],
            19: [function(e, t, n) {
                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": 14,
                "./defaultValue": 15,
                "./extractAttributes": 16,
                "./extractUniforms": 17,
                "./generateUniformAccessObject": 18,
                "./mapSize": 20,
                "./mapType": 21,
                "./setPrecision": 22
            }],
            20: [function(e, t, n) {
                var r = function(e) {
                        return i[e]
                    },
                    i = {
                        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 = r
            }, {}],
            21: [function(e, t, n) {
                var r = function(e, t) {
                        if (!i) {
                            var n = Object.keys(o);
                            i = {};
                            for (var r = 0; r < n.length; ++r) {
                                var a = n[r];
                                i[e[a]] = o[a]
                            }
                        }
                        return i[t]
                    },
                    i = 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 = r
            }, {}],
            22: [function(e, t, n) {
                var r = function(e, t) {
                    return "precision" !== e.substring(0, 9) ? "precision " + t + " float;\n" + e : e
                };
                t.exports = r
            }, {}],
            23: [function(e, t, n) {
                (function(e) {
                    function t(e, t) {
                        for (var n = 0, r = e.length - 1; r >= 0; r--) {
                            var i = e[r];
                            "." === i ? e.splice(r, 1) : ".." === i ? (e.splice(r, 1), n++) : n && (e.splice(r, 1), n--)
                        }
                        if (t)
                            for (; n--; n) e.unshift("..");
                        return e
                    }

                    function r(e, t) {
                        if (e.filter) return e.filter(t);
                        for (var n = [], r = 0; r < e.length; r++) t(e[r], r, e) && n.push(e[r]);
                        return n
                    }
                    var i = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,
                        o = function(e) {
                            return i.exec(e).slice(1)
                        };
                    n.resolve = function() {
                        for (var n = "", i = !1, o = arguments.length - 1; o >= -1 && !i; o--) {
                            var a = o >= 0 ? arguments[o] : e.cwd();
                            if ("string" != typeof a) throw new TypeError("Arguments to path.resolve must be strings");
                            a && (n = a + "/" + n, i = "/" === a.charAt(0))
                        }
                        return n = t(r(n.split("/"), function(e) {
                            return !!e
                        }), !i).join("/"), (i ? "/" : "") + n || "."
                    }, n.normalize = function(e) {
                        var i = n.isAbsolute(e),
                            o = "/" === a(e, -1);
                        return e = t(r(e.split("/"), function(e) {
                            return !!e
                        }), !i).join("/"), e || i || (e = "."), e && o && (e += "/"), (i ? "/" : "") + e
                    }, n.isAbsolute = function(e) {
                        return "/" === e.charAt(0)
                    }, n.join = function() {
                        var e = Array.prototype.slice.call(arguments, 0);
                        return n.normalize(r(e, function(e, t) {
                            if ("string" != typeof e) throw new TypeError("Arguments to path.join must be strings");
                            return e
                        }).join("/"))
                    }, n.relative = function(e, t) {
                        function r(e) {
                            for (var t = 0; t < e.length && "" === e[t]; t++);
                            for (var n = e.length - 1; n >= 0 && "" === e[n]; n--);
                            return t > n ? [] : e.slice(t, n - t + 1)
                        }
                        e = n.resolve(e).substr(1), t = n.resolve(t).substr(1);
                        for (var i = r(e.split("/")), o = r(t.split("/")), a = Math.min(i.length, o.length), s = a, l = 0; l < a; l++)
                            if (i[l] !== o[l]) {
                                s = l;
                                break
                            }
                        for (var u = [], l = s; l < i.length; l++) u.push("..");
                        return u = u.concat(o.slice(s)), u.join("/")
                    }, n.sep = "/", n.delimiter = ":", n.dirname = function(e) {
                        var t = o(e),
                            n = t[0],
                            r = t[1];
                        return n || r ? (r && (r = r.substr(0, r.length - 1)), n + r) : "."
                    }, n.basename = function(e, t) {
                        var n = o(e)[2];
                        return t && n.substr(-1 * t.length) === t && (n = n.substr(0, n.length - t.length)), n
                    }, n.extname = function(e) {
                        return o(e)[3]
                    };
                    var a = "b" === "ab".substr(-1) ? function(e, t, n) {
                        return e.substr(t, n)
                    } : function(e, t, n) {
                        return t < 0 && (t = e.length + t), e.substr(t, n)
                    }
                }).call(this, e("_process"))
            }, {
                _process: 24
            }],
            24: [function(e, t, n) {
                function r() {
                    throw new Error("setTimeout has not been defined")
                }

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

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

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

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

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

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

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

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

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

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

                        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 : w
                        }

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

                        function h(e, t, n) {
                            var r = 0;
                            for (e = n ? D(e / k) : e >> 1, e += D(e / t); e > L * P >> 1; r += w) e = D(e / L);
                            return D(r + (L + 1) * e / (e + C))
                        }

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

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

                        function m(e) {
                            return s(e, function(e) {
                                return M.test(e) ? p(e.slice(4).toLowerCase()) : e
                            })
                        }

                        function g(e) {
                            return s(e, function(e) {
                                return R.test(e) ? "xn--" + f(e) : e
                            })
                        }
                        var b = "object" == typeof r && r && !r.nodeType && r,
                            _ = "object" == typeof n && n && !n.nodeType && n,
                            y = "object" == typeof t && t;
                        y.global !== y && y.window !== y && y.self !== y || (i = y);
                        var v, x, S = 2147483647,
                            w = 36,
                            T = 1,
                            P = 26,
                            C = 38,
                            k = 700,
                            O = 72,
                            E = 128,
                            A = "-",
                            M = /^xn--/,
                            R = /[^\x20-\x7E]/,
                            I = /[\x2E\u3002\uFF0E\uFF61]/g,
                            B = {
                                overflow: "Overflow: input needs wider integers to process",
                                "not-basic": "Illegal input >= 0x80 (not a basic code point)",
                                "invalid-input": "Invalid input"
                            },
                            L = w - T,
                            D = Math.floor,
                            F = String.fromCharCode;
                        if (v = {
                                version: "1.4.1",
                                ucs2: {
                                    decode: l,
                                    encode: u
                                },
                                decode: p,
                                encode: f,
                                toASCII: g,
                                toUnicode: m
                            }, "function" == typeof e && "object" == typeof e.amd && e.amd) e("punycode", function() {
                            return v
                        });
                        else if (b && _)
                            if (n.exports == b) _.exports = v;
                            else
                                for (x in v) v.hasOwnProperty(x) && (b[x] = v[x]);
                        else i.punycode = v
                    }(this)
                }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
            }, {}],
            26: [function(e, t, n) {
                function r(e, t) {
                    return Object.prototype.hasOwnProperty.call(e, t)
                }
                t.exports = function(e, t, n, o) {
                    t = t || "&", n = n || "=";
                    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 d, h, p, f, m = e[c].replace(s, "%20"),
                            g = m.indexOf(n);
                        g >= 0 ? (d = m.substr(0, g), h = m.substr(g + 1)) : (d = m, h = ""), p = decodeURIComponent(d), f = decodeURIComponent(h), r(a, p) ? i(a[p]) ? a[p].push(f) : a[p] = [a[p], f] : a[p] = f
                    }
                    return a
                };
                var i = Array.isArray || function(e) {
                    return "[object Array]" === Object.prototype.toString.call(e)
                }
            }, {}],
            27: [function(e, t, n) {
                function r(e, t) {
                    if (e.map) return e.map(t);
                    for (var n = [], r = 0; r < e.length; r++) n.push(t(e[r], r));
                    return n
                }
                var i = 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, n, s) {
                    return t = t || "&", n = n || "=", null === e && (e = void 0), "object" == typeof e ? r(a(e), function(a) {
                        var s = encodeURIComponent(i(a)) + n;
                        return o(e[a]) ? r(e[a], function(e) {
                            return s + encodeURIComponent(i(e))
                        }).join(t) : s + encodeURIComponent(i(e[a]))
                    }).join(t) : s ? encodeURIComponent(i(s)) + n + encodeURIComponent(i(e)) : ""
                };
                var o = Array.isArray || function(e) {
                        return "[object Array]" === Object.prototype.toString.call(e)
                    },
                    a = Object.keys || function(e) {
                        var t = [];
                        for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && t.push(n);
                        return t
                    }
            }, {}],
            28: [function(e, t, n) {
                "use strict";
                n.decode = n.parse = e("./decode"), n.encode = n.stringify = e("./encode")
            }, {
                "./decode": 26,
                "./encode": 27
            }],
            29: [function(e, t, n) {
                function r() {
                    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 i(e, t, n) {
                    if (e && u.isObject(e) && e instanceof r) return e;
                    var i = new r;
                    return i.parse(e, t, n), i
                }

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

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

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

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

                function i(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !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 = e("mini-signals"),
                    s = r(a),
                    l = e("parse-uri"),
                    u = r(l),
                    c = e("./async"),
                    d = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(c),
                    h = e("./Resource"),
                    p = r(h),
                    f = /(#[\w-]+)?$/,
                    m = function() {
                        function e() {
                            var t = this,
                                n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
                                r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10;
                            i(this, e), this.baseUrl = n, this.progress = 0, this.loading = !1, this.defaultQueryString = "", this._beforeMiddleware = [], this._afterMiddleware = [], this._resourcesParsing = [], this._boundLoadResource = function(e, n) {
                                return t._loadResource(e, n)
                            }, this._queue = d.queue(this._boundLoadResource, r), this._queue.pause(), this.resources = {}, this.onProgress = new s.default, this.onError = new s.default, this.onLoad = new s.default, this.onStart = new s.default, this.onComplete = new s.default
                        }
                        return e.prototype.add = function(e, t, n, r) {
                            if (Array.isArray(e)) {
                                for (var i = 0; i < e.length; ++i) this.add(e[i]);
                                return this
                            }
                            if ("object" === (void 0 === e ? "undefined" : o(e)) && (r = t || e.callback || e.onComplete, n = e, t = e.url, e = e.name || e.key || e.url), "string" != typeof t && (r = n, n = t, t = e), "string" != typeof t) throw new Error("No url passed to add resource to loader.");
                            if ("function" == typeof n && (r = n, n = null), this.loading && (!n || !n.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 p.default(e, t, n), "function" == typeof r && this.resources[e].onAfterMiddleware.once(r), this.loading) {
                                for (var a = n.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 d = 0; d < s.length; ++d) s[d].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;
                            for (var t = 100 / this._queue._tasks.length, n = 0; n < this._queue._tasks.length; ++n) this._queue._tasks[n].data.progressChunk = t;
                            return this.loading = !0, this.onStart.dispatch(this), this._queue.resume(), this
                        }, e.prototype._prepareUrl = function(e) {
                            var t = (0, u.default)(e, {
                                    strictMode: !0
                                }),
                                n = void 0;
                            if (n = 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 r = f.exec(n)[0];
                                n = n.substr(0, n.length - r.length), -1 !== n.indexOf("?") ? n += "&" + this.defaultQueryString : n += "?" + this.defaultQueryString, n += r
                            }
                            return n
                        }, e.prototype._loadResource = function(e, t) {
                            var n = this;
                            e._dequeue = t, d.eachSeries(this._beforeMiddleware, function(t, r) {
                                t.call(n, e, function() {
                                    r(e.isComplete ? {} : null)
                                })
                            }, function() {
                                e.isComplete ? n._onLoad(e) : (e._onLoadBinding = e.onComplete.once(n._onLoad, n), e.load())
                            }, !0)
                        }, e.prototype._onComplete = function() {
                            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(), d.eachSeries(this._afterMiddleware, function(n, r) {
                                n.call(t, e, r)
                            }, function() {
                                e.onAfterMiddleware.dispatch(e), 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.progress = 100, t._onComplete())
                            }, !0)
                        }, e
                    }();
                n.default = m
            }, {
                "./Resource": 33,
                "./async": 34,
                "mini-signals": 38,
                "parse-uri": 39
            }],
            33: [function(e, t, n) {
                "use strict";

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

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

                function o() {}

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

                function s(e) {
                    return e.toString().replace("object ", "")
                }
                n.__esModule = !0;
                var l = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    u = e("parse-uri"),
                    c = r(u),
                    d = e("mini-signals"),
                    h = r(d),
                    p = !(!window.XDomainRequest || "withCredentials" in new XMLHttpRequest),
                    f = null,
                    m = function() {
                        function e(t, n, r) {
                            if (i(this, e), "string" != typeof t || "string" != typeof n) throw new Error("Both name and url are required for constructing a resource.");
                            r = r || {}, this._flags = 0, this._setFlag(e.STATUS_FLAGS.DATA_URL, 0 === n.indexOf("data:")), this.name = t, this.url = n, this.extension = this._getExtension(), this.data = null, this.crossOrigin = !0 === r.crossOrigin ? "anonymous" : r.crossOrigin, this.loadType = r.loadType || this._determineLoadType(), this.xhrType = r.xhrType, this.metadata = r.metadata || {}, this.error = null, this.xhr = null, this.children = [], this.type = e.TYPE.UNKNOWN, this.progressChunk = 0, this._dequeue = o, this._onLoadBinding = null, this._boundComplete = this.complete.bind(this), this._boundOnError = this._onError.bind(this), this._boundOnProgress = this._onProgress.bind(this), this._boundXhrOnError = this._xhrOnError.bind(this), this._boundXhrOnAbort = this._xhrOnAbort.bind(this), this._boundXhrOnLoad = this._xhrOnLoad.bind(this), this._boundXdrOnTimeout = this._xdrOnTimeout.bind(this), this.onStart = new h.default, this.onProgress = new h.default, this.onComplete = new h.default, this.onAfterMiddleware = new h.default
                        }
                        return e.setExtensionLoadType = function(t, n) {
                            a(e._loadTypeMap, t, n)
                        }, e.setExtensionXhrType = function(t, n) {
                            a(e._xhrTypeMap, t, n)
                        }, e.prototype.complete = function() {
                            if (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("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)), 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.abort = function(t) {
                            if (!this.error) {
                                if (this.error = new Error(t), 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.complete()
                            }
                        }, e.prototype.load = function(t) {
                            var n = this;
                            if (!this.isLoading) {
                                if (this.isComplete) return void(t && setTimeout(function() {
                                    return t(n)
                                }, 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:
                                        p && this.crossOrigin ? this._loadXdr() : this._loadXhr()
                                }
                            }
                        }, e.prototype._hasFlag = function(e) {
                            return !!(this._flags & e)
                        }, e.prototype._setFlag = function(e, t) {
                            this._flags = t ? this._flags | e : this._flags & ~e
                        }, 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)
                        }, 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.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, n = 0; n < this.url.length; ++n) this.data.appendChild(this._createSource(e, this.url[n], Array.isArray(t) ? t[n] : t));
                            else {
                                var r = this.metadata.mimeType;
                                this.data.appendChild(this._createSource(e, this.url, Array.isArray(r) ? r[0] : r))
                            }
                            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()
                        }, e.prototype._loadXhr = function() {
                            "string" != typeof this.xhrType && (this.xhrType = this._determineXhrType());
                            var t = this.xhr = new XMLHttpRequest;
                            t.open("GET", this.url, !0), 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("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 = 5e3, e.onerror = this._boundXhrOnError, e.ontimeout = this._boundXdrOnTimeout, 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, n) {
                            n || (n = e + "/" + this._getExtension(t));
                            var r = document.createElement("source");
                            return r.src = t, r.type = n, r
                        }, 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._xhrOnError = function() {
                            var e = this.xhr;
                            this.abort(s(e) + " Request failed. Status: " + e.status + ', text: "' + e.statusText + '"')
                        }, e.prototype._xhrOnAbort = function() {
                            this.abort(s(this.xhr) + " Request was aborted by the user.")
                        }, e.prototype._xdrOnTimeout = function() {
                            this.abort(s(this.xhr) + " Request timed out.")
                        }, e.prototype._xhrOnLoad = function() {
                            var t = this.xhr,
                                n = "",
                                r = void 0 === t.status ? 200 : t.status;
                            if ("" !== t.responseType && "text" !== t.responseType && void 0 !== t.responseType || (n = t.responseText), 0 === r && n.length > 0 ? r = 200 : 1223 === r && (r = 204), 2 != (r / 100 | 0)) return void this.abort("[" + t.status + "] " + t.statusText + ": " + t.responseURL);
                            if (this.xhrType === e.XHR_RESPONSE_TYPE.TEXT) this.data = n, this.type = e.TYPE.TEXT;
                            else if (this.xhrType === e.XHR_RESPONSE_TYPE.JSON) try {
                                this.data = JSON.parse(n), 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 i = new DOMParser;
                                    this.data = i.parseFromString(n, "text/xml")
                                } else {
                                    var o = document.createElement("div");
                                    o.innerHTML = n, 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 || n;
                            this.complete()
                        }, e.prototype._determineCrossOrigin = function(e, t) {
                            if (0 === e.indexOf("data:")) return "";
                            t = t || window.location, f || (f = document.createElement("a")), f.href = e, e = (0, c.default)(f.href, {
                                strictMode: !0
                            });
                            var n = !e.port && "" === t.port || e.port === t.port,
                                r = e.protocol ? e.protocol + ":" : "";
                            return e.host === t.hostname && n && r === 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 n = e.indexOf("/");
                                t = e.substring(n + 1, e.indexOf(";", n))
                            } else {
                                var r = e.indexOf("?"),
                                    i = e.indexOf("#"),
                                    o = Math.min(r > -1 ? r : e.length, i > -1 ? i : 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
                    }();
                n.default = m, m.STATUS_FLAGS = {
                    NONE: 0,
                    DATA_URL: 1,
                    COMPLETE: 2,
                    LOADING: 4
                }, m.TYPE = {
                    UNKNOWN: 0,
                    JSON: 1,
                    XML: 2,
                    IMAGE: 3,
                    AUDIO: 4,
                    VIDEO: 5,
                    TEXT: 6
                }, m.LOAD_TYPE = {
                    XHR: 1,
                    IMAGE: 2,
                    AUDIO: 3,
                    VIDEO: 4
                }, m.XHR_RESPONSE_TYPE = {
                    DEFAULT: "text",
                    BUFFER: "arraybuffer",
                    BLOB: "blob",
                    DOCUMENT: "document",
                    JSON: "json",
                    TEXT: "text"
                }, m._loadTypeMap = {
                    gif: m.LOAD_TYPE.IMAGE,
                    png: m.LOAD_TYPE.IMAGE,
                    bmp: m.LOAD_TYPE.IMAGE,
                    jpg: m.LOAD_TYPE.IMAGE,
                    jpeg: m.LOAD_TYPE.IMAGE,
                    tif: m.LOAD_TYPE.IMAGE,
                    tiff: m.LOAD_TYPE.IMAGE,
                    webp: m.LOAD_TYPE.IMAGE,
                    tga: m.LOAD_TYPE.IMAGE,
                    svg: m.LOAD_TYPE.IMAGE,
                    "svg+xml": m.LOAD_TYPE.IMAGE,
                    mp3: m.LOAD_TYPE.AUDIO,
                    ogg: m.LOAD_TYPE.AUDIO,
                    wav: m.LOAD_TYPE.AUDIO,
                    mp4: m.LOAD_TYPE.VIDEO,
                    webm: m.LOAD_TYPE.VIDEO
                }, m._xhrTypeMap = {
                    xhtml: m.XHR_RESPONSE_TYPE.DOCUMENT,
                    html: m.XHR_RESPONSE_TYPE.DOCUMENT,
                    htm: m.XHR_RESPONSE_TYPE.DOCUMENT,
                    xml: m.XHR_RESPONSE_TYPE.DOCUMENT,
                    tmx: m.XHR_RESPONSE_TYPE.DOCUMENT,
                    svg: m.XHR_RESPONSE_TYPE.DOCUMENT,
                    tsx: m.XHR_RESPONSE_TYPE.DOCUMENT,
                    gif: m.XHR_RESPONSE_TYPE.BLOB,
                    png: m.XHR_RESPONSE_TYPE.BLOB,
                    bmp: m.XHR_RESPONSE_TYPE.BLOB,
                    jpg: m.XHR_RESPONSE_TYPE.BLOB,
                    jpeg: m.XHR_RESPONSE_TYPE.BLOB,
                    tif: m.XHR_RESPONSE_TYPE.BLOB,
                    tiff: m.XHR_RESPONSE_TYPE.BLOB,
                    webp: m.XHR_RESPONSE_TYPE.BLOB,
                    tga: m.XHR_RESPONSE_TYPE.BLOB,
                    json: m.XHR_RESPONSE_TYPE.JSON,
                    text: m.XHR_RESPONSE_TYPE.TEXT,
                    txt: m.XHR_RESPONSE_TYPE.TEXT,
                    ttf: m.XHR_RESPONSE_TYPE.BUFFER,
                    otf: m.XHR_RESPONSE_TYPE.BUFFER
                }, m.EMPTY_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
            }, {
                "mini-signals": 38,
                "parse-uri": 39
            }],
            34: [function(e, t, n) {
                "use strict";

                function r() {}

                function i(e, t, n, r) {
                    var i = 0,
                        o = e.length;
                    ! function a(s) {
                        if (s || i === o) return void(n && n(s));
                        r ? setTimeout(function() {
                            t(e[i++], a)
                        }, 1) : t(e[i++], 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 n(e, t, n) {
                        if (null != n && "function" != typeof n) 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 i = {
                            data: e,
                            callback: "function" == typeof n ? n : r
                        };
                        t ? s._tasks.unshift(i) : s._tasks.push(i), setTimeout(function() {
                            return s.process()
                        }, 1)
                    }

                    function i(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: r,
                            unsaturated: r,
                            buffer: t / 4,
                            empty: r,
                            drain: r,
                            error: r,
                            started: !1,
                            paused: !1,
                            push: function(e, t) {
                                n(e, !1, t)
                            },
                            kill: function() {
                                a = 0, s.drain = r, s.started = !1, s._tasks = []
                            },
                            unshift: function(e, t) {
                                n(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(i(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
                }
                n.__esModule = !0, n.eachSeries = i, n.queue = a
            }, {}],
            35: [function(e, t, n) {
                "use strict";

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

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

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

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

                function i(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(n, "__esModule", {
                    value: !0
                });
                var o = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    a = function() {
                        function e(t, n, i) {
                            void 0 === n && (n = !1), r(this, e), this._fn = t, this._once = n, this._thisArg = i, 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() {
                            r(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 n = []; t;) n.push(t), t = t._next;
                                return n
                            }
                        }, {
                            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 i(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 i(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, n.default = s, t.exports = n.default
            }, {}],
            39: [function(e, t, n) {
                "use strict";
                t.exports = function(e, t) {
                    t = t || {};
                    for (var n = {
                            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*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
                            }
                        }, r = n.parser[t.strictMode ? "strict" : "loose"].exec(e), i = {}, o = 14; o--;) i[n.key[o]] = r[o] || "";
                    return i[n.q.name] = {}, i[n.key[12]].replace(n.q.parser, function(e, t, r) {
                        t && (i[n.q.name][t] = r)
                    }), i
                }
            }, {}],
            40: [function(e, t, n) {
                "use strict";

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

                function i(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var o = e("../core"),
                    a = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(o),
                    s = e("ismobilejs"),
                    l = r(s),
                    u = e("./accessibleTarget"),
                    c = r(u);
                a.utils.mixins.delayMixin(a.DisplayObject.prototype, c.default);
                var d = 100,
                    h = 0,
                    p = 0,
                    f = 2,
                    m = function() {
                        function e(t) {
                            i(this, e), !l.default.tablet && !l.default.phone || navigator.isCocoonJS || this.createTouchHook();
                            var n = document.createElement("div");
                            n.style.width = d + "px", n.style.height = d + "px", n.style.position = "absolute", n.style.top = h + "px", n.style.left = p + "px", n.style.zIndex = f, this.div = n, 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), 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, n = t.length - 1; n >= 0; n--) this.updateAccessibleObjects(t[n])
                            }
                        }, 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,
                                    n = e.height / this.renderer.height,
                                    r = this.div;
                                r.style.left = e.left + "px", r.style.top = e.top + "px", r.style.width = this.renderer.width + "px", r.style.height = this.renderer.height + "px";
                                for (var i = 0; i < this.children.length; i++) {
                                    var o = this.children[i];
                                    if (o.renderId !== this.renderId) o._accessibleActive = !1, a.utils.removeItems(this.children, i, 1), this.div.removeChild(o._accessibleDiv), this.pool.push(o._accessibleDiv), o._accessibleDiv = null, i--, 0 === this.children.length && this.deactivate();
                                    else {
                                        r = o._accessibleDiv;
                                        var s = o.hitArea,
                                            l = o.worldTransform;
                                        o.hitArea ? (r.style.left = (l.tx + s.x * l.a) * t + "px", r.style.top = (l.ty + s.y * l.d) * n + "px", r.style.width = s.width * l.a * t + "px", r.style.height = s.height * l.d * n + "px") : (s = o.getBounds(), this.capHitArea(s), r.style.left = s.x * t + "px", r.style.top = s.y * n + "px", r.style.width = s.width * t + "px", r.style.height = s.height * n + "px")
                                    }
                                }
                                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 = d + "px", t.style.height = d + "px", t.style.backgroundColor = this.debug ? "rgba(255,0,0,0.5)" : "transparent", t.style.position = "absolute", t.style.zIndex = f, t.style.borderStyle = "none", t.addEventListener("click", this._onClick.bind(this)), t.addEventListener("focus", this._onFocus.bind(this)), t.addEventListener("focusout", this._onFocusOut.bind(this))), e.accessibleTitle ? t.title = e.accessibleTitle : e.accessibleTitle || e.accessibleHint || (t.title = "displayObject " + this.tabIndex), 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) {
                            var t = this.renderer.plugins.interaction;
                            t.dispatchEvent(e.target.displayObject, "mouseover", t.eventData)
                        }, e.prototype._onFocusOut = function(e) {
                            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() {
                            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), window.removeEventListener("keydown", this._onKeyDown), this.pool = null, this.children = null, this.renderer = null
                        }, e
                    }();
                n.default = m, a.WebGLRenderer.registerPlugin("accessibility", m), a.CanvasRenderer.registerPlugin("accessibility", m)
            }, {
                "../core": 65,
                "./accessibleTarget": 41,
                ismobilejs: 4
            }],
            41: [function(e, t, n) {
                "use strict";
                n.__esModule = !0, n.default = {
                    accessible: !1,
                    accessibleTitle: null,
                    accessibleHint: null,
                    tabIndex: 0,
                    _accessibleActive: !1,
                    _accessibleDiv: !1
                }
            }, {}],
            42: [function(e, t, n) {
                "use strict";

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

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

                function i(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var o = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    a = e("./autoDetectRenderer"),
                    s = e("./display/Container"),
                    l = r(s),
                    u = e("./ticker"),
                    c = e("./settings"),
                    d = r(c),
                    h = e("./const"),
                    p = function() {
                        function e(t, n, r, o, s) {
                            i(this, e), "number" == typeof t && (t = Object.assign({
                                width: t,
                                height: n || d.default.RENDER_OPTIONS.height,
                                forceCanvas: !!o,
                                sharedTicker: !!s
                            }, r)), 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) {
                            var t = this._ticker;
                            this.ticker = null, t.destroy(), this.stage.destroy(), 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, h.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
                    }();
                n.default = p
            }, {
                "./autoDetectRenderer": 45,
                "./const": 46,
                "./display/Container": 48,
                "./settings": 101,
                "./ticker": 121
            }],
            44: [function(e, t, n) {
                "use strict";

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

                function i(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 n = e.slice(0);
                            return n.unshift("precision " + t + " float;"), n
                        }
                    } else if ("precision" !== e.substring(0, 9)) return "precision " + t + " float;\n" + e;
                    return e
                }
                n.__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(n, o, s) {
                            return r(this, t), i(this, e.call(this, n, a(o, u.default.PRECISION_VERTEX), a(s, u.default.PRECISION_FRAGMENT)))
                        }
                        return o(t, e), t
                    }(s.GLShader);
                n.default = c
            }, {
                "./settings": 101,
                "pixi-gl-core": 12
            }],
            45: [function(e, t, n) {
                "use strict";

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

                function i(e, t, n, r) {
                    var i = e && e.forceCanvas;
                    return void 0 !== r && (i = r), !i && a.isWebGLSupported() ? new c.default(e, t, n) : new l.default(e, t, n)
                }
                n.__esModule = !0, n.autoDetectRenderer = i;
                var o = e("./utils"),
                    a = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(o),
                    s = e("./renderers/canvas/CanvasRenderer"),
                    l = r(s),
                    u = e("./renderers/webgl/WebGLRenderer"),
                    c = r(u)
            }, {
                "./renderers/canvas/CanvasRenderer": 77,
                "./renderers/webgl/WebGLRenderer": 84,
                "./utils": 125
            }],
            46: [function(e, t, n) {
                "use strict";
                n.__esModule = !0;
                n.VERSION = "4.6.2", n.PI_2 = 2 * Math.PI, n.RAD_TO_DEG = 180 / Math.PI, n.DEG_TO_RAD = Math.PI / 180, n.RENDERER_TYPE = {
                    UNKNOWN: 0,
                    WEBGL: 1,
                    CANVAS: 2
                }, n.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
                }, n.DRAW_MODES = {
                    POINTS: 0,
                    LINES: 1,
                    LINE_LOOP: 2,
                    LINE_STRIP: 3,
                    TRIANGLES: 4,
                    TRIANGLE_STRIP: 5,
                    TRIANGLE_FAN: 6
                }, n.SCALE_MODES = {
                    LINEAR: 0,
                    NEAREST: 1
                }, n.WRAP_MODES = {
                    CLAMP: 0,
                    REPEAT: 1,
                    MIRRORED_REPEAT: 2
                }, n.GC_MODES = {
                    AUTO: 0,
                    MANUAL: 1
                }, n.URL_FILE_EXTENSION = /\.(\w{3,4})(?:$|\?|#)/i, n.DATA_URI = /^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;(charset=[\w-]+|base64))?,(.*)/i, n.SVG_SIZE = /<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i, n.SHAPES = {
                    POLY: 0,
                    RECT: 1,
                    CIRC: 2,
                    ELIP: 3,
                    RREC: 4
                }, n.PRECISION = {
                    LOW: "lowp",
                    MEDIUM: "mediump",
                    HIGH: "highp"
                }, n.TRANSFORM_MODE = {
                    STATIC: 0,
                    DYNAMIC: 1
                }, n.TEXT_GRADIENT = {
                    LINEAR_VERTICAL: 0,
                    LINEAR_HORIZONTAL: 1
                }, n.UPDATE_PRIORITY = {
                    INTERACTION: 50,
                    HIGH: 25,
                    NORMAL: 0,
                    LOW: -25,
                    UTILITY: -50
                }
            }, {}],
            47: [function(e, t, n) {
                "use strict";

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

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../utils"),
                    l = e("./DisplayObject"),
                    u = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(l),
                    c = function(e) {
                        function t() {
                            r(this, t);
                            var n = i(this, e.call(this));
                            return n.children = [], n
                        }
                        return o(t, e), t.prototype.onChildrenChange = function() {}, t.prototype.addChild = function(e) {
                            var t = arguments.length;
                            if (t > 1)
                                for (var n = 0; n < t; n++) this.addChild(arguments[n]);
                            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 n = this.getChildIndex(e),
                                    r = this.getChildIndex(t);
                                this.children[n] = t, this.children[r] = e, this.onChildrenChange(n < r ? n : r)
                            }
                        }, 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 supplied index is out of bounds");
                            var n = this.getChildIndex(e);
                            (0, s.removeItems)(this.children, n, 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 n = 0; n < t; n++) this.removeChild(arguments[n]);
                            else {
                                var r = this.children.indexOf(e);
                                if (-1 === r) return null;
                                e.parent = null, e.transform._parentID = -1, (0, s.removeItems)(this.children, r, 1), this._boundsID++, this.onChildrenChange(r), 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],
                                n = e,
                                r = "number" == typeof t ? t : this.children.length,
                                i = r - n,
                                o = void 0;
                            if (i > 0 && i <= r) {
                                o = this.children.splice(n, i);
                                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 === i && 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 n = this.children[e];
                                n.visible && n.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, n = this.children.length; t < n; ++t) this.children[t].renderWebGL(e)
                                }
                        }, t.prototype.renderAdvancedWebGL = function(e) {
                            e.flush();
                            var t = this._filters,
                                n = this._mask;
                            if (t) {
                                this._enabledFilters || (this._enabledFilters = []), this._enabledFilters.length = 0;
                                for (var r = 0; r < t.length; r++) t[r].enabled && this._enabledFilters.push(t[r]);
                                this._enabledFilters.length && e.filterManager.pushFilter(this, this._enabledFilters)
                            }
                            n && e.maskManager.pushMask(this, this._mask), this._renderWebGL(e);
                            for (var i = 0, o = this.children.length; i < o; i++) this.children[i].renderWebGL(e);
                            e.flush(), n && 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, n = this.children.length; t < n; ++t) this.children[t].renderCanvas(e);
                                this._mask && e.maskManager.popMask(e)
                            }
                        }, t.prototype.destroy = function(t) {
                            e.prototype.destroy.call(this);
                            var n = "boolean" == typeof t ? t : t && t.children,
                                r = this.removeChildren(0, this.children.length);
                            if (n)
                                for (var i = 0; i < r.length; ++i) r[i].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);
                n.default = c, c.prototype.containerUpdateTransform = c.prototype.updateTransform
            }, {
                "../utils": 125,
                "./DisplayObject": 49
            }],
            49: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("eventemitter3"),
                    u = r(l),
                    c = e("../const"),
                    d = e("../settings"),
                    h = r(d),
                    p = e("./TransformStatic"),
                    f = r(p),
                    m = e("./Transform"),
                    g = r(m),
                    b = e("./Bounds"),
                    _ = r(b),
                    y = e("../math"),
                    v = function(e) {
                        function t() {
                            i(this, t);
                            var n = o(this, e.call(this)),
                                r = h.default.TRANSFORM_MODE === c.TRANSFORM_MODE.STATIC ? f.default : g.default;
                            return n.tempDisplayObjectParent = null, n.transform = new r, n.alpha = 1, n.visible = !0, n.renderable = !0, n.parent = null, n.worldAlpha = 1, n.filterArea = null, n._filters = null, n._enabledFilters = null, n._bounds = new _.default, n._boundsID = 0, n._lastBoundsID = -1, n._boundsRect = null, n._localBoundsRect = null, n._mask = null, n._destroyed = !1, n
                        }
                        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,
                                n = this.parent;
                            this.parent = null, this.transform = this._tempDisplayObjectParent.transform, e || (this._localBoundsRect || (this._localBoundsRect = new y.Rectangle), e = this._localBoundsRect);
                            var r = this.getBounds(!1, e);
                            return this.parent = n, this.transform = t, r
                        }, 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, n, r) {
                            return t && (e = t.toGlobal(e, n, r)), r || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.applyInverse(e, n)
                        }, 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,
                                n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
                                r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1,
                                i = 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 = n || 1, this.scale.y = r || 1, this.rotation = i, 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 = e, this._mask && (this._mask.renderable = !1)
                            }
                        }, {
                            key: "filters",
                            get: function() {
                                return this._filters && this._filters.slice()
                            },
                            set: function(e) {
                                this._filters = e && e.slice()
                            }
                        }]), t
                    }(u.default);
                n.default = v, v.prototype.displayObjectUpdateTransform = v.prototype.updateTransform
            }, {
                "../const": 46,
                "../math": 70,
                "../settings": 101,
                "./Bounds": 47,
                "./Transform": 50,
                "./TransformStatic": 52,
                eventemitter3: 3
            }],
            50: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../math"),
                    l = e("./TransformBase"),
                    u = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(l),
                    c = function(e) {
                        function t() {
                            r(this, t);
                            var n = i(this, e.call(this));
                            return n.position = new s.Point(0, 0), n.scale = new s.Point(1, 1), n.skew = new s.ObservablePoint(n.updateSkew, n, 0, 0), n.pivot = new s.Point(0, 0), n._rotation = 0, n._cx = 1, n._sx = 0, n._cy = 0, n._sy = 1, n
                        }
                        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 n = e.worldTransform,
                                r = this.worldTransform;
                            r.a = t.a * n.a + t.b * n.c, r.b = t.a * n.b + t.b * n.d, r.c = t.c * n.a + t.d * n.c, r.d = t.c * n.b + t.d * n.d, r.tx = t.tx * n.a + t.ty * n.c + n.tx, r.ty = t.tx * n.b + t.ty * n.d + n.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);
                n.default = c
            }, {
                "../math": 70,
                "./TransformBase": 51
            }],
            51: [function(e, t, n) {
                "use strict";

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

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../math"),
                    l = e("./TransformBase"),
                    u = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(l),
                    c = function(e) {
                        function t() {
                            r(this, t);
                            var n = i(this, e.call(this));
                            return n.position = new s.ObservablePoint(n.onChange, n, 0, 0), n.scale = new s.ObservablePoint(n.onChange, n, 1, 1), n.pivot = new s.ObservablePoint(n.onChange, n, 0, 0), n.skew = new s.ObservablePoint(n.updateSkew, n, 0, 0), n._rotation = 0, n._cx = 1, n._sx = 0, n._cy = 0, n._sy = 1, n._localID = 0, n._currentLocalID = 0, n
                        }
                        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 n = e.worldTransform,
                                    r = this.worldTransform;
                                r.a = t.a * n.a + t.b * n.c, r.b = t.a * n.b + t.b * n.d, r.c = t.c * n.a + t.d * n.c, r.d = t.c * n.b + t.d * n.d, r.tx = t.tx * n.a + t.ty * n.c + n.tx, r.ty = t.tx * n.b + t.ty * n.d + n.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.updateSkew()
                            }
                        }]), t
                    }(u.default);
                n.default = c
            }, {
                "../math": 70,
                "./TransformBase": 51
            }],
            53: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../display/Container"),
                    l = r(s),
                    u = e("../textures/RenderTexture"),
                    c = r(u),
                    d = e("../textures/Texture"),
                    h = r(d),
                    p = e("./GraphicsData"),
                    f = r(p),
                    m = e("../sprites/Sprite"),
                    g = r(m),
                    b = e("../math"),
                    _ = e("../utils"),
                    y = e("../const"),
                    v = e("../display/Bounds"),
                    x = r(v),
                    S = e("./utils/bezierCurveTo"),
                    w = r(S),
                    T = e("../renderers/canvas/CanvasRenderer"),
                    P = r(T),
                    C = void 0,
                    k = new b.Matrix,
                    O = new b.Point,
                    E = new Float32Array(4),
                    A = new Float32Array(4),
                    M = function(e) {
                        function t() {
                            var n = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            i(this, t);
                            var r = o(this, e.call(this));
                            return r.fillAlpha = 1, r.lineWidth = 0, r.nativeLines = n, r.lineColor = 0, r.graphicsData = [], r.tint = 16777215, r._prevTint = 16777215, r.blendMode = y.BLEND_MODES.NORMAL, r.currentPath = null, r._webGL = {}, r.isMask = !1, r.boundsPadding = 0, r._localBounds = new x.default, r.dirty = 0, r.fastRectDirty = -1, r.clearDirty = 0, r.boundsDirty = -1, r.cachedSpriteDirty = !1, r._spriteRect = null, r._fastRect = !1, r
                        }
                        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.tint = this.tint, e.blendMode = this.blendMode, e.isMask = this.isMask, e.boundsPadding = this.boundsPadding, e.dirty = 0, e.cachedSpriteDirty = this.cachedSpriteDirty;
                            for (var n = 0; n < this.graphicsData.length; ++n) e.graphicsData.push(this.graphicsData[n].clone());
                            return e.currentPath = e.graphicsData[e.graphicsData.length - 1], e.updateLocalBounds(), e
                        }, 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,
                                n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                            if (this.lineWidth = e, this.lineColor = t, this.lineAlpha = n, this.currentPath)
                                if (this.currentPath.shape.points.length) {
                                    var r = new b.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;
                            return this
                        }, t.prototype.moveTo = function(e, t) {
                            var n = new b.Polygon([e, t]);
                            return n.closed = !1, this.drawShape(n), this
                        }, t.prototype.lineTo = function(e, t) {
                            return this.currentPath.shape.points.push(e, t), this.dirty++, this
                        }, t.prototype.quadraticCurveTo = function(e, t, n, r) {
                            this.currentPath ? 0 === this.currentPath.shape.points.length && (this.currentPath.shape.points = [0, 0]) : this.moveTo(0, 0);
                            var i = this.currentPath.shape.points,
                                o = 0,
                                a = 0;
                            0 === i.length && this.moveTo(0, 0);
                            for (var s = i[i.length - 2], l = i[i.length - 1], u = 1; u <= 20; ++u) {
                                var c = u / 20;
                                o = s + (e - s) * c, a = l + (t - l) * c, i.push(o + (e + (n - e) * c - o) * c, a + (t + (r - t) * c - a) * c)
                            }
                            return this.dirty++, this
                        }, t.prototype.bezierCurveTo = function(e, t, n, r, i, o) {
                            this.currentPath ? 0 === this.currentPath.shape.points.length && (this.currentPath.shape.points = [0, 0]) : this.moveTo(0, 0);
                            var a = this.currentPath.shape.points,
                                s = a[a.length - 2],
                                l = a[a.length - 1];
                            return a.length -= 2, (0, w.default)(s, l, e, t, n, r, i, o, a), this.dirty++, this
                        }, t.prototype.arcTo = function(e, t, n, r, i) {
                            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 = r - t,
                                d = n - e,
                                h = Math.abs(l * d - u * c);
                            if (h < 1e-8 || 0 === i) o[o.length - 2] === e && o[o.length - 1] === t || o.push(e, t);
                            else {
                                var p = l * l + u * u,
                                    f = c * c + d * d,
                                    m = l * c + u * d,
                                    g = i * Math.sqrt(p) / h,
                                    b = i * Math.sqrt(f) / h,
                                    _ = g * m / p,
                                    y = b * m / f,
                                    v = g * d + b * u,
                                    x = g * c + b * l,
                                    S = u * (b + _),
                                    w = l * (b + _),
                                    T = d * (g + y),
                                    P = c * (g + y),
                                    C = Math.atan2(w - x, S - v),
                                    k = Math.atan2(P - x, T - v);
                                this.arc(v + e, x + t, i, C, k, u * c > d * l)
                            }
                            return this.dirty++, this
                        }, t.prototype.arc = function(e, t, n, r, i) {
                            var o = arguments.length > 5 && void 0 !== arguments[5] && arguments[5];
                            if (r === i) return this;
                            !o && i <= r ? i += 2 * Math.PI : o && r <= i && (r += 2 * Math.PI);
                            var a = i - r,
                                s = 40 * Math.ceil(Math.abs(a) / (2 * Math.PI));
                            if (0 === a) return this;
                            var l = e + Math.cos(r) * n,
                                u = t + Math.sin(r) * n,
                                c = this.currentPath ? this.currentPath.shape.points : null;
                            c ? c[c.length - 2] === l && c[c.length - 1] === u || c.push(l, u) : (this.moveTo(l, u), c = this.currentPath.shape.points);
                            for (var d = a / (2 * s), h = 2 * d, p = Math.cos(d), f = Math.sin(d), m = s - 1, g = m % 1 / m, b = 0; b <= m; ++b) {
                                var _ = b + g * b,
                                    y = d + r + h * _,
                                    v = Math.cos(y),
                                    x = -Math.sin(y);
                                c.push((p * v + f * x) * n + e, (p * -x + f * v) * n + t)
                            }
                            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, n, r) {
                            return this.drawShape(new b.Rectangle(e, t, n, r)), this
                        }, t.prototype.drawRoundedRect = function(e, t, n, r, i) {
                            return this.drawShape(new b.RoundedRectangle(e, t, n, r, i)), this
                        }, t.prototype.drawCircle = function(e, t, n) {
                            return this.drawShape(new b.Circle(e, t, n)), this
                        }, t.prototype.drawEllipse = function(e, t, n, r) {
                            return this.drawShape(new b.Ellipse(e, t, n, r)), this
                        }, t.prototype.drawPolygon = function(e) {
                            var t = e,
                                n = !0;
                            if (t instanceof b.Polygon && (n = t.closed, t = t.points), !Array.isArray(t)) {
                                t = new Array(arguments.length);
                                for (var r = 0; r < t.length; ++r) t[r] = arguments[r]
                            }
                            var i = new b.Polygon(t);
                            return i.closed = n, this.drawShape(i), this
                        }, t.prototype.clear = function() {
                            return (this.lineWidth || this.filling || this.graphicsData.length > 0) && (this.lineWidth = 0, this.filling = !1, this.boundsDirty = -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 g.default(new h.default(h.default.WHITE)));
                            var n = this._spriteRect;
                            if (16777215 === this.tint) n.tint = this.graphicsData[0].fillColor;
                            else {
                                var r = E,
                                    i = A;
                                (0, _.hex2rgb)(this.graphicsData[0].fillColor, r), (0, _.hex2rgb)(this.tint, i), r[0] *= i[0], r[1] *= i[1], r[2] *= i[2], n.tint = (0, _.rgb2hex)(r)
                            }
                            n.alpha = this.graphicsData[0].fillAlpha, n.worldAlpha = this.worldAlpha * n.alpha, n.blendMode = this.blendMode, n._texture._frame.width = t.width, n._texture._frame.height = t.height, n.transform.worldTransform = this.transform.worldTransform, n.anchor.set(-t.x / t.width, -t.y / t.height), n._onAnchorUpdate(), n._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, n = 0; n < t.length; ++n) {
                                var r = t[n];
                                if (r.fill && (r.shape && r.shape.contains(O.x, O.y))) {
                                    if (r.holes)
                                        for (var i = 0; i < r.holes.length; i++) {
                                            var o = r.holes[i];
                                            if (o.contains(O.x, O.y)) return !1
                                        }
                                    return !0
                                }
                            }
                            return !1
                        }, t.prototype.updateLocalBounds = function() {
                            var e = 1 / 0,
                                t = -1 / 0,
                                n = 1 / 0,
                                r = -1 / 0;
                            if (this.graphicsData.length)
                                for (var i = 0, o = 0, a = 0, s = 0, l = 0, u = 0; u < this.graphicsData.length; u++) {
                                    var c = this.graphicsData[u],
                                        d = c.type,
                                        h = c.lineWidth;
                                    if (i = c.shape, d === y.SHAPES.RECT || d === y.SHAPES.RREC) o = i.x - h / 2, a = i.y - h / 2, s = i.width + h, l = i.height + h, e = o < e ? o : e, t = o + s > t ? o + s : t, n = a < n ? a : n, r = a + l > r ? a + l : r;
                                    else if (d === y.SHAPES.CIRC) o = i.x, a = i.y, s = i.radius + h / 2, l = i.radius + h / 2, e = o - s < e ? o - s : e, t = o + s > t ? o + s : t, n = a - l < n ? a - l : n, r = a + l > r ? a + l : r;
                                    else if (d === y.SHAPES.ELIP) o = i.x, a = i.y, s = i.width + h / 2, l = i.height + h / 2, e = o - s < e ? o - s : e, t = o + s > t ? o + s : t, n = a - l < n ? a - l : n, r = a + l > r ? a + l : r;
                                    else
                                        for (var p = i.points, f = 0, m = 0, g = 0, b = 0, _ = 0, v = 0, x = 0, S = 0, w = 0; w + 2 < p.length; w += 2) o = p[w], a = p[w + 1], f = p[w + 2], m = p[w + 3], g = Math.abs(f - o), b = Math.abs(m - a), l = h, (s = Math.sqrt(g * g + b * b)) < 1e-9 || (_ = (l / s * b + g) / 2, v = (l / s * g + b) / 2, x = (f + o) / 2, S = (m + a) / 2, e = x - _ < e ? x - _ : e, t = x + _ > t ? x + _ : t, n = S - v < n ? S - v : n, r = S + v > r ? S + v : r)
                                } else e = 0, t = 0, n = 0, r = 0;
                            var T = this.boundsPadding;
                            this._localBounds.minX = e - T, this._localBounds.maxX = t + T, this._localBounds.minY = n - T, this._localBounds.maxY = r + T
                        }, t.prototype.drawShape = function(e) {
                            this.currentPath && this.currentPath.shape.points.length <= 2 && this.graphicsData.pop(), this.currentPath = null;
                            var t = new f.default(this.lineWidth, this.lineColor, this.lineAlpha, this.fillColor, this.fillAlpha, this.filling, this.nativeLines, e);
                            return this.graphicsData.push(t), t.type === y.SHAPES.POLY && (t.shape.closed = t.shape.closed || this.filling, this.currentPath = t), this.dirty++, t
                        }, t.prototype.generateCanvasTexture = function(e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
                                n = this.getLocalBounds(),
                                r = c.default.create(n.width, n.height, e, t);
                            C || (C = new P.default), this.transform.updateLocalTransform(), this.transform.localTransform.copy(k), k.invert(), k.tx -= n.x, k.ty -= n.y, C.render(this, r, !0, k);
                            var i = h.default.fromCanvas(r.baseTexture._canvasRenderTarget.canvas, e, "graphics");
                            return i.baseTexture.resolution = t, i.baseTexture.update(), i
                        }, 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 n = 0; n < this.graphicsData.length; ++n) this.graphicsData[n].destroy();
                            for (var r in this._webgl)
                                for (var i = 0; i < this._webgl[r].data.length; ++i) this._webgl[r].data[i].destroy();
                            this._spriteRect && this._spriteRect.destroy(), this.graphicsData = null, this.currentPath = null, this._webgl = null, this._localBounds = null
                        }, t
                    }(l.default);
                n.default = M, M._SPRITE_TEXTURE = null
            }, {
                "../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, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e(t, n, i, o, a, s, l, u) {
                        r(this, e), this.lineWidth = t, this.nativeLines = l, this.lineColor = n, this.lineAlpha = i, this._lineTint = n, 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)
                    }, e.prototype.addHole = function(e) {
                        this.holes.push(e)
                    }, e.prototype.destroy = function() {
                        this.shape = null, this.holes = null
                    }, e
                }();
                n.default = i
            }, {}],
            55: [function(e, t, n) {
                "use strict";

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

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

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../../utils"),
                    l = e("../../const"),
                    u = e("../../renderers/webgl/utils/ObjectRenderer"),
                    c = r(u),
                    d = e("../../renderers/webgl/WebGLRenderer"),
                    h = r(d),
                    p = e("./WebGLGraphicsData"),
                    f = r(p),
                    m = e("./shaders/PrimitiveShader"),
                    g = r(m),
                    b = e("./utils/buildPoly"),
                    _ = r(b),
                    y = e("./utils/buildRectangle"),
                    v = r(y),
                    x = e("./utils/buildRoundedRectangle"),
                    S = r(x),
                    w = e("./utils/buildCircle"),
                    T = r(w),
                    P = function(e) {
                        function t(n) {
                            i(this, t);
                            var r = o(this, e.call(this, n));
                            return r.graphicsDataPool = [], r.primitiveShader = null, r.gl = n.gl, r.CONTEXT_UID = 0, r
                        }
                        return a(t, e), t.prototype.onContextChange = function() {
                            this.gl = this.renderer.gl, this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.primitiveShader = new g.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,
                                n = t.gl,
                                r = void 0,
                                i = e._webGL[this.CONTEXT_UID];
                            i && e.dirty === i.dirty || (this.updateGraphics(e), i = e._webGL[this.CONTEXT_UID]);
                            var o = this.primitiveShader;
                            t.bindShader(o), t.state.setBlendMode(e.blendMode);
                            for (var a = 0, l = i.data.length; a < l; a++) {
                                r = i.data[a];
                                var u = r.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(r.vao), r.nativeLines ? n.drawArrays(n.LINES, 0, r.points.length / 6) : r.vao.draw(n.TRIANGLE_STRIP, r.indices.length)
                            }
                        }, t.prototype.updateGraphics = function(e) {
                            var t = this.renderer.gl,
                                n = e._webGL[this.CONTEXT_UID];
                            if (n || (n = e._webGL[this.CONTEXT_UID] = {
                                    lastIndex: 0,
                                    data: [],
                                    gl: t,
                                    clearDirty: -1,
                                    dirty: -1
                                }), n.dirty = e.dirty, e.clearDirty !== n.clearDirty) {
                                n.clearDirty = e.clearDirty;
                                for (var r = 0; r < n.data.length; r++) this.graphicsDataPool.push(n.data[r]);
                                n.data.length = 0, n.lastIndex = 0
                            }
                            for (var i = void 0, o = void 0, a = n.lastIndex; a < e.graphicsData.length; a++) {
                                var s = e.graphicsData[a];
                                i = this.getWebGLData(n, 0), s.nativeLines && s.lineWidth && (o = this.getWebGLData(n, 0, !0), n.lastIndex++), s.type === l.SHAPES.POLY && (0, _.default)(s, i, o), s.type === l.SHAPES.RECT ? (0, v.default)(s, i, o) : s.type === l.SHAPES.CIRC || s.type === l.SHAPES.ELIP ? (0, T.default)(s, i, o) : s.type === l.SHAPES.RREC && (0, S.default)(s, i, o), n.lastIndex++
                            }
                            this.renderer.bindVao(null);
                            for (var u = 0; u < n.data.length; u++) i = n.data[u], i.dirty && i.upload()
                        }, t.prototype.getWebGLData = function(e, t, n) {
                            var r = e.data[e.data.length - 1];
                            return (!r || r.nativeLines !== n || r.points.length > 32e4) && (r = this.graphicsDataPool.pop() || new f.default(this.renderer.gl, this.primitiveShader, this.renderer.state.attribsState), r.nativeLines = n, r.reset(t), e.data.push(r)), r.dirty = !0, r
                        }, t
                    }(c.default);
                n.default = P, h.default.registerPlugin("graphics", P)
            }, {
                "../../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, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = e("pixi-gl-core"),
                    o = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(i),
                    a = function() {
                        function e(t, n, i) {
                            r(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 = n, this.vao = new o.default.VertexArrayObject(t, i).addIndex(this.indexBuffer).addAttribute(this.buffer, n.attributes.aVertexPosition, t.FLOAT, !1, 24, 0).addAttribute(this.buffer, n.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
                    }();
                n.default = a
            }, {
                "pixi-gl-core": 12
            }],
            59: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("../../../Shader"),
                    s = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(a),
                    l = function(e) {
                        function t(n) {
                            return r(this, t), i(this, e.call(this, n, ["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);
                n.default = l
            }, {
                "../../../Shader": 44
            }],
            60: [function(e, t, n) {
                "use strict";

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

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

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

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

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

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

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

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

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

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

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

                function i(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                n.__esModule = !0, n.autoDetectRenderer = n.Application = n.Filter = n.SpriteMaskFilter = n.Quad = n.RenderTarget = n.ObjectRenderer = n.WebGLManager = n.Shader = n.CanvasRenderTarget = n.TextureUvs = n.VideoBaseTexture = n.BaseRenderTexture = n.RenderTexture = n.BaseTexture = n.TextureMatrix = n.Texture = n.Spritesheet = n.CanvasGraphicsRenderer = n.GraphicsRenderer = n.GraphicsData = n.Graphics = n.TextMetrics = n.TextStyle = n.Text = n.SpriteRenderer = n.CanvasTinter = n.CanvasSpriteRenderer = n.Sprite = n.TransformBase = n.TransformStatic = n.Transform = n.Container = n.DisplayObject = n.Bounds = n.glCore = n.WebGLRenderer = n.CanvasRenderer = n.ticker = n.utils = n.settings = void 0;
                var o = e("./const");
                Object.keys(o).forEach(function(e) {
                    "default" !== e && "__esModule" !== e && Object.defineProperty(n, e, {
                        enumerable: !0,
                        get: function() {
                            return o[e]
                        }
                    })
                });
                var a = e("./math");
                Object.keys(a).forEach(function(e) {
                    "default" !== e && "__esModule" !== e && Object.defineProperty(n, e, {
                        enumerable: !0,
                        get: function() {
                            return a[e]
                        }
                    })
                });
                var s = e("pixi-gl-core");
                Object.defineProperty(n, "glCore", {
                    enumerable: !0,
                    get: function() {
                        return i(s).default
                    }
                });
                var l = e("./display/Bounds");
                Object.defineProperty(n, "Bounds", {
                    enumerable: !0,
                    get: function() {
                        return i(l).default
                    }
                });
                var u = e("./display/DisplayObject");
                Object.defineProperty(n, "DisplayObject", {
                    enumerable: !0,
                    get: function() {
                        return i(u).default
                    }
                });
                var c = e("./display/Container");
                Object.defineProperty(n, "Container", {
                    enumerable: !0,
                    get: function() {
                        return i(c).default
                    }
                });
                var d = e("./display/Transform");
                Object.defineProperty(n, "Transform", {
                    enumerable: !0,
                    get: function() {
                        return i(d).default
                    }
                });
                var h = e("./display/TransformStatic");
                Object.defineProperty(n, "TransformStatic", {
                    enumerable: !0,
                    get: function() {
                        return i(h).default
                    }
                });
                var p = e("./display/TransformBase");
                Object.defineProperty(n, "TransformBase", {
                    enumerable: !0,
                    get: function() {
                        return i(p).default
                    }
                });
                var f = e("./sprites/Sprite");
                Object.defineProperty(n, "Sprite", {
                    enumerable: !0,
                    get: function() {
                        return i(f).default
                    }
                });
                var m = e("./sprites/canvas/CanvasSpriteRenderer");
                Object.defineProperty(n, "CanvasSpriteRenderer", {
                    enumerable: !0,
                    get: function() {
                        return i(m).default
                    }
                });
                var g = e("./sprites/canvas/CanvasTinter");
                Object.defineProperty(n, "CanvasTinter", {
                    enumerable: !0,
                    get: function() {
                        return i(g).default
                    }
                });
                var b = e("./sprites/webgl/SpriteRenderer");
                Object.defineProperty(n, "SpriteRenderer", {
                    enumerable: !0,
                    get: function() {
                        return i(b).default
                    }
                });
                var _ = e("./text/Text");
                Object.defineProperty(n, "Text", {
                    enumerable: !0,
                    get: function() {
                        return i(_).default
                    }
                });
                var y = e("./text/TextStyle");
                Object.defineProperty(n, "TextStyle", {
                    enumerable: !0,
                    get: function() {
                        return i(y).default
                    }
                });
                var v = e("./text/TextMetrics");
                Object.defineProperty(n, "TextMetrics", {
                    enumerable: !0,
                    get: function() {
                        return i(v).default
                    }
                });
                var x = e("./graphics/Graphics");
                Object.defineProperty(n, "Graphics", {
                    enumerable: !0,
                    get: function() {
                        return i(x).default
                    }
                });
                var S = e("./graphics/GraphicsData");
                Object.defineProperty(n, "GraphicsData", {
                    enumerable: !0,
                    get: function() {
                        return i(S).default
                    }
                });
                var w = e("./graphics/webgl/GraphicsRenderer");
                Object.defineProperty(n, "GraphicsRenderer", {
                    enumerable: !0,
                    get: function() {
                        return i(w).default
                    }
                });
                var T = e("./graphics/canvas/CanvasGraphicsRenderer");
                Object.defineProperty(n, "CanvasGraphicsRenderer", {
                    enumerable: !0,
                    get: function() {
                        return i(T).default
                    }
                });
                var P = e("./textures/Spritesheet");
                Object.defineProperty(n, "Spritesheet", {
                    enumerable: !0,
                    get: function() {
                        return i(P).default
                    }
                });
                var C = e("./textures/Texture");
                Object.defineProperty(n, "Texture", {
                    enumerable: !0,
                    get: function() {
                        return i(C).default
                    }
                });
                var k = e("./textures/TextureMatrix");
                Object.defineProperty(n, "TextureMatrix", {
                    enumerable: !0,
                    get: function() {
                        return i(k).default
                    }
                });
                var O = e("./textures/BaseTexture");
                Object.defineProperty(n, "BaseTexture", {
                    enumerable: !0,
                    get: function() {
                        return i(O).default
                    }
                });
                var E = e("./textures/RenderTexture");
                Object.defineProperty(n, "RenderTexture", {
                    enumerable: !0,
                    get: function() {
                        return i(E).default
                    }
                });
                var A = e("./textures/BaseRenderTexture");
                Object.defineProperty(n, "BaseRenderTexture", {
                    enumerable: !0,
                    get: function() {
                        return i(A).default
                    }
                });
                var M = e("./textures/VideoBaseTexture");
                Object.defineProperty(n, "VideoBaseTexture", {
                    enumerable: !0,
                    get: function() {
                        return i(M).default
                    }
                });
                var R = e("./textures/TextureUvs");
                Object.defineProperty(n, "TextureUvs", {
                    enumerable: !0,
                    get: function() {
                        return i(R).default
                    }
                });
                var I = e("./renderers/canvas/utils/CanvasRenderTarget");
                Object.defineProperty(n, "CanvasRenderTarget", {
                    enumerable: !0,
                    get: function() {
                        return i(I).default
                    }
                });
                var B = e("./Shader");
                Object.defineProperty(n, "Shader", {
                    enumerable: !0,
                    get: function() {
                        return i(B).default
                    }
                });
                var L = e("./renderers/webgl/managers/WebGLManager");
                Object.defineProperty(n, "WebGLManager", {
                    enumerable: !0,
                    get: function() {
                        return i(L).default
                    }
                });
                var D = e("./renderers/webgl/utils/ObjectRenderer");
                Object.defineProperty(n, "ObjectRenderer", {
                    enumerable: !0,
                    get: function() {
                        return i(D).default
                    }
                });
                var F = e("./renderers/webgl/utils/RenderTarget");
                Object.defineProperty(n, "RenderTarget", {
                    enumerable: !0,
                    get: function() {
                        return i(F).default
                    }
                });
                var N = e("./renderers/webgl/utils/Quad");
                Object.defineProperty(n, "Quad", {
                    enumerable: !0,
                    get: function() {
                        return i(N).default
                    }
                });
                var G = e("./renderers/webgl/filters/spriteMask/SpriteMaskFilter");
                Object.defineProperty(n, "SpriteMaskFilter", {
                    enumerable: !0,
                    get: function() {
                        return i(G).default
                    }
                });
                var j = e("./renderers/webgl/filters/Filter");
                Object.defineProperty(n, "Filter", {
                    enumerable: !0,
                    get: function() {
                        return i(j).default
                    }
                });
                var U = e("./Application");
                Object.defineProperty(n, "Application", {
                    enumerable: !0,
                    get: function() {
                        return i(U).default
                    }
                });
                var W = e("./autoDetectRenderer");
                Object.defineProperty(n, "autoDetectRenderer", {
                    enumerable: !0,
                    get: function() {
                        return W.autoDetectRenderer
                    }
                });
                var H = e("./utils"),
                    z = r(H),
                    V = e("./ticker"),
                    X = r(V),
                    J = e("./settings"),
                    Y = i(J),
                    q = e("./renderers/canvas/CanvasRenderer"),
                    $ = i(q),
                    K = e("./renderers/webgl/WebGLRenderer"),
                    Q = i(K);
                n.settings = Y.default, n.utils = z, n.ticker = X, n.CanvasRenderer = $.default, n.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": 12
            }],
            66: [function(e, t, n) {
                "use strict";

                function r(e) {
                    return e < 0 ? -1 : e > 0 ? 1 : 0
                }
                n.__esModule = !0;
                var i = e("./Matrix"),
                    o = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(i),
                    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 = [],
                    d = [];
                ! function() {
                    for (var e = 0; e < 16; e++) {
                        var t = [];
                        d.push(t);
                        for (var n = 0; n < 16; n++)
                            for (var i = r(a[e] * a[n] + l[e] * s[n]), h = r(s[e] * a[n] + u[e] * s[n]), p = r(a[e] * l[n] + l[e] * u[n]), f = r(s[e] * l[n] + u[e] * u[n]), m = 0; m < 16; m++)
                                if (a[m] === i && s[m] === h && l[m] === p && u[m] === f) {
                                    t.push(m);
                                    break
                                }
                    }
                    for (var g = 0; g < 16; g++) {
                        var b = new o.default;
                        b.set(a[g], s[g], l[g], u[g], 0, 0), c.push(b)
                    }
                }();
                var h = {
                    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 d[e][t]
                    },
                    sub: function(e, t) {
                        return d[e][h.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 ? h.S : h.N : 2 * Math.abs(t) <= Math.abs(e) ? e > 0 ? h.E : h.W : t > 0 ? e > 0 ? h.SE : h.SW : e > 0 ? h.NE : h.NW
                    },
                    matrixAppendRotationInv: function(e, t) {
                        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                            r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                            i = c[h.inv(t)];
                        i.tx = n, i.ty = r, e.append(i)
                    }
                };
                n.default = h
            }, {
                "./Matrix": 67
            }],
            67: [function(e, t, n) {
                "use strict";

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

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

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                            n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        r(this, e), this.x = t, this.y = n
                    }
                    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
                }();
                n.default = i
            }, {}],
            70: [function(e, t, n) {
                "use strict";

                function r(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                n.__esModule = !0;
                var i = e("./Point");
                Object.defineProperty(n, "Point", {
                    enumerable: !0,
                    get: function() {
                        return r(i).default
                    }
                });
                var o = e("./ObservablePoint");
                Object.defineProperty(n, "ObservablePoint", {
                    enumerable: !0,
                    get: function() {
                        return r(o).default
                    }
                });
                var a = e("./Matrix");
                Object.defineProperty(n, "Matrix", {
                    enumerable: !0,
                    get: function() {
                        return r(a).default
                    }
                });
                var s = e("./GroupD8");
                Object.defineProperty(n, "GroupD8", {
                    enumerable: !0,
                    get: function() {
                        return r(s).default
                    }
                });
                var l = e("./shapes/Circle");
                Object.defineProperty(n, "Circle", {
                    enumerable: !0,
                    get: function() {
                        return r(l).default
                    }
                });
                var u = e("./shapes/Ellipse");
                Object.defineProperty(n, "Ellipse", {
                    enumerable: !0,
                    get: function() {
                        return r(u).default
                    }
                });
                var c = e("./shapes/Polygon");
                Object.defineProperty(n, "Polygon", {
                    enumerable: !0,
                    get: function() {
                        return r(c).default
                    }
                });
                var d = e("./shapes/Rectangle");
                Object.defineProperty(n, "Rectangle", {
                    enumerable: !0,
                    get: function() {
                        return r(d).default
                    }
                });
                var h = e("./shapes/RoundedRectangle");
                Object.defineProperty(n, "RoundedRectangle", {
                    enumerable: !0,
                    get: function() {
                        return r(h).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, n) {
                "use strict";

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

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

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

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    o = e("../../const"),
                    a = function() {
                        function e() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                                i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                                a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                            r(this, e), this.x = Number(t), this.y = Number(n), this.width = Number(i), 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) {
                            this.x < e.x && (this.width += this.x, this.width < 0 && (this.width = 0), this.x = e.x), this.y < e.y && (this.height += this.y, this.height < 0 && (this.height = 0), this.y = e.y), this.x + this.width > e.x + e.width && (this.width = e.width - this.x, this.width < 0 && (this.width = 0)), this.y + this.height > e.y + e.height && (this.height = e.height - this.y, this.height < 0 && (this.height = 0))
                        }, e.prototype.enlarge = function(e) {
                            var t = Math.min(this.x, e.x),
                                n = Math.max(this.x + this.width, e.x + e.width),
                                r = Math.min(this.y, e.y),
                                i = Math.max(this.y + this.height, e.y + e.height);
                            this.x = t, this.width = n - t, this.y = r, this.height = i - r
                        }, i(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
                    }();
                n.default = a
            }, {
                "../../const": 46
            }],
            75: [function(e, t, n) {
                "use strict";

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

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("../utils"),
                    u = e("../math"),
                    c = e("../const"),
                    d = e("../settings"),
                    h = r(d),
                    p = e("../display/Container"),
                    f = r(p),
                    m = e("../textures/RenderTexture"),
                    g = r(m),
                    b = e("eventemitter3"),
                    _ = r(b),
                    y = new u.Matrix,
                    v = function(e) {
                        function t(n, r, a, s) {
                            i(this, t);
                            var d = o(this, e.call(this));
                            return (0, l.sayHello)(n), "number" == typeof r && (r = Object.assign({
                                width: r,
                                height: a || h.default.RENDER_OPTIONS.height
                            }, s)), r = Object.assign({}, h.default.RENDER_OPTIONS, r), d.options = r, d.type = c.RENDERER_TYPE.UNKNOWN, d.screen = new u.Rectangle(0, 0, r.width, r.height), d.view = r.view || document.createElement("canvas"), d.resolution = r.resolution || h.default.RESOLUTION, d.transparent = r.transparent, d.autoResize = r.autoResize || !1, d.blendModes = null, d.preserveDrawingBuffer = r.preserveDrawingBuffer, d.clearBeforeRender = r.clearBeforeRender, d.roundPixels = r.roundPixels, d._backgroundColor = 0, d._backgroundColorRgba = [0, 0, 0, 0], d._backgroundColorString = "#000000", d.backgroundColor = r.backgroundColor || d._backgroundColor, d._tempDisplayObjectParent = new f.default, d._lastObjectRendered = d._tempDisplayObjectParent, d
                        }
                        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, n, r) {
                            r = r || e.getLocalBounds();
                            var i = g.default.create(0 | r.width, 0 | r.height, t, n);
                            return y.tx = -r.x, y.ty = -r.y, this.render(e, i, !1, y, !0), i
                        }, 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
                    }(_.default);
                n.default = v
            }, {
                "../const": 46,
                "../display/Container": 48,
                "../math": 70,
                "../settings": 101,
                "../textures/RenderTexture": 113,
                "../utils": 125,
                eventemitter3: 3
            }],
            77: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../SystemRenderer"),
                    l = r(s),
                    u = e("./utils/CanvasMaskManager"),
                    c = r(u),
                    d = e("./utils/CanvasRenderTarget"),
                    h = r(d),
                    p = e("./utils/mapCanvasBlendModesToPixi"),
                    f = r(p),
                    m = e("../../utils"),
                    g = e("../../const"),
                    b = e("../../settings"),
                    _ = r(b),
                    y = function(e) {
                        function t(n, r, a) {
                            i(this, t);
                            var s = o(this, e.call(this, "Canvas", n, r, a));
                            return s.type = g.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, f.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, n, r, i) {
                            if (this.view) {
                                this.renderingToScreen = !t, this.emit("prerender");
                                var o = this.resolution;
                                t ? (t = t.baseTexture || t, t._canvasRenderTarget || (t._canvasRenderTarget = new h.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), !i) {
                                    var s = e.parent,
                                        l = this._tempDisplayObjectParent.transform.worldTransform;
                                    r ? (r.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 = g.BLEND_MODES.NORMAL, a.globalCompositeOperation = this.blendModes[g.BLEND_MODES.NORMAL], navigator.isCocoonJS && this.view.screencanvas && (a.fillStyle = "black", a.clear()), (void 0 !== n ? n : 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, n) {
                            e.prototype.resize.call(this, t, n), this.smoothProperty && (this.rootContext[this.smoothProperty] = _.default.SCALE_MODE === g.SCALE_MODES.LINEAR)
                        }, t.prototype.invalidateBlendMode = function() {
                            this._activeBlendMode = this.blendModes.indexOf(this.context.globalCompositeOperation)
                        }, t
                    }(l.default);
                n.default = y, m.pluginTarget.mixin(y)
            }, {
                "../../const": 46,
                "../../settings": 101,
                "../../utils": 125,
                "../SystemRenderer": 76,
                "./utils/CanvasMaskManager": 78,
                "./utils/CanvasRenderTarget": 79,
                "./utils/mapCanvasBlendModesToPixi": 81
            }],
            78: [function(e, t, n) {
                "use strict";

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

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

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

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

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

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = e("../../const"),
                    o = e("../../settings"),
                    a = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(o),
                    s = function() {
                        function e(t) {
                            r(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 !== i.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, n = !1, r = 0; r < t.length; r++) {
                                var i = t[r];
                                !i._glRenderTargets && this.count - i.touched > this.maxIdle && (e.destroyTexture(i, !0), t[r] = null, n = !0)
                            }
                            if (n) {
                                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 n = e.children.length - 1; n >= 0; n--) this.unload(e.children[n])
                        }, e
                    }();
                n.default = s
            }, {
                "../../const": 46,
                "../../settings": 101
            }],
            83: [function(e, t, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = 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) {
                            r(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 n = this.gl,
                                r = !!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, n.activeTexture(n.TEXTURE0 + t);
                            var u = e._glTextures[this.renderer.CONTEXT_UID];
                            if (u) r ? e._glRenderTargets[this.renderer.CONTEXT_UID].resize(e.width, e.height) : u.upload(e.source);
                            else {
                                if (r) {
                                    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
                                } else u = new i.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 n = this.renderer.CONTEXT_UID,
                                    r = e._glTextures,
                                    i = e._glRenderTargets;
                                if (r[n] && (this.renderer.unbindTexture(e), r[n].destroy(), e.off("update", this.updateTexture, this), e.off("dispose", this.destroyTexture, this), delete r[n], !t)) {
                                    var o = this._managedTextures.indexOf(e); - 1 !== o && (0, l.removeItems)(this._managedTextures, o, 1)
                                }
                                i && i[n] && (i[n].destroy(), delete i[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
                    }();
                n.default = u
            }, {
                "../../const": 46,
                "../../utils": 125,
                "./utils/RenderTarget": 96,
                "pixi-gl-core": 12
            }],
            84: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../SystemRenderer"),
                    l = r(s),
                    u = e("./managers/MaskManager"),
                    c = r(u),
                    d = e("./managers/StencilManager"),
                    h = r(d),
                    p = e("./managers/FilterManager"),
                    f = r(p),
                    m = e("./utils/RenderTarget"),
                    g = r(m),
                    b = e("./utils/ObjectRenderer"),
                    _ = r(b),
                    y = e("./TextureManager"),
                    v = r(y),
                    x = e("../../textures/BaseTexture"),
                    S = r(x),
                    w = e("./TextureGarbageCollector"),
                    T = r(w),
                    P = e("./WebGLState"),
                    C = r(P),
                    k = e("./utils/mapWebGLDrawModesToPixi"),
                    O = r(k),
                    E = e("./utils/validateContext"),
                    A = r(E),
                    M = e("../../utils"),
                    R = e("pixi-gl-core"),
                    I = r(R),
                    B = e("../../const"),
                    L = 0,
                    D = function(e) {
                        function t(n, r, a) {
                            i(this, t);
                            var s = o(this, e.call(this, "WebGL", n, r, a));
                            return s.legacy = s.options.legacy, s.legacy && (I.default.VertexArrayObject.FORCE_NATIVE = !0), s.type = B.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 h.default(s), s.emptyRenderer = new _.default(s), s.currentRenderer = s.emptyRenderer, s.textureManager = null, s.filterManager = null, s.initPlugins(), s.options.context && (0, A.default)(s.options.context), s.gl = s.options.context || I.default.createContext(s.view, s._contextOptions), s.CONTEXT_UID = L++, s.state = new C.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.textureManager = new v.default(this), this.filterManager = new f.default(this), this.textureGC = new T.default(this), this.state.resetToDefault(), this.rootRenderTarget = new g.default(e, this.width, this.height, null, this.resolution, !0), this.rootRenderTarget.clearColor = this._backgroundColorRgba, this.bindRenderTarget(this.rootRenderTarget);
                            var n = new I.default.GLTexture.fromData(e, null, 1, 1),
                                r = {
                                    _glTextures: {}
                                };
                            r._glTextures[this.CONTEXT_UID] = {};
                            for (var i = 0; i < t; i++) {
                                var o = new S.default;
                                o._glTextures[this.CONTEXT_UID] = n, this.boundTextures[i] = r, this.emptyTextures[i] = o, this.bindTexture(null, i)
                            }
                            this.emit("context", e), this.resize(this.screen.width, this.screen.height)
                        }, t.prototype.render = function(e, t, n, r, i) {
                            if (this.renderingToScreen = !t, this.emit("prerender"), this.gl && !this.gl.isContextLost()) {
                                if (this._nextTextureLocation = 0, t || (this._lastObjectRendered = e), !i) {
                                    var o = e.parent;
                                    e.parent = this._tempDisplayObjectParent, e.updateTransform(), e.parent = o
                                }
                                this.bindRenderTexture(t, r), this.currentRenderer.start(), (void 0 !== n ? n : 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 n = e.baseTexture,
                                r = n._glRenderTargets[this.CONTEXT_UID];
                            return r && r.clear(t), this
                        }, t.prototype.bindRenderTexture = function(e, t) {
                            var n = void 0;
                            if (e) {
                                var r = e.baseTexture;
                                r._glRenderTargets[this.CONTEXT_UID] || this.textureManager.updateTexture(r, 0), this.unbindTexture(r), n = r._glRenderTargets[this.CONTEXT_UID], n.setFrame(e.frame)
                            } else n = this.rootRenderTarget;
                            return n.transform = t, this.bindRenderTarget(n), 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, n) {
                            if (e = e || this.emptyTextures[t], e = e.baseTexture || e, e.touched = this.textureGC.count, n) t = t || 0;
                            else {
                                for (var r = 0; r < this.boundTextures.length; r++)
                                    if (this.boundTextures[r] === e) return r;
                                void 0 === t && (this._nextTextureLocation++, this._nextTextureLocation %= this.boundTextures.length, t = this.boundTextures.length - this._nextTextureLocation - 1)
                            }
                            var i = this.gl,
                                o = e._glTextures[this.CONTEXT_UID];
                            return o ? (this.boundTextures[t] = e, i.activeTexture(i.TEXTURE0 + t), i.bindTexture(i.TEXTURE_2D, o.texture)) : this.textureManager.updateTexture(e, t), t
                        }, t.prototype.unbindTexture = function(e) {
                            var t = this.gl;
                            e = e.baseTexture || e;
                            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 I.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;
                            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);
                n.default = D, M.pluginTarget.mixin(D)
            }, {
                "../../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": 12
            }],
            85: [function(e, t, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = e("./utils/mapWebGLBlendModesToPixi"),
                    o = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(i),
                    a = function() {
                        function e(t) {
                            r(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 n = 1; n < this.maxAttribs; n++) this.gl.disableVertexAttribArray(n)
                        }, 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
                    }();
                n.default = a
            }, {
                "./utils/mapWebGLBlendModesToPixi": 98
            }],
            86: [function(e, t, n) {
                "use strict";

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

                function i(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var o = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    a = e("./extractUniformsFromSrc"),
                    s = r(a),
                    l = e("../../../utils"),
                    u = e("../../../const"),
                    c = e("../../../settings"),
                    d = r(c),
                    h = {},
                    p = function() {
                        function e(t, n, r) {
                            i(this, e), this.vertexSrc = t || e.defaultVertexSrc, this.fragmentSrc = n || e.defaultFragmentSrc, this._blendMode = u.BLEND_MODES.NORMAL, this.uniformData = r || (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 = {}, h[this.vertexSrc + this.fragmentSrc] || (h[this.vertexSrc + this.fragmentSrc] = (0, l.uid)()), this.glShaderKey = h[this.vertexSrc + this.fragmentSrc], this.padding = 4, this.resolution = d.default.RESOLUTION, this.enabled = !0, this.autoFit = !0
                        }
                        return e.prototype.apply = function(e, t, n, r, i) {
                            e.applyFilter(this, t, n, r)
                        }, 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
                    }();
                n.default = p
            }, {
                "../../../const": 46,
                "../../../settings": 101,
                "../../../utils": 125,
                "./extractUniformsFromSrc": 87
            }],
            87: [function(e, t, n) {
                "use strict";

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

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

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

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

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

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../Filter"),
                    l = r(s),
                    u = e("../../../../math"),
                    c = (e("path"), e("../../../../textures/TextureMatrix")),
                    d = r(c),
                    h = function(e) {
                        function t(n) {
                            i(this, t);
                            var r = 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 n.renderable = !1, a.maskSprite = n, a.maskMatrix = r, a
                        }
                        return a(t, e), t.prototype.apply = function(e, t, n) {
                            var r = this.maskSprite,
                                i = this.maskSprite.texture;
                            i.valid && (i.transform || (i.transform = new d.default(i, 0)), i.transform.update(), this.uniforms.mask = i, this.uniforms.otherMatrix = e.calculateSpriteMatrix(this.maskMatrix, r).prepend(i.transform.mapCoord), this.uniforms.alpha = r.worldAlpha, this.uniforms.maskClamp = i.transform.uClampFrame, e.applyFilter(this, t, n))
                        }, t
                    }(l.default);
                n.default = h
            }, {
                "../../../../math": 70,
                "../../../../textures/TextureMatrix": 116,
                "../Filter": 86,
                path: 23
            }],
            90: [function(e, t, n) {
                "use strict";

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

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

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("./WebGLManager"),
                    l = r(s),
                    u = e("../filters/spriteMask/SpriteMaskFilter"),
                    c = r(u),
                    d = function(e) {
                        function t(n) {
                            i(this, t);
                            var r = o(this, e.call(this, n));
                            return r.scissor = !1, r.scissorData = null, r.scissorRenderTarget = null, r.enableScissor = !0, r.alphaMaskPool = [], r.alphaMaskIndex = 0, r
                        }
                        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 n = t.worldTransform,
                                    r = Math.atan2(n.b, n.a);
                                r = Math.round(r * (180 / Math.PI)), r % 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 n = this.alphaMaskPool[this.alphaMaskIndex];
                            n || (n = this.alphaMaskPool[this.alphaMaskIndex] = [new c.default(t)]), n[0].resolution = this.renderer.resolution, n[0].maskSprite = t, e.filterArea = t.getBounds(!0), this.renderer.filterManager.pushFilter(e, 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 n = this.renderer._activeRenderTarget,
                                r = t.getBounds();
                            r.fit(n.size), t.renderable = !1, this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST);
                            var i = this.renderer.resolution;
                            this.renderer.gl.scissor(r.x * i, (n.root ? n.size.height - r.y - r.height : r.y) * i, r.width * i, r.height * i), this.scissorRenderTarget = n, 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);
                n.default = d
            }, {
                "../filters/spriteMask/SpriteMaskFilter": 89,
                "./WebGLManager": 93
            }],
            92: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("./WebGLManager"),
                    s = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(a),
                    l = function(e) {
                        function t(n) {
                            r(this, t);
                            var o = i(this, e.call(this, n));
                            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,
                                n = this.stencilMaskStack.length;
                            0 === n && t.enable(t.STENCIL_TEST), this.stencilMaskStack.push(e), t.colorMask(!1, !1, !1, !1), t.stencilFunc(t.EQUAL, n, 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);
                n.default = l
            }, {
                "./WebGLManager": 93
            }],
            93: [function(e, t, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e(t) {
                        r(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
                }();
                n.default = i
            }, {}],
            94: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("../managers/WebGLManager"),
                    s = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(a),
                    l = function(e) {
                        function t() {
                            return r(this, t), i(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);
                n.default = l
            }, {
                "../managers/WebGLManager": 93
            }],
            95: [function(e, t, n) {
                "use strict";

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

                function i(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var o = e("pixi-gl-core"),
                    a = r(o),
                    s = e("../../../utils/createIndicesForQuads"),
                    l = r(s),
                    u = function() {
                        function e(t, n) {
                            i(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 r = 0; r < 4; r++) this.interleaved[4 * r] = this.vertices[2 * r], this.interleaved[4 * r + 1] = this.vertices[2 * r + 1], this.interleaved[4 * r + 2] = this.uvs[2 * r], this.interleaved[4 * r + 3] = this.uvs[2 * r + 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, n)
                        }
                        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 n = 0,
                                r = 0;
                            return this.uvs[0] = n, this.uvs[1] = r, this.uvs[2] = n + t.width / e.width, this.uvs[3] = r, this.uvs[4] = n + t.width / e.width, this.uvs[5] = r + t.height / e.height, this.uvs[6] = n, this.uvs[7] = r + t.height / e.height, n = t.x, r = t.y, this.vertices[0] = n, this.vertices[1] = r, this.vertices[2] = n + t.width, this.vertices[3] = r, this.vertices[4] = n + t.width, this.vertices[5] = r + t.height, this.vertices[6] = n, this.vertices[7] = r + 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
                    }();
                n.default = u
            }, {
                "../../../utils/createIndicesForQuads": 123,
                "pixi-gl-core": 12
            }],
            96: [function(e, t, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = 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, n, a, u, c, d) {
                            r(this, e), this.gl = t, this.frameBuffer = null, this.texture = null, this.clearColor = [0, 0, 0, 0], this.size = new i.Rectangle(0, 0, 1, 1), this.resolution = c || s.default.RESOLUTION, this.projectionMatrix = new i.Matrix, this.transform = null, this.frame = null, this.defaultFrame = new i.Rectangle, this.destinationFrame = null, this.sourceFrame = null, this.stencilBuffer = null, this.stencilMaskStack = [], this.filterData = null, this.scaleMode = void 0 !== u ? u : s.default.SCALE_MODE, this.root = d, 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(n, 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 n = this.projectionMatrix;
                            t = t || e, n.identity(), this.root ? (n.a = 1 / e.width * 2, n.d = -1 / e.height * 2, n.tx = -1 - t.x * n.a, n.ty = 1 - t.y * n.d) : (n.a = 1 / e.width * 2, n.d = 1 / e.height * 2, n.tx = -1 - t.x * n.a, n.ty = -1 - t.y * n.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 n = this.frame || this.size;
                                this.calculateProjection(n)
                            }
                        }, e.prototype.destroy = function() {
                            this.frameBuffer.destroy(), this.frameBuffer = null, this.texture = null
                        }, e
                    }();
                n.default = u
            }, {
                "../../../const": 46,
                "../../../math": 70,
                "../../../settings": 101,
                "pixi-gl-core": 12
            }],
            97: [function(e, t, n) {
                "use strict";

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

                function i(e) {
                    for (var t = "", n = 0; n < e; ++n) n > 0 && (t += "\nelse "), n < e - 1 && (t += "if(test == " + n + ".0){}");
                    return t
                }
                n.__esModule = !0, n.default = r;
                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": 12
            }],
            98: [function(e, t, n) {
                "use strict";

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

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

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

                function r(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                n.__esModule = !0;
                var i = e("./utils/maxRecommendedTextures"),
                    o = r(i),
                    a = e("./utils/canUploadSameBuffer"),
                    s = r(a);
                n.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)()
                }
            }, {
                "./utils/canUploadSameBuffer": 122,
                "./utils/maxRecommendedTextures": 127
            }],
            102: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("../math"),
                    u = e("../utils"),
                    c = e("../const"),
                    d = e("../textures/Texture"),
                    h = r(d),
                    p = e("../display/Container"),
                    f = r(p),
                    m = new l.Point,
                    g = function(e) {
                        function t(n) {
                            i(this, t);
                            var r = o(this, e.call(this));
                            return r._anchor = new l.ObservablePoint(r._onAnchorUpdate, r), r._texture = null, r._width = 0, r._height = 0, r._tint = null, r._tintRGB = null, r.tint = 16777215, r.blendMode = c.BLEND_MODES.NORMAL, r.shader = null, r.cachedTint = 16777215, r.texture = n || h.default.EMPTY, r.vertexData = new Float32Array(8), r.vertexTrimmedData = null, r._transformID = -1, r._textureID = -1, r._transformTrimmedID = -1, r._textureTrimmedID = -1, r.pluginName = "sprite", r
                        }
                        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,
                                    n = t.a,
                                    r = t.b,
                                    i = t.c,
                                    o = t.d,
                                    a = t.tx,
                                    s = t.ty,
                                    l = this.vertexData,
                                    u = e.trim,
                                    c = e.orig,
                                    d = this._anchor,
                                    h = 0,
                                    p = 0,
                                    f = 0,
                                    m = 0;
                                u ? (p = u.x - d._x * c.width, h = p + u.width, m = u.y - d._y * c.height, f = m + u.height) : (p = -d._x * c.width, h = p + c.width, m = -d._y * c.height, f = m + c.height), l[0] = n * p + i * m + a, l[1] = o * m + r * p + s, l[2] = n * h + i * m + a, l[3] = o * m + r * h + s, l[4] = n * h + i * f + a, l[5] = o * f + r * h + s, l[6] = n * p + i * f + a, l[7] = o * f + r * p + 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,
                                n = e.orig,
                                r = this._anchor,
                                i = this.transform.worldTransform,
                                o = i.a,
                                a = i.b,
                                s = i.c,
                                l = i.d,
                                u = i.tx,
                                c = i.ty,
                                d = -r._x * n.width,
                                h = d + n.width,
                                p = -r._y * n.height,
                                f = p + n.height;
                            t[0] = o * d + s * p + u, t[1] = l * p + a * d + c, t[2] = o * h + s * p + u, t[3] = l * p + a * h + c, t[4] = o * h + s * f + u, t[5] = l * f + a * h + c, t[6] = o * d + s * f + u, t[7] = l * f + a * d + 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, m);
                            var t = this._texture.orig.width,
                                n = this._texture.orig.height,
                                r = -t * this.anchor.x,
                                i = 0;
                            return m.x >= r && m.x < r + t && (i = -n * this.anchor.y, m.y >= i && m.y < i + n)
                        }, t.prototype.destroy = function(t) {
                            if (e.prototype.destroy.call(this, t), this._anchor = null, "boolean" == typeof t ? t : t && t.texture) {
                                var n = "boolean" == typeof t ? t : t && t.baseTexture;
                                this._texture.destroy(!!n)
                            }
                            this._texture = null, this.shader = null
                        }, t.from = function(e) {
                            return new t(h.default.from(e))
                        }, t.fromFrame = function(e) {
                            var n = u.TextureCache[e];
                            if (!n) throw new Error('The frameId "' + e + '" does not exist in the texture cache');
                            return new t(n)
                        }, t.fromImage = function(e, n, r) {
                            return new t(h.default.fromImage(e, n, r))
                        }, 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, this.cachedTint = 16777215, this._textureID = -1, this._textureTrimmedID = -1, e && (e.baseTexture.hasLoaded ? this._onTextureUpdate() : e.once("update", this._onTextureUpdate, this)))
                            }
                        }]), t
                    }(f.default);
                n.default = g
            }, {
                "../const": 46,
                "../display/Container": 48,
                "../math": 70,
                "../textures/Texture": 115,
                "../utils": 125
            }],
            103: [function(e, t, n) {
                "use strict";

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

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

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e(t) {
                        r(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
                }();
                n.default = i
            }, {}],
            106: [function(e, t, n) {
                "use strict";

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

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

                function r(e, t) {
                    var n = s;
                    n = n.replace(/%count%/gi, t), n = n.replace(/%forloop%/gi, i(t));
                    for (var r = 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", n), o = [], l = 0; l < t; l++) o[l] = l;
                    return r.bind(), r.uniforms.uSamplers = o, r
                }

                function i(e) {
                    var t = "";
                    t += "\n", t += "\n";
                    for (var n = 0; n < e; n++) n > 0 && (t += "\nelse "), n < e - 1 && (t += "if(textureId == " + n + ".0)"), t += "\n{", t += "\n\tcolor = texture2D(uSamplers[" + n + "], vTextureCoord);", t += "\n}";
                    return t += "\n", t += "\n"
                }
                n.__esModule = !0, n.default = r;
                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;", "float textureId = floor(vTextureId+0.5);", "%forloop%", "gl_FragColor = color * vColor;", "}"].join("\n"))
            }, {
                "../../Shader": 44,
                path: 23
            }],
            108: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("../sprites/Sprite"),
                    u = r(l),
                    c = e("../textures/Texture"),
                    d = r(c),
                    h = e("../math"),
                    p = e("../utils"),
                    f = e("../const"),
                    m = e("../settings"),
                    g = r(m),
                    b = e("./TextStyle"),
                    _ = r(b),
                    y = e("./TextMetrics"),
                    v = r(y),
                    x = e("../utils/trimCanvas"),
                    S = r(x),
                    w = {
                        texture: !0,
                        children: !1,
                        baseTexture: !0
                    },
                    T = function(e) {
                        function t(n, r, a) {
                            i(this, t), a = a || document.createElement("canvas"), a.width = 3, a.height = 3;
                            var s = d.default.fromCanvas(a, g.default.SCALE_MODE, "text");
                            s.orig = new h.Rectangle, s.trim = new h.Rectangle;
                            var l = o(this, e.call(this, s));
                            return d.default.addToCache(l._texture, l._texture.baseTexture.textureCacheIds[0]), l.canvas = a, l.context = l.canvas.getContext("2d"), l.resolution = g.default.RESOLUTION, l._text = null, l._style = null, l._styleListener = null, l._font = "", l.text = n, l.style = r, 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 n = this.context,
                                    r = v.default.measureText(this._text, this._style, this._style.wordWrap, this.canvas),
                                    i = r.width,
                                    o = r.height,
                                    a = r.lines,
                                    s = r.lineHeight,
                                    l = r.lineWidths,
                                    u = r.maxLineWidth,
                                    c = r.fontProperties;
                                this.canvas.width = Math.ceil((i + 2 * t.padding) * this.resolution), this.canvas.height = Math.ceil((o + 2 * t.padding) * this.resolution), n.scale(this.resolution, this.resolution), n.clearRect(0, 0, this.canvas.width, this.canvas.height), n.font = this._font, n.strokeStyle = t.stroke, n.lineWidth = t.strokeThickness, n.textBaseline = t.textBaseline, n.lineJoin = t.lineJoin, n.miterLimit = t.miterLimit;
                                var d = void 0,
                                    h = void 0;
                                if (t.dropShadow) {
                                    n.fillStyle = t.dropShadowColor, n.globalAlpha = t.dropShadowAlpha, n.shadowBlur = t.dropShadowBlur, t.dropShadowBlur > 0 && (n.shadowColor = t.dropShadowColor);
                                    for (var p = Math.cos(t.dropShadowAngle) * t.dropShadowDistance, f = Math.sin(t.dropShadowAngle) * t.dropShadowDistance, m = 0; m < a.length; m++) d = t.strokeThickness / 2, h = t.strokeThickness / 2 + m * s + c.ascent, "right" === t.align ? d += u - l[m] : "center" === t.align && (d += (u - l[m]) / 2), t.fill && (this.drawLetterSpacing(a[m], d + p + t.padding, h + f + t.padding), t.stroke && t.strokeThickness && (n.strokeStyle = t.dropShadowColor, this.drawLetterSpacing(a[m], d + p + t.padding, h + f + t.padding, !0), n.strokeStyle = t.stroke))
                                }
                                n.shadowBlur = 0, n.globalAlpha = 1, n.fillStyle = this._generateFillStyle(t, a);
                                for (var g = 0; g < a.length; g++) d = t.strokeThickness / 2, h = t.strokeThickness / 2 + g * s + c.ascent, "right" === t.align ? d += u - l[g] : "center" === t.align && (d += (u - l[g]) / 2), t.stroke && t.strokeThickness && this.drawLetterSpacing(a[g], d + t.padding, h + t.padding, !0), t.fill && this.drawLetterSpacing(a[g], d + t.padding, h + t.padding);
                                this.updateTexture()
                            }
                        }, t.prototype.drawLetterSpacing = function(e, t, n) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],
                                i = this._style,
                                o = i.letterSpacing;
                            if (0 === o) return void(r ? this.context.strokeText(e, t, n) : this.context.fillText(e, t, n));
                            for (var a = String.prototype.split.call(e, ""), s = t, l = 0, u = ""; l < e.length;) u = a[l++], r ? this.context.strokeText(u, s, n) : this.context.fillText(u, s, n), 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);
                                e.width = t.width, e.height = t.height, this.context.putImageData(t.data, 0, 0)
                            }
                            var n = this._texture,
                                r = this._style,
                                i = r.trim ? 0 : r.padding,
                                o = n.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, n.trim.width = n._frame.width = e.width / this.resolution, n.trim.height = n._frame.height = e.height / this.resolution, n.trim.x = -i, n.trim.y = -i, n.orig.width = n._frame.width - 2 * i, n.orig.height = n._frame.height - 2 * i, 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 n = void 0,
                                r = void 0,
                                i = 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, d = 1; d < c; ++d) u.push(d / c);
                            if (l.unshift(e.fill[0]), u.unshift(0), l.push(e.fill[e.fill.length - 1]), u.push(1), e.fillGradientType === f.TEXT_GRADIENT.LINEAR_VERTICAL) {
                                n = this.context.createLinearGradient(a / 2, 0, a / 2, s), r = (l.length + 1) * t.length, i = 0;
                                for (var h = 0; h < t.length; h++) {
                                    i += 1;
                                    for (var p = 0; p < l.length; p++) o = "number" == typeof u[p] ? u[p] / t.length + h / t.length : i / r, n.addColorStop(o, l[p]), i++
                                }
                            } else {
                                n = this.context.createLinearGradient(0, s / 2, a, s / 2), r = l.length + 1, i = 1;
                                for (var m = 0; m < l.length; m++) o = "number" == typeof u[m] ? u[m] : i / r, n.addColorStop(o, l[m]), i++
                            }
                            return n
                        }, t.prototype.destroy = function(t) {
                            "boolean" == typeof t && (t = {
                                children: t
                            }), t = Object.assign({}, w, 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, p.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, p.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 _.default ? this._style = e : this._style = new _.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);
                n.default = T
            }, {
                "../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, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e(t, n, i, o, a, s, l, u, c) {
                        r(this, e), this.text = t, this.style = n, this.width = i, this.height = o, this.lines = a, this.lineWidths = s, this.lineHeight = l, this.maxLineWidth = u, this.fontProperties = c
                    }
                    return e.measureText = function(t, n, r) {
                        var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : e._canvas;
                        r = r || n.wordWrap;
                        var o = n.toFontString(),
                            a = e.measureFont(o),
                            s = i.getContext("2d");
                        s.font = o;
                        for (var l = r ? e.wordWrap(t, n, i) : t, u = l.split(/(?:\r\n|\r|\n)/), c = new Array(u.length), d = 0, h = 0; h < u.length; h++) {
                            var p = s.measureText(u[h]).width + (u[h].length - 1) * n.letterSpacing;
                            c[h] = p, d = Math.max(d, p)
                        }
                        var f = d + n.strokeThickness;
                        n.dropShadow && (f += n.dropShadowDistance);
                        var m = n.lineHeight || a.fontSize + n.strokeThickness,
                            g = Math.max(m, a.fontSize + n.strokeThickness) + (u.length - 1) * (m + n.leading);
                        return n.dropShadow && (g += n.dropShadowDistance), new e(t, n, f, g, u, c, m + n.leading, d, a)
                    }, e.wordWrap = function(t, n) {
                        for (var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e._canvas, i = r.getContext("2d"), o = "", a = t.charAt(0), s = t.split("\n"), l = n.wordWrapWidth, u = {}, c = 0; c < s.length; c++) {
                            for (var d = l, h = s[c].split(" "), p = 0; p < h.length; p++) {
                                var f = i.measureText(h[p]).width;
                                if (n.breakWords && f > l)
                                    for (var m = h[p].split(""), g = 0; g < m.length; g++) {
                                        var b = m[g],
                                            _ = u[b];
                                        void 0 === _ && (_ = i.measureText(b).width, u[b] = _), _ > d ? (o += "\n" + b, d = l - _) : (0 === g && (p > 0 || " " === a) && (o += " "), o += b, d -= _)
                                    } else {
                                        var y = f + i.measureText(" ").width;
                                        0 === p || y > d ? (p > 0 && (o += "\n"), o += h[p], d = l - f) : (d -= y, o += " " + h[p])
                                    }
                            }
                            c < s.length - 1 && (o += "\n")
                        }
                        return o
                    }, e.measureFont = function(t) {
                        if (e._fonts[t]) return e._fonts[t];
                        var n = {},
                            r = e._canvas,
                            i = e._context;
                        i.font = t;
                        var o = Math.ceil(i.measureText("|MÉq").width),
                            a = Math.ceil(i.measureText("M").width),
                            s = 2 * a;
                        a = 1.4 * a | 0, r.width = o, r.height = s, i.fillStyle = "#f00", i.fillRect(0, 0, o, s), i.font = t, i.textBaseline = "alphabetic", i.fillStyle = "#000", i.fillText("|MÉq", 0, a);
                        var l = i.getImageData(0, 0, o, s).data,
                            u = l.length,
                            c = 4 * o,
                            d = 0,
                            h = 0,
                            p = !1;
                        for (d = 0; d < a; ++d) {
                            for (var f = 0; f < c; f += 4)
                                if (255 !== l[h + f]) {
                                    p = !0;
                                    break
                                }
                            if (p) break;
                            h += c
                        }
                        for (n.ascent = a - d, h = u - c, p = !1, d = s; d > a; --d) {
                            for (var m = 0; m < c; m += 4)
                                if (255 !== l[h + m]) {
                                    p = !0;
                                    break
                                }
                            if (p) break;
                            h -= c
                        }
                        return n.descent = d - a, n.fontSize = n.ascent + n.descent, e._fonts[t] = n, n
                    }, e
                }();
                n.default = i;
                var o = document.createElement("canvas");
                o.width = o.height = 10, i._canvas = o, i._context = o.getContext("2d"), i._fonts = {}
            }, {}],
            110: [function(e, t, n) {
                "use strict";

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

                function i(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] = i(e[t]);
                        return e
                    }
                    return i(e)
                }

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

                function s(e, t, n) {
                    for (var r in n) Array.isArray(t[r]) ? e[r] = t[r].slice() : e[r] = t[r]
                }
                n.__esModule = !0;
                var l = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    u = e("../const"),
                    c = e("../utils"),
                    d = {
                        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,
                        wordWrap: !1,
                        wordWrapWidth: 100,
                        leading: 0
                    },
                    h = function() {
                        function e(t) {
                            r(this, e), this.styleID = 0, this.reset(), s(this, t, t)
                        }
                        return e.prototype.clone = function() {
                            var t = {};
                            return s(t, this, d), new e(t)
                        }, e.prototype.reset = function() {
                            s(this, d, d)
                        }, 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 n = t.length - 1; n >= 0; n--) {
                                var r = t[n].trim();
                                /([\"\'])[^\'\"]+\1/.test(r) || (r = '"' + r + '"'), t[n] = r
                            }
                            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: "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
                    }();
                n.default = h
            }, {
                "../const": 46,
                "../utils": 125
            }],
            111: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("./BaseTexture"),
                    l = r(s),
                    u = e("../settings"),
                    c = r(u),
                    d = function(e) {
                        function t() {
                            var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 100,
                                r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 100,
                                a = arguments[2],
                                s = arguments[3];
                            i(this, t);
                            var l = o(this, e.call(this, null, a));
                            return l.resolution = s || c.default.RESOLUTION, l.width = Math.ceil(n), l.height = Math.ceil(r), 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);
                n.default = d
            }, {
                "../settings": 101,
                "./BaseTexture": 112
            }],
            112: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../utils"),
                    l = e("../settings"),
                    u = r(l),
                    c = e("eventemitter3"),
                    d = r(c),
                    h = e("../utils/determineCrossOrigin"),
                    p = r(h),
                    f = e("bit-twiddle"),
                    m = r(f),
                    g = function(e) {
                        function t(n, r, a) {
                            i(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 !== r ? r : 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 = [], n && l.loadSource(n), 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 = m.default.isPow2(this.realWidth) && m.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 n = !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(), n && this.emit("loaded", this);
                            else if (!e.getContext) {
                                this.isLoading = !0;
                                var r = this;
                                if (e.onload = function() {
                                        if (r._updateImageType(), e.onload = null, e.onerror = null, r.isLoading) {
                                            if (r.isLoading = !1, r._sourceLoaded(), "svg" === r.imageType) return void r._loadSvgSource();
                                            r.emit("loaded", r)
                                        }
                                    }, e.onerror = function() {
                                        e.onload = null, e.onerror = null, r.isLoading && (r.isLoading = !1, r.emit("error", r))
                                    }, e.complete && e.src) {
                                    if (e.onload = null, e.onerror = null, "svg" === r.imageType) return void r._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 n = e.subType.split("+")[0];
                                    if (!(t = (0, s.getUrlFileExtension)("." + n))) 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 n = (0, s.getSvgSize)(e),
                                r = n.width,
                                i = n.height;
                            if (!r || !i) throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");
                            this.realWidth = Math.round(r * this.sourceScale), this.realHeight = Math.round(i * 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, r, i, 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, n, r, i) {
                            var o = s.BaseTextureCache[e];
                            if (!o) {
                                var a = new Image;
                                void 0 === n && 0 !== e.indexOf("data:") ? a.crossOrigin = (0, p.default)(e) : n && (a.crossOrigin = "string" == typeof n ? n : "anonymous"), o = new t(a, r), o.imageUrl = e, i && (o.sourceScale = i), o.resolution = (0, s.getResolutionOfUrl)(e), a.src = e, t.addToCache(o, e)
                            }
                            return o
                        }, t.fromCanvas = function(e, n) {
                            var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "canvas";
                            e._pixiId || (e._pixiId = r + "_" + (0, s.uid)());
                            var i = s.BaseTextureCache[e._pixiId];
                            return i || (i = new t(e, n), t.addToCache(i, e._pixiId)), i
                        }, t.from = function(e, n, r) {
                            if ("string" == typeof e) return t.fromImage(e, void 0, n, r);
                            if (e instanceof HTMLImageElement) {
                                var i = e.src,
                                    o = s.BaseTextureCache[i];
                                return o || (o = new t(e, n), o.imageUrl = i, r && (o.sourceScale = r), o.resolution = (0, s.getResolutionOfUrl)(i), t.addToCache(o, i)), o
                            }
                            return e instanceof HTMLCanvasElement ? t.fromCanvas(e, n) : e
                        }, t.addToCache = function(e, t) {
                            t && (-1 === e.textureCacheIds.indexOf(t) && e.textureCacheIds.push(t), s.BaseTextureCache[t], s.BaseTextureCache[t] = e)
                        }, t.removeFromCache = function(e) {
                            if ("string" == typeof e) {
                                var t = s.BaseTextureCache[e];
                                if (t) {
                                    var n = t.textureCacheIds.indexOf(e);
                                    return n > -1 && t.textureCacheIds.splice(n, 1), delete s.BaseTextureCache[e], t
                                }
                            } else if (e && e.textureCacheIds) {
                                for (var r = 0; r < e.textureCacheIds.length; ++r) delete s.BaseTextureCache[e.textureCacheIds[r]];
                                return e.textureCacheIds.length = 0, e
                            }
                            return null
                        }, t
                    }(d.default);
                n.default = g
            }, {
                "../settings": 101,
                "../utils": 125,
                "../utils/determineCrossOrigin": 124,
                "bit-twiddle": 1,
                eventemitter3: 3
            }],
            113: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("./BaseRenderTexture"),
                    l = r(s),
                    u = e("./Texture"),
                    c = r(u),
                    d = function(e) {
                        function t(n, r) {
                            i(this, t);
                            var a = null;
                            if (!(n instanceof l.default)) {
                                var s = arguments[1],
                                    u = arguments[2],
                                    c = arguments[3],
                                    d = arguments[4];
                                a = arguments[0], r = null, n = new l.default(s, u, c, d)
                            }
                            var h = o(this, e.call(this, n, r));
                            return h.legacyRenderer = a, h.valid = !0, h._updateUvs(), h
                        }
                        return a(t, e), t.prototype.resize = function(e, t, n) {
                            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, n || this.baseTexture.resize(e, t), this._updateUvs()
                        }, t.create = function(e, n, r, i) {
                            return new t(new l.default(e, n, r, i))
                        }, t
                    }(c.default);
                n.default = d
            }, {
                "./BaseRenderTexture": 111,
                "./Texture": 115
            }],
            114: [function(e, t, n) {
                "use strict";

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

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

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

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), 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, n) {
                            r(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 === n ? .5 : n
                        }
                        return e.prototype.multiplyUvs = function(e, t) {
                            void 0 === t && (t = e);
                            for (var n = this.mapCoord, r = 0; r < e.length; r += 2) {
                                var i = e[r],
                                    o = e[r + 1];
                                t[r] = i * n.a + o * n.c + n.tx, t[r + 1] = i * n.b + o * n.d + n.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 n = t._uvs;
                            this.mapCoord.set(n.x1 - n.x0, n.y1 - n.y0, n.x3 - n.x0, n.y3 - n.y0, n.x0, n.y0);
                            var r = t.orig,
                                i = t.trim;
                            i && (s.set(r.width / i.width, 0, 0, r.height / i.height, -i.x / i.width, -i.y / i.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
                        }, i(e, [{
                            key: "texture",
                            get: function() {
                                return this._texture
                            },
                            set: function(e) {
                                this._texture = e, this._lastTextureID = -1
                            }
                        }]), e
                    }();
                n.default = l
            }, {
                "../math/Matrix": 67
            }],
            117: [function(e, t, n) {
                "use strict";

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

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

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

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

                function i(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var o = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    a = e("../settings"),
                    s = r(a),
                    l = e("../const"),
                    u = e("./TickerListener"),
                    c = r(u),
                    d = function() {
                        function e() {
                            var t = this;
                            i(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 n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : l.UPDATE_PRIORITY.NORMAL;
                            return this._addListener(new c.default(e, t, n))
                        }, e.prototype.addOnce = function(e, t) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : l.UPDATE_PRIORITY.NORMAL;
                            return this._addListener(new c.default(e, t, n, !0))
                        }, e.prototype._addListener = function(e) {
                            var t = this._head.next,
                                n = this._head;
                            if (t) {
                                for (; t;) {
                                    if (e.priority > t.priority) {
                                        e.connect(n);
                                        break
                                    }
                                    n = t, t = t.next
                                }
                                e.previous || e.connect(n)
                            } else e.connect(n);
                            return this._startIfPossible(), this
                        }, e.prototype.remove = function(e, t) {
                            for (var n = this._head.next; n;) n = n.match(e, t) ? n.destroy() : n.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 n = this._head, r = n.next; r;) r = r.emit(this.deltaTime);
                                n.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
                    }();
                n.default = d
            }, {
                "../const": 46,
                "../settings": 101,
                "./TickerListener": 120
            }],
            120: [function(e, t, n) {
                "use strict";

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

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

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

                function r(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 n = !e.port && "" === t.port || e.port === t.port;
                    return e.hostname === t.hostname && n && e.protocol === t.protocol ? "" : "anonymous"
                }
                n.__esModule = !0, n.default = r;
                var i = e("url"),
                    o = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(i),
                    a = void 0
            }, {
                url: 29
            }],
            125: [function(e, t, n) {
                "use strict";

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

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

                function o() {
                    return ++N
                }

                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 n = P.default.RETINA_PREFIX.exec(e);
                    return n ? parseFloat(n[1]) : void 0 !== t ? t : 1
                }

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

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

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

                function p() {
                    G = !0
                }

                function f(e) {
                    if (!G) {
                        if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
                            var t = ["\n %c %c %c PixiJS " + w.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 " + w.VERSION + " - " + e + " - http://www.pixijs.com/");
                        G = !0
                    }
                }

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

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

                function b() {
                    var e = void 0;
                    for (e in j) j[e].destroy();
                    for (e in U) U[e].destroy()
                }

                function _() {
                    var e = void 0;
                    for (e in j) delete j[e];
                    for (e in U) delete U[e]
                }

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

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

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

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

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

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

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

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

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

                function r(e) {
                    e.__plugins = {}, e.registerPlugin = function(t, n) {
                        e.__plugins[t] = n
                    }, 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
                    }
                }
                n.__esModule = !0, n.default = {
                    mixin: function(e) {
                        r(e)
                    }
                }
            }, {}],
            130: [function(e, t, n) {
                "use strict";

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

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

                function i(e) {
                    var t = e.mesh,
                        n = e.particles,
                        i = 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 r("You do not need to use a PIXI Stage any more, you can simply render any container."), e.Container
                            }
                        },
                        DisplayObjectContainer: {
                            get: function() {
                                return r("DisplayObjectContainer has been shortened to Container, please use Container from now on."), e.Container
                            }
                        },
                        Strip: {
                            get: function() {
                                return r("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 r("The Rope class has been moved to mesh.Rope, please use mesh.Rope from now on."), t.Rope
                            }
                        },
                        ParticleContainer: {
                            get: function() {
                                return r("The ParticleContainer class has been moved to particles.ParticleContainer, please use particles.ParticleContainer from now on."), n.ParticleContainer
                            }
                        },
                        MovieClip: {
                            get: function() {
                                return r("The MovieClip class has been moved to extras.AnimatedSprite, please use extras.AnimatedSprite."), i.AnimatedSprite
                            }
                        },
                        TilingSprite: {
                            get: function() {
                                return r("The TilingSprite class has been moved to extras.TilingSprite, please use extras.TilingSprite from now on."), i.TilingSprite
                            }
                        },
                        BitmapText: {
                            get: function() {
                                return r("The BitmapText class has been moved to extras.BitmapText, please use extras.BitmapText from now on."), i.BitmapText
                            }
                        },
                        blendModes: {
                            get: function() {
                                return r("The blendModes has been moved to BLEND_MODES, please use BLEND_MODES from now on."), e.BLEND_MODES
                            }
                        },
                        scaleModes: {
                            get: function() {
                                return r("The scaleModes has been moved to SCALE_MODES, please use SCALE_MODES from now on."), e.SCALE_MODES
                            }
                        },
                        BaseTextureCache: {
                            get: function() {
                                return r("The BaseTextureCache class has been moved to utils.BaseTextureCache, please use utils.BaseTextureCache from now on."), e.utils.BaseTextureCache
                            }
                        },
                        TextureCache: {
                            get: function() {
                                return r("The TextureCache class has been moved to utils.TextureCache, please use utils.TextureCache from now on."), e.utils.TextureCache
                            }
                        },
                        math: {
                            get: function() {
                                return r("The math namespace is deprecated, please access members already accessible on PIXI."), e
                            }
                        },
                        AbstractFilter: {
                            get: function() {
                                return r("AstractFilter has been renamed to Filter, please use PIXI.Filter"), e.Filter
                            }
                        },
                        TransformManual: {
                            get: function() {
                                return r("TransformManual has been renamed to TransformBase, please update your pixi-spine"), e.TransformBase
                            }
                        },
                        TARGET_FPMS: {
                            get: function() {
                                return r("PIXI.TARGET_FPMS has been deprecated, please use PIXI.settings.TARGET_FPMS"), e.settings.TARGET_FPMS
                            },
                            set: function(t) {
                                r("PIXI.TARGET_FPMS has been deprecated, please use PIXI.settings.TARGET_FPMS"), e.settings.TARGET_FPMS = t
                            }
                        },
                        FILTER_RESOLUTION: {
                            get: function() {
                                return r("PIXI.FILTER_RESOLUTION has been deprecated, please use PIXI.settings.FILTER_RESOLUTION"), e.settings.FILTER_RESOLUTION
                            },
                            set: function(t) {
                                r("PIXI.FILTER_RESOLUTION has been deprecated, please use PIXI.settings.FILTER_RESOLUTION"), e.settings.FILTER_RESOLUTION = t
                            }
                        },
                        RESOLUTION: {
                            get: function() {
                                return r("PIXI.RESOLUTION has been deprecated, please use PIXI.settings.RESOLUTION"), e.settings.RESOLUTION
                            },
                            set: function(t) {
                                r("PIXI.RESOLUTION has been deprecated, please use PIXI.settings.RESOLUTION"), e.settings.RESOLUTION = t
                            }
                        },
                        MIPMAP_TEXTURES: {
                            get: function() {
                                return r("PIXI.MIPMAP_TEXTURES has been deprecated, please use PIXI.settings.MIPMAP_TEXTURES"), e.settings.MIPMAP_TEXTURES
                            },
                            set: function(t) {
                                r("PIXI.MIPMAP_TEXTURES has been deprecated, please use PIXI.settings.MIPMAP_TEXTURES"), e.settings.MIPMAP_TEXTURES = t
                            }
                        },
                        SPRITE_BATCH_SIZE: {
                            get: function() {
                                return r("PIXI.SPRITE_BATCH_SIZE has been deprecated, please use PIXI.settings.SPRITE_BATCH_SIZE"), e.settings.SPRITE_BATCH_SIZE
                            },
                            set: function(t) {
                                r("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 r("PIXI.SPRITE_MAX_TEXTURES has been deprecated, please use PIXI.settings.SPRITE_MAX_TEXTURES"), e.settings.SPRITE_MAX_TEXTURES
                            },
                            set: function(t) {
                                r("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 r("PIXI.RETINA_PREFIX has been deprecated, please use PIXI.settings.RETINA_PREFIX"), e.settings.RETINA_PREFIX
                            },
                            set: function(t) {
                                r("PIXI.RETINA_PREFIX has been deprecated, please use PIXI.settings.RETINA_PREFIX"), e.settings.RETINA_PREFIX = t
                            }
                        },
                        DEFAULT_RENDER_OPTIONS: {
                            get: function() {
                                return r("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 n = u[t];
                        Object.defineProperty(e[n.parent], "DEFAULT", {
                            get: function() {
                                return r("PIXI." + n.parent + ".DEFAULT has been deprecated, please use PIXI.settings." + n.target), e.settings[n.target]
                            },
                            set: function(t) {
                                r("PIXI." + n.parent + ".DEFAULT has been deprecated, please use PIXI.settings." + n.target), e.settings[n.target] = t
                            }
                        })
                    }(c);
                    Object.defineProperties(e.settings, {
                        PRECISION: {
                            get: function() {
                                return r("PIXI.settings.PRECISION has been deprecated, please use PIXI.settings.PRECISION_FRAGMENT"), e.settings.PRECISION_FRAGMENT
                            },
                            set: function(t) {
                                r("PIXI.settings.PRECISION has been deprecated, please use PIXI.settings.PRECISION_FRAGMENT"), e.settings.PRECISION_FRAGMENT = t
                            }
                        }
                    }), i.AnimatedSprite && Object.defineProperties(i, {
                        MovieClip: {
                            get: function() {
                                return r("The MovieClip class has been renamed to AnimatedSprite, please use AnimatedSprite from now on."), i.AnimatedSprite
                            }
                        }
                    }), i && Object.defineProperties(i, {
                        TextureTransform: {
                            get: function() {
                                return r("The TextureTransform class has been renamed to TextureMatrix, please use PIXI.TextureMatrix from now on."), e.TextureMatrix
                            }
                        }
                    }), e.DisplayObject.prototype.generateTexture = function(e, t, n) {
                        return r("generateTexture has moved to the renderer, please use renderer.generateTexture(displayObject)"), e.generateTexture(this, t, n)
                    }, e.Graphics.prototype.generateTexture = function(e, t) {
                        return r("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 r("GroupD8.isSwapWidthHeight was renamed to GroupD8.isVertical"), e.GroupD8.isVertical(t)
                    }, e.RenderTexture.prototype.render = function(e, t, n, i) {
                        this.legacyRenderer.render(e, this, n, t, !i), r("RenderTexture.render is now deprecated, please use renderer.render(displayObject, renderTexture)")
                    }, e.RenderTexture.prototype.getImage = function(e) {
                        return r("RenderTexture.getImage is now deprecated, please use renderer.extract.image(target)"), this.legacyRenderer.extract.image(e)
                    }, e.RenderTexture.prototype.getBase64 = function(e) {
                        return r("RenderTexture.getBase64 is now deprecated, please use renderer.extract.base64(target)"), this.legacyRenderer.extract.base64(e)
                    }, e.RenderTexture.prototype.getCanvas = function(e) {
                        return r("RenderTexture.getCanvas is now deprecated, please use renderer.extract.canvas(target)"), this.legacyRenderer.extract.canvas(e)
                    }, e.RenderTexture.prototype.getPixels = function(e) {
                        return r("RenderTexture.getPixels is now deprecated, please use renderer.extract.pixels(target)"), this.legacyRenderer.pixels(e)
                    }, e.Sprite.prototype.setTexture = function(e) {
                        this.texture = e, r("setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture;")
                    }, i.BitmapText && (i.BitmapText.prototype.setText = function(e) {
                        this.text = e, r("setText is now deprecated, please use the text property, e.g : myBitmapText.text = 'my text';")
                    }), e.Text.prototype.setText = function(e) {
                        this.text = e, r("setText is now deprecated, please use the text property, e.g : myText.text = 'my text';")
                    }, e.Text.calculateFontProperties = function(t) {
                        return r("Text.calculateFontProperties is now deprecated, please use the TextMetrics.measureFont"), e.TextMetrics.measureFont(t)
                    }, Object.defineProperties(e.Text, {
                        fontPropertiesCache: {
                            get: function() {
                                return r("Text.fontPropertiesCache is deprecated"), e.TextMetrics._fonts
                            }
                        },
                        fontPropertiesCanvas: {
                            get: function() {
                                return r("Text.fontPropertiesCanvas is deprecated"), e.TextMetrics._canvas
                            }
                        },
                        fontPropertiesContext: {
                            get: function() {
                                return r("Text.fontPropertiesContext is deprecated"), e.TextMetrics._context
                            }
                        }
                    }), e.Text.prototype.setStyle = function(e) {
                        this.style = e, r("setStyle is now deprecated, please use the style property, e.g : myText.style = style;")
                    }, e.Text.prototype.determineFontProperties = function(t) {
                        return r("determineFontProperties is now deprecated, please use TextMetrics.measureFont method"), e.TextMetrics.measureFont(t)
                    }, e.Text.getFontStyle = function(t) {
                        return r("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() {
                                r("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) {
                                r("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(" "),
                                    n = -1;
                                this._fontSize = 26;
                                for (var i = 0; i < t.length; ++i)
                                    if (t[i].match(/(px|pt|em|%)/)) {
                                        n = i, this._fontSize = t[i];
                                        break
                                    }
                                this._fontWeight = "normal";
                                for (var o = 0; o < n; ++o)
                                    if (t[o].match(/(bold|bolder|lighter|100|200|300|400|500|600|700|800|900)/)) {
                                        this._fontWeight = t[o];
                                        break
                                    }
                                if (n > -1 && n < t.length - 1) {
                                    this._fontFamily = "";
                                    for (var a = n + 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, r("setFrame is now deprecated, please use the frame property, e.g: myTexture.frame = frame;")
                    }, e.Texture.addTextureToCache = function(t, n) {
                        e.Texture.addToCache(t, n), r("Texture.addTextureToCache is deprecated, please use Texture.addToCache from now on.")
                    }, e.Texture.removeTextureFromCache = function(t) {
                        return r("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 r("AstractFilter has been renamed to Filter, please use PIXI.Filter"), e.AbstractFilter
                            }
                        },
                        SpriteMaskFilter: {
                            get: function() {
                                return r("filters.SpriteMaskFilter is an undocumented alias, please use SpriteMaskFilter from now on."), e.SpriteMaskFilter
                            }
                        },
                        VoidFilter: {
                            get: function() {
                                return r("VoidFilter has been renamed to AlphaFilter, please use PIXI.filters.AlphaFilter"), o.AlphaFilter
                            }
                        }
                    }), e.utils.uuid = function() {
                        return r("utils.uuid() is deprecated, please use utils.uid() from now on."), e.utils.uid()
                    }, e.utils.canUseNewCanvasBlendModes = function() {
                        return r("utils.canUseNewCanvasBlendModes() is deprecated, please use CanvasTinter.canUseMultiply from now on"), e.CanvasTinter.canUseMultiply
                    };
                    var d = !0;
                    if (Object.defineProperty(e.utils, "_saidHello", {
                            set: function(e) {
                                e && (r("PIXI.utils._saidHello is deprecated, please use PIXI.utils.skipHello()"), this.skipHello()), d = e
                            },
                            get: function() {
                                return d
                            }
                        }), a.BasePrepare && (a.BasePrepare.prototype.register = function(e, t) {
                            return r("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() {
                                r("PIXI.CanvasPrepare.UPLOADS_PER_FRAME has been removed. Please set renderer.plugins.prepare.limiter.maxItemsPerFrame on your renderer")
                            },
                            get: function() {
                                return r("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() {
                                r("PIXI.WebGLPrepare.UPLOADS_PER_FRAME has been removed. Please set renderer.plugins.prepare.limiter.maxItemsPerFrame on your renderer")
                            },
                            get: function() {
                                return r("PIXI.WebGLPrepare.UPLOADS_PER_FRAME has been removed. Please use renderer.plugins.prepare.limiter"), NaN
                            }
                        }), s.Loader) {
                        var h = s.Resource,
                            p = s.Loader;
                        Object.defineProperties(h.prototype, {
                            isJson: {
                                get: function() {
                                    return r("The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`."), this.type === h.TYPE.JSON
                                }
                            },
                            isXml: {
                                get: function() {
                                    return r("The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`."), this.type === h.TYPE.XML
                                }
                            },
                            isImage: {
                                get: function() {
                                    return r("The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`."), this.type === h.TYPE.IMAGE
                                }
                            },
                            isAudio: {
                                get: function() {
                                    return r("The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`."), this.type === h.TYPE.AUDIO
                                }
                            },
                            isVideo: {
                                get: function() {
                                    return r("The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`."), this.type === h.TYPE.VIDEO
                                }
                            }
                        }), Object.defineProperties(p.prototype, {
                            before: {
                                get: function() {
                                    return r("The before() method is deprecated, please use pre()."), this.pre
                                }
                            },
                            after: {
                                get: function() {
                                    return r("The after() method is deprecated, please use use()."), this.use
                                }
                            }
                        })
                    }
                    l.interactiveTarget && Object.defineProperty(l.interactiveTarget, "defaultCursor", {
                        set: function(e) {
                            r("Property defaultCursor has been replaced with 'cursor'. "), this.cursor = e
                        },
                        get: function() {
                            return r("Property defaultCursor has been replaced with 'cursor'. "), this.cursor
                        }
                    }), l.InteractionManager && (Object.defineProperty(l.InteractionManager, "defaultCursorStyle", {
                        set: function(e) {
                            r("Property defaultCursorStyle has been replaced with 'cursorStyles.default'. "), this.cursorStyles.default = e
                        },
                        get: function() {
                            return r("Property defaultCursorStyle has been replaced with 'cursorStyles.default'. "), this.cursorStyles.default
                        }
                    }), Object.defineProperty(l.InteractionManager, "currentCursorStyle", {
                        set: function(e) {
                            r("Property currentCursorStyle has been removed.See the currentCursorMode property, which works differently."), this.currentCursorMode = e
                        },
                        get: function() {
                            return r("Property currentCursorStyle has been removed.See the currentCursorMode property, which works differently."), this.currentCursorMode
                        }
                    }))
                }
                n.__esModule = !0, n.default = i
            }, {}],
            132: [function(e, t, n) {
                "use strict";

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

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

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

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = function(e) {
                        function t(n, o) {
                            r(this, t);
                            var a = i(this, e.call(this, n[0] instanceof l.Texture ? n[0] : n[0].texture));
                            return a._textures = null, a._durations = null, a.textures = n, a._autoUpdate = !1 !== o, a.animationSpeed = 1, a.loop = !0, 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,
                                n = this.currentFrame;
                            if (null !== this._durations) {
                                var r = this._currentTime % 1 * this._durations[this.currentFrame];
                                for (r += t / 60 * 1e3; r < 0;) this._currentTime--, r += this._durations[this.currentFrame];
                                var i = Math.sign(this.animationSpeed * e);
                                for (this._currentTime = Math.floor(this._currentTime); r >= this._durations[this.currentFrame];) r -= this._durations[this.currentFrame] * i, this._currentTime += i;
                                this._currentTime += r / 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()) : n !== this.currentFrame && (this.loop && this.onLoop && (this.animationSpeed > 0 && this.currentFrame < n ? this.onLoop() : this.animationSpeed < 0 && this.currentFrame > n && this.onLoop()), this.updateTexture())
                        }, t.prototype.updateTexture = function() {
                            this._texture = this._textures[this.currentFrame], this._textureID = -1, this.cachedTint = 16777215, 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 n = [], r = 0; r < e.length; ++r) n.push(l.Texture.fromFrame(e[r]));
                            return new t(n)
                        }, t.fromImages = function(e) {
                            for (var n = [], r = 0; r < e.length; ++r) n.push(l.Texture.fromImage(e[r]));
                            return new t(n)
                        }, 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);
                n.default = u
            }, {
                "../core": 65
            }],
            136: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("../core"),
                    u = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(l),
                    c = e("../core/math/ObservablePoint"),
                    d = r(c),
                    h = e("../core/utils"),
                    p = e("../core/settings"),
                    f = r(p),
                    m = function(e) {
                        function t(n) {
                            var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                            i(this, t);
                            var a = o(this, e.call(this));
                            return a._textWidth = 0, a._textHeight = 0, a._glyphs = [], a._font = {
                                tint: void 0 !== r.tint ? r.tint : 16777215,
                                align: r.align || "left",
                                name: null,
                                size: 0
                            }, a.font = r.font, a._text = n, a._maxWidth = 0, a._maxLineHeight = 0, a._anchor = new d.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], n = this._font.size / e.size, r = new u.Point, i = [], o = [], a = null, s = 0, l = 0, c = 0, d = -1, h = 0, p = 0, f = 0, m = 0; m < this.text.length; m++) {
                                var g = this.text.charCodeAt(m);
                                if (/(\s)/.test(this.text.charAt(m)) && (d = m, h = s), /(?:\r\n|\r|\n)/.test(this.text.charAt(m))) o.push(s), l = Math.max(l, s), c++, r.x = 0, r.y += e.lineHeight, a = null;
                                else if (-1 !== d && this._maxWidth > 0 && r.x * n > this._maxWidth) u.utils.removeItems(i, d - p, m - d), m = d, d = -1, ++p, o.push(h), l = Math.max(l, h), c++, r.x = 0, r.y += e.lineHeight, a = null;
                                else {
                                    var b = e.chars[g];
                                    b && (a && b.kerning[a] && (r.x += b.kerning[a]), i.push({
                                        texture: b.texture,
                                        line: c,
                                        charCode: g,
                                        position: new u.Point(r.x + b.xOffset, r.y + b.yOffset)
                                    }), s = r.x + (b.texture.width + b.xOffset), r.x += b.xAdvance, f = Math.max(f, b.yOffset + b.texture.height), a = g)
                                }
                            }
                            o.push(s), l = Math.max(l, s);
                            for (var _ = [], y = 0; y <= c; y++) {
                                var v = 0;
                                "right" === this._font.align ? v = l - o[y] : "center" === this._font.align && (v = (l - o[y]) / 2), _.push(v)
                            }
                            for (var x = i.length, S = this.tint, w = 0; w < x; w++) {
                                var T = this._glyphs[w];
                                T ? T.texture = i[w].texture : (T = new u.Sprite(i[w].texture), this._glyphs.push(T)), T.position.x = (i[w].position.x + _[i[w].line]) * n, T.position.y = i[w].position.y * n, T.scale.x = T.scale.y = n, T.tint = S, T.parent || this.addChild(T)
                            }
                            for (var P = x; P < this._glyphs.length; ++P) this.removeChild(this._glyphs[P]);
                            if (this._textWidth = l * n, this._textHeight = (r.y + e.lineHeight) * n, 0 !== this.anchor.x || 0 !== this.anchor.y)
                                for (var C = 0; C < x; C++) this._glyphs[C].x -= this._textWidth * this.anchor.x, this._glyphs[C].y -= this._textHeight * this.anchor.y;
                            this._maxLineHeight = f * n
                        }, 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, n) {
                            var r = {},
                                i = e.getElementsByTagName("info")[0],
                                o = e.getElementsByTagName("common")[0],
                                a = e.getElementsByTagName("page")[0].getAttribute("file"),
                                s = (0, h.getResolutionOfUrl)(a, f.default.RESOLUTION);
                            r.font = i.getAttribute("face"), r.size = parseInt(i.getAttribute("size"), 10), r.lineHeight = parseInt(o.getAttribute("lineHeight"), 10) / s, r.chars = {};
                            for (var l = e.getElementsByTagName("char"), c = 0; c < l.length; c++) {
                                var d = l[c],
                                    p = parseInt(d.getAttribute("id"), 10),
                                    m = new u.Rectangle(parseInt(d.getAttribute("x"), 10) / s + n.frame.x / s, parseInt(d.getAttribute("y"), 10) / s + n.frame.y / s, parseInt(d.getAttribute("width"), 10) / s, parseInt(d.getAttribute("height"), 10) / s);
                                r.chars[p] = {
                                    xOffset: parseInt(d.getAttribute("xoffset"), 10) / s,
                                    yOffset: parseInt(d.getAttribute("yoffset"), 10) / s,
                                    xAdvance: parseInt(d.getAttribute("xadvance"), 10) / s,
                                    kerning: {},
                                    texture: new u.Texture(n.baseTexture, m)
                                }
                            }
                            for (var g = e.getElementsByTagName("kerning"), b = 0; b < g.length; b++) {
                                var _ = g[b],
                                    y = parseInt(_.getAttribute("first"), 10) / s,
                                    v = parseInt(_.getAttribute("second"), 10) / s,
                                    x = parseInt(_.getAttribute("amount"), 10) / s;
                                r.chars[v] && (r.chars[v].kerning[y] = x)
                            }
                            return t.fonts[r.font] = r, r
                        }, 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: "textHeight",
                            get: function() {
                                return this.validate(), this._textHeight
                            }
                        }]), t
                    }(u.Container);
                n.default = m, m.fonts = {}
            }, {
                "../core": 65,
                "../core/math/ObservablePoint": 68,
                "../core/settings": 101,
                "../core/utils": 125
            }],
            137: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = e("../core/sprites/canvas/CanvasTinter"),
                    c = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(u),
                    d = new l.Point,
                    h = function(e) {
                        function t(n) {
                            var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 100,
                                a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 100;
                            r(this, t);
                            var s = i(this, e.call(this, n));
                            return s.tileTransform = new l.TransformStatic, s._width = o, s._height = a, s._canvasPattern = null, s.uvTransform = n.transform || new l.TextureMatrix(n), 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 n = e.context,
                                    r = this.worldTransform,
                                    i = e.resolution,
                                    o = t.baseTexture,
                                    a = o.resolution,
                                    s = this.tilePosition.x / this.tileScale.x % t._frame.width * a,
                                    u = this.tilePosition.y / this.tileScale.y % t._frame.height * a;
                                if (this._textureID !== this._texture._updateID || this.cachedTint !== this.tint) {
                                    this._textureID = this._texture._updateID;
                                    var d = new l.CanvasRenderTarget(t._frame.width, t._frame.height, a);
                                    16777215 !== this.tint ? (this.tintedTexture = c.default.getTintedTexture(this, this.tint), d.context.drawImage(this.tintedTexture, 0, 0)) : d.context.drawImage(o.source, -t._frame.x * a, -t._frame.y * a), this.cachedTint = this.tint, this._canvasPattern = d.context.createPattern(d.canvas, "repeat")
                                }
                                n.globalAlpha = this.worldAlpha, n.setTransform(r.a * i, r.b * i, r.c * i, r.d * i, r.tx * i, r.ty * i), e.setBlendMode(this.blendMode), n.fillStyle = this._canvasPattern, n.scale(this.tileScale.x / a, this.tileScale.y / a);
                                var h = this.anchor.x * -this._width,
                                    p = this.anchor.y * -this._height;
                                this.uvRespectAnchor ? (n.translate(s, u), n.fillRect(-s + h, -u + p, this._width / this.tileScale.x * a, this._height / this.tileScale.y * a)) : (n.translate(s + h, u + p), n.fillRect(-s, -u, this._width / this.tileScale.x * a, this._height / this.tileScale.y * a))
                            }
                        }, t.prototype._calculateBounds = function() {
                            var e = this._width * -this._anchor._x,
                                t = this._height * -this._anchor._y,
                                n = this._width * (1 - this._anchor._x),
                                r = this._height * (1 - this._anchor._y);
                            this._bounds.addFrame(this.transform, e, t, n, r)
                        }, 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._x), 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, d);
                            var t = this._width,
                                n = this._height,
                                r = -t * this.anchor._x;
                            if (d.x >= r && d.x < r + t) {
                                var i = -n * this.anchor._y;
                                if (d.y >= i && d.y < i + n) 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, n, r) {
                            return new t(l.Texture.from(e), n, r)
                        }, t.fromFrame = function(e, n, r) {
                            var i = l.utils.TextureCache[e];
                            if (!i) throw new Error('The frameId "' + e + '" does not exist in the texture cache ' + this);
                            return new t(i, n, r)
                        }, t.fromImage = function(e, n, r, i, o) {
                            return new t(l.Texture.fromImage(e, i, o), n, r)
                        }, 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);
                n.default = h
            }, {
                "../core": 65,
                "../core/sprites/canvas/CanvasTinter": 104
            }],
            138: [function(e, t, n) {
                "use strict";

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

                function i(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 n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(o),
                    s = e("../core/textures/Texture"),
                    l = r(s),
                    u = e("../core/textures/BaseTexture"),
                    c = r(u),
                    d = e("../core/utils"),
                    h = a.DisplayObject,
                    p = new a.Matrix;
                h.prototype._cacheAsBitmap = !1, h.prototype._cacheData = !1;
                var f = function e() {
                    i(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(h.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 f), 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)
                            }
                        }
                    }
                }), h.prototype._renderCachedWebGL = function(e) {
                    !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObject(e), this._cacheData.sprite._transformID = -1, this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._renderWebGL(e))
                }, h.prototype._initCachedDisplayObject = function(e) {
                    if (!this._cacheData || !this._cacheData.sprite) {
                        var t = this.alpha;
                        this.alpha = 1, e.currentRenderer.flush();
                        var n = this.getLocalBounds().clone();
                        if (this._filters) {
                            var r = this._filters[0].padding;
                            n.pad(r)
                        }
                        var i = e._activeRenderTarget,
                            o = e.filterManager.filterStack,
                            s = a.RenderTexture.create(0 | n.width, 0 | n.height),
                            u = "cacheAsBitmap_" + (0, d.uid)();
                        this._cacheData.textureCacheId = u, c.default.addToCache(s.baseTexture, u), l.default.addToCache(s, u);
                        var h = p;
                        h.tx = -n.x, h.ty = -n.y, this.transform.worldTransform.identity(), this.renderWebGL = this._cacheData.originalRenderWebGL, e.render(this, s, !0, h, !0), e.bindRenderTarget(i), e.filterManager.filterStack = o, this.renderWebGL = this._renderCachedWebGL, this.updateTransform = this.displayObjectUpdateTransform, this._mask = null, this.filterArea = null;
                        var f = new a.Sprite(s);
                        f.transform.worldTransform = this.transform.worldTransform, f.anchor.x = -n.x / n.width, f.anchor.y = -n.y / n.height, f.alpha = t, f._bounds = this._bounds, this._calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._cacheData.sprite = f, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = e._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = f.containsPoint.bind(f)
                    }
                }, h.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))
                }, h.prototype._initCachedDisplayObjectCanvas = function(e) {
                    if (!this._cacheData || !this._cacheData.sprite) {
                        var t = this.getLocalBounds(),
                            n = this.alpha;
                        this.alpha = 1;
                        var r = e.context,
                            i = a.RenderTexture.create(0 | t.width, 0 | t.height),
                            o = "cacheAsBitmap_" + (0, d.uid)();
                        this._cacheData.textureCacheId = o, c.default.addToCache(i.baseTexture, o), l.default.addToCache(i, o);
                        var s = p;
                        this.transform.localTransform.copy(s), s.invert(), s.tx -= t.x, s.ty -= t.y, this.renderCanvas = this._cacheData.originalRenderCanvas, e.render(this, i, !0, s, !1), e.context = r, this.renderCanvas = this._renderCachedCanvas, this._calculateBounds = this._calculateCachedBounds, this._mask = null, this.filterArea = null;
                        var u = new a.Sprite(i);
                        u.transform.worldTransform = this.transform.worldTransform, u.anchor.x = -t.x / t.width, u.anchor.y = -t.y / t.height, u._bounds = this._bounds, u.alpha = n, this.parent ? this.updateTransform() : (this.parent = e._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.updateTransform = this.displayObjectUpdateTransform, this._cacheData.sprite = u, this.containsPoint = u.containsPoint.bind(u)
                    }
                }, h.prototype._calculateCachedBounds = function() {
                    this._cacheData.sprite._calculateBounds()
                }, h.prototype._getCachedLocalBounds = function() {
                    return this._cacheData.sprite.getLocalBounds()
                }, h.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
                }, h.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, n) {
                "use strict";
                var r = e("../core"),
                    i = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(r);
                i.DisplayObject.prototype.name = null, i.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, n) {
                "use strict";
                var r = e("../core"),
                    i = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(r);
                i.DisplayObject.prototype.getGlobalPosition = function() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new i.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, n) {
                "use strict";

                function r(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                n.__esModule = !0, n.BitmapText = n.TilingSpriteRenderer = n.TilingSprite = n.AnimatedSprite = void 0;
                var i = e("./AnimatedSprite");
                Object.defineProperty(n, "AnimatedSprite", {
                    enumerable: !0,
                    get: function() {
                        return r(i).default
                    }
                });
                var o = e("./TilingSprite");
                Object.defineProperty(n, "TilingSprite", {
                    enumerable: !0,
                    get: function() {
                        return r(o).default
                    }
                });
                var a = e("./webgl/TilingSpriteRenderer");
                Object.defineProperty(n, "TilingSpriteRenderer", {
                    enumerable: !0,
                    get: function() {
                        return r(a).default
                    }
                });
                var s = e("./BitmapText");
                Object.defineProperty(n, "BitmapText", {
                    enumerable: !0,
                    get: function() {
                        return r(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, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("../../core"),
                    s = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(a),
                    l = e("../../core/const"),
                    u = (e("path"), new s.Matrix),
                    c = function(e) {
                        function t(n) {
                            r(this, t);
                            var o = i(this, e.call(this, n));
                            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,
                                n = this.quad;
                            t.bindVao(n.vao);
                            var r = n.vertices;
                            r[0] = r[6] = e._width * -e.anchor.x, r[1] = r[3] = e._height * -e.anchor.y, r[2] = r[4] = e._width * (1 - e.anchor.x), r[5] = r[7] = e._height * (1 - e.anchor.y), e.uvRespectAnchor && (r = n.uvs, r[0] = r[6] = -e.anchor.x, r[1] = r[3] = -e.anchor.y, r[2] = r[4] = 1 - e.anchor.x, r[5] = r[7] = 1 - e.anchor.y), n.upload();
                            var i = e._texture,
                                o = i.baseTexture,
                                a = e.tileTransform.localTransform,
                                c = e.uvTransform,
                                d = o.isPowerOfTwo && i.frame.width === o.width && i.frame.height === o.height;
                            d && (o._glTextures[t.CONTEXT_UID] ? d = o.wrapMode !== l.WRAP_MODES.CLAMP : o.wrapMode === l.WRAP_MODES.CLAMP && (o.wrapMode = l.WRAP_MODES.REPEAT));
                            var h = d ? this.simpleShader : this.shader;
                            t.bindShader(h);
                            var p = i.width,
                                f = i.height,
                                m = e._width,
                                g = e._height;
                            u.set(a.a * p / m, a.b * p / g, a.c * f / m, a.d * f / g, a.tx / m, a.ty / g), u.invert(), d ? u.prepend(c.mapCoord) : (h.uniforms.uMapCoord = c.mapCoord.toArray(!0), h.uniforms.uClampFrame = c.uClampFrame, h.uniforms.uClampOffset = c.uClampOffset), h.uniforms.uTransform = u.toArray(!0), h.uniforms.uColor = s.utils.premultiplyTintToRgba(e.tint, e.worldAlpha, h.uniforms.uColor, o.premultipliedAlpha), h.uniforms.translationMatrix = e.transform.worldTransform.toArray(!0), h.uniforms.uSampler = t.bindTexture(i), t.setBlendMode(s.utils.correctBlendMode(e.blendMode, o.premultipliedAlpha)), n.vao.draw(this.renderer.gl.TRIANGLES, 6, 0)
                        }, t
                    }(s.ObjectRenderer);
                n.default = c, s.WebGLRenderer.registerPlugin("tilingSprite", c)
            }, {
                "../../core": 65,
                "../../core/const": 46,
                path: 23
            }],
            143: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = (e("path"), function(e) {
                        function t() {
                            var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
                            r(this, t);
                            var o = i(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 = n, 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));
                n.default = u
            }, {
                "../../core": 65,
                path: 23
            }],
            144: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("../../core"),
                    u = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(l),
                    c = e("./BlurXFilter"),
                    d = r(c),
                    h = e("./BlurYFilter"),
                    p = r(h),
                    f = function(e) {
                        function t(n, r, a, s) {
                            i(this, t);
                            var l = o(this, e.call(this));
                            return l.blurXFilter = new d.default(n, r, a, s), l.blurYFilter = new p.default(n, r, a, s), l.padding = 0, l.resolution = a || u.settings.RESOLUTION, l.quality = r || 4, l.blur = n || 8, l
                        }
                        return a(t, e), t.prototype.apply = function(e, t, n) {
                            var r = e.getRenderTarget(!0);
                            this.blurXFilter.apply(e, t, r, !0), this.blurYFilter.apply(e, r, n, !1), e.returnRenderTarget(r)
                        }, 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);
                n.default = f
            }, {
                "../../core": 65,
                "./BlurXFilter": 145,
                "./BlurYFilter": 146
            }],
            145: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("../../core"),
                    u = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(l),
                    c = e("./generateBlurVertSource"),
                    d = r(c),
                    h = e("./generateBlurFragSource"),
                    p = r(h),
                    f = e("./getMaxBlurKernelSize"),
                    m = r(f),
                    g = function(e) {
                        function t(n, r, a, s) {
                            i(this, t), s = s || 5;
                            var l = (0, d.default)(s, !0),
                                c = (0, p.default)(s),
                                h = o(this, e.call(this, l, c));
                            return h.resolution = a || u.settings.RESOLUTION, h._quality = 0, h.quality = r || 4, h.strength = n || 8, h.firstRun = !0, h
                        }
                        return a(t, e), t.prototype.apply = function(e, t, n, r) {
                            if (this.firstRun) {
                                var i = e.renderer.gl,
                                    o = (0, m.default)(i);
                                this.vertexSrc = (0, d.default)(o, !0), this.fragmentSrc = (0, p.default)(o), this.firstRun = !1
                            }
                            if (this.uniforms.strength = 1 / n.size.width * (n.size.width / t.size.width), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, 1 === this.passes) e.applyFilter(this, t, n, r);
                            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, n, r), 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);
                n.default = g
            }, {
                "../../core": 65,
                "./generateBlurFragSource": 147,
                "./generateBlurVertSource": 148,
                "./getMaxBlurKernelSize": 149
            }],
            146: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var s = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    l = e("../../core"),
                    u = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(l),
                    c = e("./generateBlurVertSource"),
                    d = r(c),
                    h = e("./generateBlurFragSource"),
                    p = r(h),
                    f = e("./getMaxBlurKernelSize"),
                    m = r(f),
                    g = function(e) {
                        function t(n, r, a, s) {
                            i(this, t), s = s || 5;
                            var l = (0, d.default)(s, !1),
                                c = (0, p.default)(s),
                                h = o(this, e.call(this, l, c));
                            return h.resolution = a || u.settings.RESOLUTION, h._quality = 0, h.quality = r || 4, h.strength = n || 8, h.firstRun = !0, h
                        }
                        return a(t, e), t.prototype.apply = function(e, t, n, r) {
                            if (this.firstRun) {
                                var i = e.renderer.gl,
                                    o = (0, m.default)(i);
                                this.vertexSrc = (0, d.default)(o, !1), this.fragmentSrc = (0, p.default)(o), this.firstRun = !1
                            }
                            if (this.uniforms.strength = 1 / n.size.height * (n.size.height / t.size.height), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, 1 === this.passes) e.applyFilter(this, t, n, r);
                            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, n, r), 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);
                n.default = g
            }, {
                "../../core": 65,
                "./generateBlurFragSource": 147,
                "./generateBlurVertSource": 148,
                "./getMaxBlurKernelSize": 149
            }],
            147: [function(e, t, n) {
                "use strict";

                function r(e) {
                    for (var t = i[e], n = t.length, r = 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 >= n && (l = e - u - 1), c = c.replace("%value%", t[l]), a += c, a += "\n"
                    }
                    return r = r.replace("%blur%", a), r = r.replace("%size%", e)
                }
                n.__esModule = !0, n.default = r;
                var i = {
                        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, n) {
                "use strict";

                function r(e, t) {
                    var n = Math.ceil(e / 2),
                        r = i,
                        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 - (n - 1) + ".0"), o += l, o += "\n"
                    }
                    return r = r.replace("%blur%", o), r = r.replace("%size%", e)
                }
                n.__esModule = !0, n.default = r;
                var i = ["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, n) {
                "use strict";

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

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = (e("path"), function(e) {
                        function t() {
                            r(this, t);
                            var n = i(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 n.uniforms.m = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], n.alpha = 1, n
                        }
                        return o(t, e), t.prototype._loadMatrix = function(e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                                n = e;
                            t && (this._multiply(n, this.uniforms.m, e), n = this._colorMatrix(n)), this.uniforms.m = n
                        }, t.prototype._multiply = function(e, t, n) {
                            return e[0] = t[0] * n[0] + t[1] * n[5] + t[2] * n[10] + t[3] * n[15], e[1] = t[0] * n[1] + t[1] * n[6] + t[2] * n[11] + t[3] * n[16], e[2] = t[0] * n[2] + t[1] * n[7] + t[2] * n[12] + t[3] * n[17], e[3] = t[0] * n[3] + t[1] * n[8] + t[2] * n[13] + t[3] * n[18], e[4] = t[0] * n[4] + t[1] * n[9] + t[2] * n[14] + t[3] * n[19] + t[4], e[5] = t[5] * n[0] + t[6] * n[5] + t[7] * n[10] + t[8] * n[15], e[6] = t[5] * n[1] + t[6] * n[6] + t[7] * n[11] + t[8] * n[16], e[7] = t[5] * n[2] + t[6] * n[7] + t[7] * n[12] + t[8] * n[17], e[8] = t[5] * n[3] + t[6] * n[8] + t[7] * n[13] + t[8] * n[18], e[9] = t[5] * n[4] + t[6] * n[9] + t[7] * n[14] + t[8] * n[19] + t[9], e[10] = t[10] * n[0] + t[11] * n[5] + t[12] * n[10] + t[13] * n[15], e[11] = t[10] * n[1] + t[11] * n[6] + t[12] * n[11] + t[13] * n[16], e[12] = t[10] * n[2] + t[11] * n[7] + t[12] * n[12] + t[13] * n[17], e[13] = t[10] * n[3] + t[11] * n[8] + t[12] * n[13] + t[13] * n[18], e[14] = t[10] * n[4] + t[11] * n[9] + t[12] * n[14] + t[13] * n[19] + t[14], e[15] = t[15] * n[0] + t[16] * n[5] + t[17] * n[10] + t[18] * n[15], e[16] = t[15] * n[1] + t[16] * n[6] + t[17] * n[11] + t[18] * n[16], e[17] = t[15] * n[2] + t[16] * n[7] + t[17] * n[12] + t[18] * n[17], e[18] = t[15] * n[3] + t[16] * n[8] + t[17] * n[13] + t[18] * n[18], e[19] = t[15] * n[4] + t[16] * n[9] + t[17] * n[14] + t[18] * n[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 n = [e, 0, 0, 0, 0, 0, e, 0, 0, 0, 0, 0, e, 0, 0, 0, 0, 0, 1, 0];
                            this._loadMatrix(n, t)
                        }, t.prototype.greyscale = function(e, t) {
                            var n = [e, e, e, 0, 0, e, e, e, 0, 0, e, e, e, 0, 0, 0, 0, 0, 1, 0];
                            this._loadMatrix(n, 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 n = Math.cos(e),
                                r = Math.sin(e),
                                i = Math.sqrt,
                                o = 1 / 3,
                                a = i(o),
                                s = n + (1 - n) * o,
                                l = o * (1 - n) - a * r,
                                u = o * (1 - n) + a * r,
                                c = o * (1 - n) + a * r,
                                d = n + o * (1 - n),
                                h = o * (1 - n) - a * r,
                                p = o * (1 - n) - a * r,
                                f = o * (1 - n) + a * r,
                                m = n + o * (1 - n),
                                g = [s, l, u, 0, 0, c, d, h, 0, 0, p, f, m, 0, 0, 0, 0, 0, 1, 0];
                            this._loadMatrix(g, t)
                        }, t.prototype.contrast = function(e, t) {
                            var n = (e || 0) + 1,
                                r = -.5 * (n - 1),
                                i = [n, 0, 0, 0, r, 0, n, 0, 0, r, 0, 0, n, 0, r, 0, 0, 0, 1, 0];
                            this._loadMatrix(i, t)
                        }, t.prototype.saturate = function() {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
                                t = arguments[1],
                                n = 2 * e / 3 + 1,
                                r = -.5 * (n - 1),
                                i = [n, r, r, 0, 0, r, n, r, 0, 0, r, r, n, 0, 0, 0, 0, 0, 1, 0];
                            this._loadMatrix(i, t)
                        }, t.prototype.desaturate = function() {
                            this.saturate(-1)
                        }, t.prototype.negative = function(e) {
                            var t = [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 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, n, r, i) {
                            e = e || .2, t = t || .15, n = n || 16770432, r = r || 3375104;
                            var o = (n >> 16 & 255) / 255,
                                a = (n >> 8 & 255) / 255,
                                s = (255 & n) / 255,
                                l = (r >> 16 & 255) / 255,
                                u = (r >> 8 & 255) / 255,
                                c = (255 & r) / 255,
                                d = [.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(d, i)
                        }, t.prototype.night = function(e, t) {
                            e = e || .1;
                            var n = [-2 * e, -e, 0, 0, 0, -e, 0, e, 0, 0, 0, e, 2 * e, 0, 0, 0, 0, 0, 1, 0];
                            this._loadMatrix(n, t)
                        }, t.prototype.predator = function(e, t) {
                            var n = [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(n, 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));
                n.default = u, u.prototype.grayscale = u.prototype.greyscale
            }, {
                "../../core": 65,
                path: 23
            }],
            151: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = (e("path"), function(e) {
                        function t(n, o) {
                            r(this, t);
                            var a = new l.Matrix;
                            n.renderable = !1;
                            var s = i(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 filterClamp;\n\nvoid main(void)\n{\n   vec4 map =  texture2D(mapSampler, vFilterCoord);\n\n   map -= 0.5;\n   map.xy *= scale;\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 = n, s.maskMatrix = a, s.uniforms.mapSampler = n._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, n) {
                            var r = 1 / n.destinationFrame.width * (n.size.width / t.size.width);
                            this.uniforms.filterMatrix = e.calculateSpriteMatrix(this.maskMatrix, this.maskSprite), this.uniforms.scale.x = this.scale.x * r, this.uniforms.scale.y = this.scale.y * r, e.applyFilter(this, t, n)
                        }, a(t, [{
                            key: "map",
                            get: function() {
                                return this.uniforms.mapSampler
                            },
                            set: function(e) {
                                this.uniforms.mapSampler = e
                            }
                        }]), t
                    }(l.Filter));
                n.default = u
            }, {
                "../../core": 65,
                path: 23
            }],
            152: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("../../core"),
                    s = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(a),
                    l = (e("path"), function(e) {
                        function t() {
                            return r(this, t), i(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));
                n.default = l
            }, {
                "../../core": 65,
                path: 23
            }],
            153: [function(e, t, n) {
                "use strict";

                function r(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                n.__esModule = !0;
                var i = e("./fxaa/FXAAFilter");
                Object.defineProperty(n, "FXAAFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(i).default
                    }
                });
                var o = e("./noise/NoiseFilter");
                Object.defineProperty(n, "NoiseFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(o).default
                    }
                });
                var a = e("./displacement/DisplacementFilter");
                Object.defineProperty(n, "DisplacementFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(a).default
                    }
                });
                var s = e("./blur/BlurFilter");
                Object.defineProperty(n, "BlurFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(s).default
                    }
                });
                var l = e("./blur/BlurXFilter");
                Object.defineProperty(n, "BlurXFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(l).default
                    }
                });
                var u = e("./blur/BlurYFilter");
                Object.defineProperty(n, "BlurYFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(u).default
                    }
                });
                var c = e("./colormatrix/ColorMatrixFilter");
                Object.defineProperty(n, "ColorMatrixFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(c).default
                    }
                });
                var d = e("./alpha/AlphaFilter");
                Object.defineProperty(n, "AlphaFilter", {
                    enumerable: !0,
                    get: function() {
                        return r(d).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, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = (e("path"), function(e) {
                        function t() {
                            var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .5,
                                o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Math.random();
                            r(this, t);
                            var a = i(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 = n, 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));
                n.default = u
            }, {
                "../../core": 65,
                path: 23
            }],
            155: [function(e, t, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    o = e("../core"),
                    a = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(o),
                    s = function() {
                        function e() {
                            r(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, n) {
                            return e.worldTransform.applyInverse(n || this.global, t)
                        }, e.prototype._copyEvent = function(e) {
                            e.isPrimary && (this.isPrimary = !0), this.button = e.button, this.buttons = e.buttons, 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
                        }, i(e, [{
                            key: "pointerId",
                            get: function() {
                                return this.identifier
                            }
                        }]), e
                    }();
                n.default = s
            }, {
                "../core": 65
            }],
            156: [function(e, t, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e() {
                        r(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
                }();
                n.default = i
            }, {}],
            157: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__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 n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(l),
                    c = e("./InteractionData"),
                    d = r(c),
                    h = e("./InteractionEvent"),
                    p = r(h),
                    f = e("./InteractionTrackingData"),
                    m = r(f),
                    g = e("eventemitter3"),
                    b = r(g),
                    _ = e("./interactiveTarget"),
                    y = r(_);
                u.utils.mixins.delayMixin(u.DisplayObject.prototype, y.default);
                var v = "MOUSE",
                    x = {
                        target: null,
                        data: {
                            global: null
                        }
                    },
                    S = function(e) {
                        function t(n, r) {
                            i(this, t);
                            var a = o(this, e.call(this));
                            return r = r || {}, a.renderer = n, a.autoPreventDefault = void 0 === r.autoPreventDefault || r.autoPreventDefault, a.interactionFrequency = r.interactionFrequency || 10, a.mouse = new d.default, a.mouse.identifier = v, a.mouse.global.set(-999999), a.activeInteractionData = {}, a.activeInteractionData[v] = a.mouse, a.interactionDataPool = [], a.eventData = new p.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 n = this.activeInteractionData[t];
                                        if (n.originalEvent && "touch" !== n.pointerType) {
                                            var r = this.configureInteractionEventForDOMEvent(this.eventData, n.originalEvent, n);
                                            this.processInteractive(r, 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, n) {
                            n.stopped || (n.currentTarget = e, n.type = t, e.emit(t, n), e[t] && e[t](n))
                        }, t.prototype.mapPositionToPoint = function(e, t, n) {
                            var r = void 0;
                            r = this.interactionDOMElement.parentElement ? this.interactionDOMElement.getBoundingClientRect() : {
                                x: 0,
                                y: 0,
                                width: 0,
                                height: 0
                            };
                            var i = navigator.isCocoonJS ? this.resolution : 1 / this.resolution;
                            e.x = (t - r.left) * (this.interactionDOMElement.width / r.width) * i, e.y = (n - r.top) * (this.interactionDOMElement.height / r.height) * i
                        }, t.prototype.processInteractive = function(e, t, n, r, i) {
                            if (!t || !t.visible) return !1;
                            var o = e.data.global;
                            i = t.interactive || i;
                            var a = !1,
                                s = i;
                            if (t.hitArea ? s = !1 : r && t._mask && (t._mask.containsPoint(o) || (r = !1)), t.interactiveChildren && t.children)
                                for (var l = t.children, u = l.length - 1; u >= 0; u--) {
                                    var c = l[u],
                                        d = this.processInteractive(e, c, n, r, s);
                                    if (d) {
                                        if (!c.parent) continue;
                                        s = !1, d && (e.target && (r = !1), a = !0)
                                    }
                                }
                            return i && (r && !e.target && (t.hitArea ? (t.worldTransform.applyInverse(o, this._tempPoint), t.hitArea.contains(this._tempPoint.x, this._tempPoint.y) && (a = !0)) : t.containsPoint && t.containsPoint(o) && (a = !0)), t.interactive && (a && !e.target && (e.target = t), n && n(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 n = t.length, r = 0; r < n; r++) {
                                    var i = t[r],
                                        o = this.getInteractionDataForPointerId(i),
                                        a = this.configureInteractionEventForDOMEvent(this.eventData, i, o);
                                    if (a.data.originalEvent = e, this.processInteractive(a, this.renderer._lastObjectRendered, this.processPointerDown, !0), this.emit("pointerdown", a), "touch" === i.pointerType) this.emit("touchstart", a);
                                    else if ("mouse" === i.pointerType || "pen" === i.pointerType) {
                                        var s = 2 === i.button;
                                        this.emit(s ? "rightdown" : "mousedown", this.eventData)
                                    }
                                }
                            }
                        }, t.prototype.processPointerDown = function(e, t, n) {
                            var r = e.data,
                                i = e.data.identifier;
                            if (n)
                                if (t.trackedPointers[i] || (t.trackedPointers[i] = new m.default(i)), this.dispatchEvent(t, "pointerdown", e), "touch" === r.pointerType) this.dispatchEvent(t, "touchstart", e);
                                else if ("mouse" === r.pointerType || "pen" === r.pointerType) {
                                var o = 2 === r.button;
                                o ? t.trackedPointers[i].rightDown = !0 : t.trackedPointers[i].leftDown = !0, this.dispatchEvent(t, o ? "rightdown" : "mousedown", e)
                            }
                        }, t.prototype.onPointerComplete = function(e, t, n) {
                            for (var r = this.normalizeToPointerData(e), i = r.length, o = e.target !== this.interactionDOMElement ? "outside" : "", a = 0; a < i; a++) {
                                var s = r[a],
                                    l = this.getInteractionDataForPointerId(s),
                                    u = this.configureInteractionEventForDOMEvent(this.eventData, s, l);
                                if (u.data.originalEvent = e, this.processInteractive(u, this.renderer._lastObjectRendered, n, 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 n = e.data,
                                r = e.data.identifier;
                            void 0 !== t.trackedPointers[r] && (delete t.trackedPointers[r], this.dispatchEvent(t, "pointercancel", e), "touch" === n.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, n) {
                            var r = e.data,
                                i = e.data.identifier,
                                o = t.trackedPointers[i],
                                a = "touch" === r.pointerType;
                            if ("mouse" === r.pointerType || "pen" === r.pointerType) {
                                var s = 2 === r.button,
                                    l = m.default.FLAGS,
                                    u = s ? l.RIGHT_DOWN : l.LEFT_DOWN,
                                    c = void 0 !== o && o.flags & u;
                                n ? (this.dispatchEvent(t, s ? "rightup" : "mouseup", e), c && this.dispatchEvent(t, s ? "rightclick" : "click", e)) : c && this.dispatchEvent(t, s ? "rightupoutside" : "mouseupoutside", e), o && (s ? o.rightDown = !1 : o.leftDown = !1)
                            }
                            n ? (this.dispatchEvent(t, "pointerup", e), a && this.dispatchEvent(t, "touchend", e), o && (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[i]
                        }, t.prototype.onPointerMove = function(e) {
                            if (!this.supportsTouchEvents || "touch" !== e.pointerType) {
                                var t = this.normalizeToPointerData(e);
                                "mouse" === t[0].pointerType && (this.didMove = !0, this.cursor = null);
                                for (var n = t.length, r = 0; r < n; r++) {
                                    var i = t[r],
                                        o = this.getInteractionDataForPointerId(i),
                                        a = this.configureInteractionEventForDOMEvent(this.eventData, i, o);
                                    a.data.originalEvent = e;
                                    var s = "touch" !== i.pointerType || this.moveWhenInside;
                                    this.processInteractive(a, this.renderer._lastObjectRendered, this.processPointerMove, s), this.emit("pointermove", a), "touch" === i.pointerType && this.emit("touchmove", a), "mouse" !== i.pointerType && "pen" !== i.pointerType || this.emit("mousemove", a)
                                }
                                "mouse" === t[0].pointerType && this.setCursorMode(this.cursor)
                            }
                        }, t.prototype.processPointerMove = function(e, t, n) {
                            var r = e.data,
                                i = "touch" === r.pointerType,
                                o = "mouse" === r.pointerType || "pen" === r.pointerType;
                            o && this.processPointerOverOut(e, t, n), this.moveWhenInside && !n || (this.dispatchEvent(t, "pointermove", e), i && 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),
                                    n = t[0];
                                "mouse" === n.pointerType && (this.mouseOverRenderer = !1, this.setCursorMode(null));
                                var r = this.getInteractionDataForPointerId(n),
                                    i = this.configureInteractionEventForDOMEvent(this.eventData, n, r);
                                i.data.originalEvent = n, this.processInteractive(i, this.renderer._lastObjectRendered, this.processPointerOverOut, !1), this.emit("pointerout", i), "mouse" === n.pointerType || "pen" === n.pointerType ? this.emit("mouseout", i) : this.releaseInteractionDataForPointerId(r.identifier)
                            }
                        }, t.prototype.processPointerOverOut = function(e, t, n) {
                            var r = e.data,
                                i = e.data.identifier,
                                o = "mouse" === r.pointerType || "pen" === r.pointerType,
                                a = t.trackedPointers[i];
                            n && !a && (a = t.trackedPointers[i] = new m.default(i)), void 0 !== a && (n && 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[i]))
                        }, t.prototype.onPointerOver = function(e) {
                            var t = this.normalizeToPointerData(e),
                                n = t[0],
                                r = this.getInteractionDataForPointerId(n),
                                i = this.configureInteractionEventForDOMEvent(this.eventData, n, r);
                            i.data.originalEvent = n, "mouse" === n.pointerType && (this.mouseOverRenderer = !0), this.emit("pointerover", i), "mouse" !== n.pointerType && "pen" !== n.pointerType || this.emit("mouseover", i)
                        }, t.prototype.getInteractionDataForPointerId = function(e) {
                            var t = e.pointerId,
                                n = void 0;
                            return t === v || "mouse" === e.pointerType ? n = this.mouse : this.activeInteractionData[t] ? n = this.activeInteractionData[t] : (n = this.interactionDataPool.pop() || new d.default, n.identifier = t, this.activeInteractionData[t] = n), n._copyEvent(e), n
                        }, 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, n) {
                            return e.data = n, this.mapPositionToPoint(n.global, t.clientX, t.clientY), navigator.isCocoonJS && "touch" === t.pointerType && (n.global.x = n.global.x / this.resolution, n.global.y = n.global.y / this.resolution), "touch" === t.pointerType && (t.globalX = n.global.x, t.globalY = n.global.y), n.originalEvent = t, e._reset(), e
                        }, t.prototype.normalizeToPointerData = function(e) {
                            var t = [];
                            if (this.supportsTouchEvents && e instanceof TouchEvent)
                                for (var n = 0, r = e.changedTouches.length; n < r; n++) {
                                    var i = e.changedTouches[n];
                                    void 0 === i.button && (i.button = e.touches.length ? 1 : 0), void 0 === i.buttons && (i.buttons = e.touches.length ? 1 : 0), void 0 === i.isPrimary && (i.isPrimary = 1 === e.touches.length && "touchstart" === e.type), void 0 === i.width && (i.width = i.radiusX || 1), void 0 === i.height && (i.height = i.radiusY || 1), void 0 === i.tiltX && (i.tiltX = 0), void 0 === i.tiltY && (i.tiltY = 0), void 0 === i.pointerType && (i.pointerType = "touch"), void 0 === i.pointerId && (i.pointerId = i.identifier || 0), void 0 === i.pressure && (i.pressure = i.force || .5), i.twist = 0, i.tangentialPressure = 0, void 0 === i.layerX && (i.layerX = i.offsetX = i.clientX), void 0 === i.layerY && (i.layerY = i.offsetY = i.clientY), i.isNormalized = !0, t.push(i)
                                } 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 = v), void 0 === e.pressure && (e.pressure = .5), e.twist = 0, 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
                    }(b.default);
                n.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, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    o = function() {
                        function e(t) {
                            r(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
                        }, i(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
                    }();
                n.default = o, o.FLAGS = Object.freeze({
                    NONE: 0,
                    OVER: 1,
                    LEFT_DOWN: 2,
                    RIGHT_DOWN: 4
                })
            }, {}],
            159: [function(e, t, n) {
                "use strict";

                function r(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                n.__esModule = !0;
                var i = e("./InteractionData");
                Object.defineProperty(n, "InteractionData", {
                    enumerable: !0,
                    get: function() {
                        return r(i).default
                    }
                });
                var o = e("./InteractionManager");
                Object.defineProperty(n, "InteractionManager", {
                    enumerable: !0,
                    get: function() {
                        return r(o).default
                    }
                });
                var a = e("./interactiveTarget");
                Object.defineProperty(n, "interactiveTarget", {
                    enumerable: !0,
                    get: function() {
                        return r(a).default
                    }
                });
                var s = e("./InteractionTrackingData");
                Object.defineProperty(n, "InteractionTrackingData", {
                    enumerable: !0,
                    get: function() {
                        return r(s).default
                    }
                });
                var l = e("./InteractionEvent");
                Object.defineProperty(n, "InteractionEvent", {
                    enumerable: !0,
                    get: function() {
                        return r(l).default
                    }
                })
            }, {
                "./InteractionData": 155,
                "./InteractionEvent": 156,
                "./InteractionManager": 157,
                "./InteractionTrackingData": 158,
                "./interactiveTarget": 160
            }],
            160: [function(e, t, n) {
                "use strict";
                n.__esModule = !0, n.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, n) {
                "use strict";

                function r(e, t) {
                    e.bitmapFont = l.BitmapText.registerFont(e.data, t)
                }
                n.__esModule = !0, n.parse = r, n.default = function() {
                    return function(e, t) {
                        if (!e.data || e.type !== s.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 n = e.isDataUrl ? "" : o.dirname(e.url);
                        e.isDataUrl && ("." === n && (n = ""), this.baseUrl && n && "/" === this.baseUrl.charAt(this.baseUrl.length - 1) && (n += "/")), (n = n.replace(this.baseUrl, "")) && "/" !== n.charAt(n.length - 1) && (n += "/");
                        var i = n + e.data.getElementsByTagName("page")[0].getAttribute("file");
                        if (a.utils.TextureCache[i]) r(e, a.utils.TextureCache[i]), t();
                        else {
                            var l = {
                                crossOrigin: e.crossOrigin,
                                loadType: s.Resource.LOAD_TYPE.IMAGE,
                                metadata: e.metadata.imageMetadata,
                                parentResource: e
                            };
                            this.add(e.name + "_image", i, l, function(n) {
                                r(e, n.texture), t()
                            })
                        }
                    }
                };
                var i = e("path"),
                    o = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(i),
                    a = e("../core"),
                    s = e("resource-loader"),
                    l = e("../extras")
            }, {
                "../core": 65,
                "../extras": 141,
                path: 23,
                "resource-loader": 36
            }],
            162: [function(e, t, n) {
                "use strict";

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

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("resource-loader"),
                    l = r(s),
                    u = e("resource-loader/lib/middlewares/parsing/blob"),
                    c = e("eventemitter3"),
                    d = r(c),
                    h = e("./textureParser"),
                    p = r(h),
                    f = e("./spritesheetParser"),
                    m = r(f),
                    g = e("./bitmapFontParser"),
                    b = r(g),
                    _ = function(e) {
                        function t(n, r) {
                            i(this, t);
                            var a = o(this, e.call(this, n, r));
                            d.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, n) {
                                return a.emit("error", e, t, n)
                            }), 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);
                n.default = _;
                for (var y in d.default.prototype) _.prototype[y] = d.default.prototype[y];
                _._pixiMiddleware = [u.blobMiddlewareFactory, p.default, m.default, b.default];
                var v = l.default.Resource;
                v.setExtensionXhrType("fnt", v.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, n) {
                "use strict";

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

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = e("../core/textures/Texture"),
                    c = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(u),
                    d = new l.Point,
                    h = new l.Polygon,
                    p = function(e) {
                        function t(n, o, a, s, u) {
                            r(this, t);
                            var d = i(this, e.call(this));
                            return d._texture = n || c.default.EMPTY, d.uvs = a || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), d.vertices = o || new Float32Array([0, 0, 100, 0, 100, 100, 0, 100]), d.indices = s || new Uint16Array([0, 1, 3, 2]), d.dirty = 0, d.indexDirty = 0, d.blendMode = l.BLEND_MODES.NORMAL, d.canvasPadding = 0, d.drawMode = u || t.DRAW_MODES.TRIANGLE_MESH, d.shader = null, d.tintRgb = new Float32Array([1, 1, 1]), d._glDatas = {}, d._uvTransform = new l.TextureMatrix(d._texture), d.uploadUvTransform = !1, d.pluginName = "mesh", d
                        }
                        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._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, d);
                            for (var n = this.vertices, r = h.points, i = 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 * i[s],
                                    u = 2 * i[s + 1],
                                    c = 2 * i[s + 2];
                                if (r[0] = n[l], r[1] = n[l + 1], r[2] = n[u], r[3] = n[u + 1], r[4] = n[c], r[5] = n[c + 1], h.contains(d.x, d.y)) return !0
                            }
                            return !1
                        }, 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);
                n.default = p, p.DRAW_MODES = {
                    TRIANGLE_MESH: 0,
                    TRIANGLES: 1
                }
            }, {
                "../core": 65,
                "../core/textures/Texture": 115
            }],
            167: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("./Plane"),
                    l = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(s),
                    u = 10,
                    c = function(e) {
                        function t(n, o, a, s, l) {
                            r(this, t);
                            var c = i(this, e.call(this, n, 4, 4));
                            return c._origWidth = n.orig.width, c._origHeight = n.orig.height, c._width = c._origWidth, c._height = c._origHeight, c.leftWidth = void 0 !== o ? o : u, c.rightWidth = void 0 !== s ? s : u, c.topHeight = void 0 !== a ? a : u, c.bottomHeight = void 0 !== l ? l : u, c.refresh(!0), c
                        }
                        return o(t, e), t.prototype.updateHorizontalVertices = function() {
                            var e = this.vertices;
                            e[9] = e[11] = e[13] = e[15] = this._topHeight, e[17] = e[19] = e[21] = e[23] = this._height - this._bottomHeight, e[25] = e[27] = e[29] = e[31] = this._height
                        }, t.prototype.updateVerticalVertices = function() {
                            var e = this.vertices;
                            e[2] = e[10] = e[18] = e[26] = this._leftWidth, e[4] = e[12] = e[20] = e[28] = this._width - this._rightWidth, e[6] = e[14] = e[22] = e[30] = this._width
                        }, t.prototype._renderCanvas = function(e) {
                            var t = e.context;
                            t.globalAlpha = this.worldAlpha;
                            var n = this.worldTransform,
                                r = e.resolution;
                            e.roundPixels ? t.setTransform(n.a * r, n.b * r, n.c * r, n.d * r, n.tx * r | 0, n.ty * r | 0) : t.setTransform(n.a * r, n.b * r, n.c * r, n.d * r, n.tx * r, n.ty * r);
                            var i = this._texture.baseTexture,
                                o = i.source,
                                a = i.width * i.resolution,
                                s = i.height * i.resolution;
                            this.drawSegment(t, o, a, s, 0, 1, 10, 11), this.drawSegment(t, o, a, s, 2, 3, 12, 13), this.drawSegment(t, o, a, s, 4, 5, 14, 15), this.drawSegment(t, o, a, s, 8, 9, 18, 19), this.drawSegment(t, o, a, s, 10, 11, 20, 21), this.drawSegment(t, o, a, s, 12, 13, 22, 23), this.drawSegment(t, o, a, s, 16, 17, 26, 27), this.drawSegment(t, o, a, s, 18, 19, 28, 29), this.drawSegment(t, o, a, s, 20, 21, 30, 31)
                        }, t.prototype.drawSegment = function(e, t, n, r, i, o, a, s) {
                            var l = this.uvs,
                                u = this.vertices,
                                c = (l[a] - l[i]) * n,
                                d = (l[s] - l[o]) * r,
                                h = u[a] - u[i],
                                p = u[s] - u[o];
                            c < 1 && (c = 1), d < 1 && (d = 1), h < 1 && (h = 1), p < 1 && (p = 1), e.drawImage(t, l[i] * n, l[o] * r, c, d, u[i], u[o], h, p)
                        }, t.prototype._refresh = function() {
                            e.prototype._refresh.call(this);
                            var t = this.uvs,
                                n = this._texture;
                            this._origWidth = n.orig.width, this._origHeight = n.orig.height;
                            var r = 1 / this._origWidth,
                                i = 1 / this._origHeight;
                            t[0] = t[8] = t[16] = t[24] = 0, t[1] = t[3] = t[5] = t[7] = 0, t[6] = t[14] = t[22] = t[30] = 1, t[25] = t[27] = t[29] = t[31] = 1, t[2] = t[10] = t[18] = t[26] = r * this._leftWidth, t[4] = t[12] = t[20] = t[28] = 1 - r * this._rightWidth, t[9] = t[11] = t[13] = t[15] = i * this._topHeight, t[17] = t[19] = t[21] = t[23] = 1 - i * this._bottomHeight, this.updateHorizontalVertices(), this.updateVerticalVertices(), this.dirty++, this.multiplyUvs()
                        }, a(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
                    }(l.default);
                n.default = c
            }, {
                "./Plane": 168
            }],
            168: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("./Mesh"),
                    s = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(a),
                    l = function(e) {
                        function t(n, o, a) {
                            r(this, t);
                            var l = i(this, e.call(this, n));
                            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, n = [], r = [], i = [], o = [], a = this.verticesX - 1, s = this.verticesY - 1, l = e.width / a, u = e.height / s, c = 0; c < t; c++) {
                                var d = c % this.verticesX,
                                    h = c / this.verticesX | 0;
                                n.push(d * l, h * u), i.push(d / a, h / s)
                            }
                            for (var p = a * s, f = 0; f < p; f++) {
                                var m = f % a,
                                    g = f / a | 0,
                                    b = g * this.verticesX + m,
                                    _ = g * this.verticesX + m + 1,
                                    y = (g + 1) * this.verticesX + m,
                                    v = (g + 1) * this.verticesX + m + 1;
                                o.push(b, _, y), o.push(_, v, y)
                            }
                            this.vertices = new Float32Array(n), this.uvs = new Float32Array(i), this.colors = new Float32Array(r), 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);
                n.default = l
            }, {
                "./Mesh": 166
            }],
            169: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("./Mesh"),
                    s = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(a),
                    l = function(e) {
                        function t(n, o) {
                            r(this, t);
                            var a = i(this, e.call(this, n));
                            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,
                                    n = this.indices,
                                    r = this.colors;
                                t[0] = 0, t[1] = 0, t[2] = 0, t[3] = 1, r[0] = 1, r[1] = 1, n[0] = 0, n[1] = 1;
                                for (var i = e.length, o = 1; o < i; o++) {
                                    var a = 4 * o,
                                        s = o / (i - 1);
                                    t[a] = s, t[a + 1] = 0, t[a + 2] = s, t[a + 3] = 1, a = 2 * o, r[a] = 1, r[a + 1] = 1, a = 2 * o, n[a] = a, n[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], n = void 0, r = 0, i = 0, o = this.vertices, a = e.length, s = 0; s < a; s++) {
                                    var l = e[s],
                                        u = 4 * s;
                                    n = s < e.length - 1 ? e[s + 1] : l, i = -(n.x - t.x), r = n.y - t.y;
                                    var c = 10 * (1 - s / (a - 1));
                                    c > 1 && (c = 1);
                                    var d = Math.sqrt(r * r + i * i),
                                        h = this._texture.height / 2;
                                    r /= d, i /= d, r *= h, i *= h, o[u] = l.x + r, o[u + 1] = l.y + i, o[u + 2] = l.x - r, o[u + 3] = l.y - i, t = l
                                }
                        }, t.prototype.updateTransform = function() {
                            this.autoUpdate && this.refreshVertices(), this.containerUpdateTransform()
                        }, t
                    }(s.default);
                n.default = l
            }, {
                "./Mesh": 166
            }],
            170: [function(e, t, n) {
                "use strict";

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

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

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = e("pixi-gl-core"),
                    c = r(u),
                    d = e("../Mesh"),
                    h = r(d),
                    p = (e("path"), l.Matrix.IDENTITY),
                    f = function(e) {
                        function t(n) {
                            i(this, t);
                            var r = o(this, e.call(this, n));
                            return r.shader = null, r
                        }
                        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,
                                n = t.gl,
                                r = e._texture;
                            if (r.valid) {
                                var i = e._glDatas[t.CONTEXT_UID];
                                i || (t.bindVao(null), i = {
                                    shader: this.shader,
                                    vertexBuffer: c.default.GLBuffer.createVertexBuffer(n, e.vertices, n.STREAM_DRAW),
                                    uvBuffer: c.default.GLBuffer.createVertexBuffer(n, e.uvs, n.STREAM_DRAW),
                                    indexBuffer: c.default.GLBuffer.createIndexBuffer(n, e.indices, n.STATIC_DRAW),
                                    vao: null,
                                    dirty: e.dirty,
                                    indexDirty: e.indexDirty
                                }, i.vao = new c.default.VertexArrayObject(n).addIndex(i.indexBuffer).addAttribute(i.vertexBuffer, i.shader.attributes.aVertexPosition, n.FLOAT, !1, 8, 0).addAttribute(i.uvBuffer, i.shader.attributes.aTextureCoord, n.FLOAT, !1, 8, 0), e._glDatas[t.CONTEXT_UID] = i), t.bindVao(i.vao), e.dirty !== i.dirty && (i.dirty = e.dirty, i.uvBuffer.upload(e.uvs)), e.indexDirty !== i.indexDirty && (i.indexDirty = e.indexDirty, i.indexBuffer.upload(e.indices)), i.vertexBuffer.upload(e.vertices), t.bindShader(i.shader), i.shader.uniforms.uSampler = t.bindTexture(r), t.state.setBlendMode(l.utils.correctBlendMode(e.blendMode, r.baseTexture.premultipliedAlpha)), i.shader.uniforms.uTransform && (e.uploadUvTransform ? i.shader.uniforms.uTransform = e._uvTransform.mapCoord.toArray(!0) : i.shader.uniforms.uTransform = p.toArray(!0)), i.shader.uniforms.translationMatrix = e.worldTransform.toArray(!0), i.shader.uniforms.uColor = l.utils.premultiplyRgba(e.tintRgb, e.worldAlpha, i.shader.uniforms.uColor, r.baseTexture.premultipliedAlpha);
                                var o = e.drawMode === h.default.DRAW_MODES.TRIANGLE_MESH ? n.TRIANGLE_STRIP : n.TRIANGLES;
                                i.vao.draw(o, e.indices.length, 0)
                            }
                        }, t
                    }(l.ObjectRenderer);
                n.default = f, l.WebGLRenderer.registerPlugin("mesh", f)
            }, {
                "../../core": 65,
                "../Mesh": 166,
                path: 23,
                "pixi-gl-core": 12
            }],
            173: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = function() {
                        function e(e, t) {
                            for (var n = 0; n < t.length; n++) {
                                var r = t[n];
                                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
                            }
                        }
                        return function(t, n, r) {
                            return n && e(t.prototype, n), r && e(t, r), t
                        }
                    }(),
                    s = e("../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = e("../core/utils"),
                    c = function(e) {
                        function t() {
                            var n = 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];
                            r(this, t);
                            var u = i(this, e.call(this));
                            return a > 16384 && (a = 16384), a > n && (a = n), u._properties = [!1, !0, !1, !1, !1], u._maxSize = n, u._batchSize = a, u._glBuffers = {}, u._bufferToUpdate = 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] = "scale" in e ? !!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] = "alpha" in e || "tint" in e ? !!e.alpha || !!e.tint : 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) {
                            var t = Math.floor(e / this._batchSize);
                            t < this._bufferToUpdate && (this._bufferToUpdate = t)
                        }, t.prototype.renderCanvas = function(e) {
                            if (this.visible && !(this.worldAlpha <= 0) && this.children.length && this.renderable) {
                                var t = e.context,
                                    n = this.worldTransform,
                                    r = !0,
                                    i = 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) r && (t.setTransform(n.a, n.b, n.c, n.d, n.tx * e.resolution, n.ty * e.resolution), r = !1), i = 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 {
                                            r || (r = !0), u.displayObjectUpdateTransform();
                                            var d = u.worldTransform;
                                            e.roundPixels ? t.setTransform(d.a, d.b, d.c, d.d, d.tx * e.resolution | 0, d.ty * e.resolution | 0) : t.setTransform(d.a, d.b, d.c, d.d, d.tx * e.resolution, d.ty * e.resolution), i = u.anchor.x * -c.width + .5, o = u.anchor.y * -c.height + .5, a = c.width, s = c.height
                                        }
                                        var h = u._texture.baseTexture.resolution;
                                        t.drawImage(u._texture.baseTexture.source, c.x * h, c.y * h, c.width * h, c.height * h, i * 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 n = 0; n < this._buffers.length; ++n) this._buffers[n].destroy();
                            this._properties = null, this._buffers = 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);
                n.default = c
            }, {
                "../core": 65,
                "../core/utils": 125
            }],
            174: [function(e, t, n) {
                "use strict";

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

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

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

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

                function i(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)
                }
                n.__esModule = !0;
                var s = e("../../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = e("./ParticleShader"),
                    c = r(u),
                    d = e("./ParticleBuffer"),
                    h = r(d),
                    p = e("../../core/utils"),
                    f = function(e) {
                        function t(n) {
                            i(this, t);
                            var r = o(this, e.call(this, n));
                            return r.shader = null, r.indexBuffer = null, r.properties = null, r.tempMatrix = new l.Matrix, r.CONTEXT_UID = 0, r
                        }
                        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,
                                n = e._maxSize,
                                r = e._batchSize,
                                i = this.renderer,
                                o = t.length;
                            if (0 !== o) {
                                o > n && (o = n);
                                var a = e._glBuffers[i.CONTEXT_UID];
                                a || (a = e._glBuffers[i.CONTEXT_UID] = this.generateBuffers(e));
                                var s = t[0]._texture.baseTexture;
                                this.renderer.setBlendMode(l.utils.correctBlendMode(e.blendMode, s.premultipliedAlpha));
                                var u = i.gl,
                                    c = e.worldTransform.copy(this.tempMatrix);
                                c.prepend(i._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 = i.bindTexture(s);
                                for (var d = 0, h = 0; d < o; d += r, h += 1) {
                                    var p = o - d;
                                    if (p > r && (p = r), h >= a.length) {
                                        if (!e.autoResize) break;
                                        a.push(this._generateOneMoreBuffer(e))
                                    }
                                    var f = a[h];
                                    f.uploadDynamic(t, d, p), e._bufferToUpdate === h && (f.uploadStatic(t, d, p), e._bufferToUpdate = h + 1), i.bindVao(f.vao), f.vao.draw(u.TRIANGLES, 6 * p)
                                }
                            }
                        }, t.prototype.generateBuffers = function(e) {
                            for (var t = this.renderer.gl, n = [], r = e._maxSize, i = e._batchSize, o = e._properties, a = 0; a < r; a += i) n.push(new h.default(t, this.properties, o, i));
                            return n
                        }, t.prototype._generateOneMoreBuffer = function(e) {
                            var t = this.renderer.gl,
                                n = e._batchSize,
                                r = e._properties;
                            return new h.default(t, this.properties, r, n)
                        }, t.prototype.uploadVertices = function(e, t, n, r, i, o) {
                            for (var a = 0, s = 0, l = 0, u = 0, c = 0; c < n; ++c) {
                                var d = e[t + c],
                                    h = d._texture,
                                    p = d.scale.x,
                                    f = d.scale.y,
                                    m = h.trim,
                                    g = h.orig;
                                m ? (s = m.x - d.anchor.x * g.width, a = s + m.width, u = m.y - d.anchor.y * g.height, l = u + m.height) : (a = g.width * (1 - d.anchor.x), s = g.width * -d.anchor.x, l = g.height * (1 - d.anchor.y), u = g.height * -d.anchor.y), r[o] = s * p, r[o + 1] = u * f, r[o + i] = a * p, r[o + i + 1] = u * f, r[o + 2 * i] = a * p, r[o + 2 * i + 1] = l * f, r[o + 3 * i] = s * p, r[o + 3 * i + 1] = l * f, o += 4 * i
                            }
                        }, t.prototype.uploadPosition = function(e, t, n, r, i, o) {
                            for (var a = 0; a < n; a++) {
                                var s = e[t + a].position;
                                r[o] = s.x, r[o + 1] = s.y, r[o + i] = s.x, r[o + i + 1] = s.y, r[o + 2 * i] = s.x, r[o + 2 * i + 1] = s.y, r[o + 3 * i] = s.x, r[o + 3 * i + 1] = s.y, o += 4 * i
                            }
                        }, t.prototype.uploadRotation = function(e, t, n, r, i, o) {
                            for (var a = 0; a < n; a++) {
                                var s = e[t + a].rotation;
                                r[o] = s, r[o + i] = s, r[o + 2 * i] = s, r[o + 3 * i] = s, o += 4 * i
                            }
                        }, t.prototype.uploadUvs = function(e, t, n, r, i, o) {
                            for (var a = 0; a < n; ++a) {
                                var s = e[t + a]._texture._uvs;
                                s ? (r[o] = s.x0, r[o + 1] = s.y0, r[o + i] = s.x1, r[o + i + 1] = s.y1, r[o + 2 * i] = s.x2, r[o + 2 * i + 1] = s.y2, r[o + 3 * i] = s.x3, r[o + 3 * i + 1] = s.y3, o += 4 * i) : (r[o] = 0, r[o + 1] = 0, r[o + i] = 0, r[o + i + 1] = 0, r[o + 2 * i] = 0, r[o + 2 * i + 1] = 0, r[o + 3 * i] = 0, r[o + 3 * i + 1] = 0, o += 4 * i)
                            }
                        }, t.prototype.uploadTint = function(e, t, n, r, i, o) {
                            for (var a = 0; a < n; ++a) {
                                var s = e[t + a],
                                    l = s._texture.baseTexture.premultipliedAlpha,
                                    u = s.alpha,
                                    c = u < 1 && l ? (0, p.premultiplyTint)(s._tintRGB, u) : s._tintRGB + (255 * u << 24);
                                r[o] = c, r[o + i] = c, r[o + 2 * i] = c, r[o + 3 * i] = c, o += 4 * i
                            }
                        }, 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);
                n.default = f, l.WebGLRenderer.registerPlugin("particle", f)
            }, {
                "../../core": 65,
                "../../core/utils": 125,
                "./ParticleBuffer": 175,
                "./ParticleShader": 177
            }],
            177: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var a = e("../../core/Shader"),
                    s = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(a),
                    l = function(e) {
                        function t(n) {
                            return r(this, t), i(this, e.call(this, n, ["attribute vec2 aVertexPosition;", "attribute vec2 aTextureCoord;", "attribute vec4 aColor;", "attribute vec2 aPositionCoord;", "attribute vec2 aScale;", "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);
                n.default = l
            }, {
                "../../core/Shader": 44
            }],
            178: [function(e, t, n) {
                "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, n) {
                "use strict";
                var r = e("object-assign"),
                    i = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(r);
                Object.assign || (Object.assign = i.default)
            }, {
                "object-assign": 5
            }],
            180: [function(e, t, n) {
                "use strict";
                e("./Object.assign"), e("./requestAnimationFrame"), e("./Math.sign"), window.ArrayBuffer || (window.ArrayBuffer = Array), window.Float32Array || (window.Float32Array = Array), window.Uint32Array || (window.Uint32Array = Array), window.Uint16Array || (window.Uint16Array = Array)
            }, {
                "./Math.sign": 178,
                "./Object.assign": 179,
                "./requestAnimationFrame": 181
            }],
            181: [function(e, t, n) {
                (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 n = Date.now(), r = ["ms", "moz", "webkit", "o"], i = 0; i < r.length && !e.requestAnimationFrame; ++i) {
                        var o = r[i];
                        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(),
                            r = 16 + n - t;
                        return r < 0 && (r = 0), n = t, setTimeout(function() {
                            n = Date.now(), e(performance.now())
                        }, r)
                    }), e.cancelAnimationFrame || (e.cancelAnimationFrame = function(e) {
                        return clearTimeout(e)
                    })
                }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
            }, {}],
            182: [function(e, t, n) {
                "use strict";

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

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

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

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

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

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

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

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

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

                function i(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 n = t.source,
                            r = 0 === n.width ? e.canvas.width : Math.min(e.canvas.width, n.width),
                            i = 0 === n.height ? e.canvas.height : Math.min(e.canvas.height, n.height);
                        return e.ctx.drawImage(n, 0, 0, r, i, 0, 0, e.canvas.width, e.canvas.height), !0
                    }
                    return !1
                }
                n.__esModule = !0;
                var s = e("../../core"),
                    l = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(s),
                    u = e("../BasePrepare"),
                    c = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(u),
                    d = 16,
                    h = function(e) {
                        function t(n) {
                            r(this, t);
                            var o = i(this, e.call(this, n));
                            return o.uploadHookHelper = o, o.canvas = document.createElement("canvas"), o.canvas.width = d, o.canvas.height = d, 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);
                n.default = h, l.CanvasRenderer.registerPlugin("prepare", h)
            }, {
                "../../core": 65,
                "../BasePrepare": 182
            }],
            184: [function(e, t, n) {
                "use strict";

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

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e(t) {
                        r(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
                }();
                n.default = i
            }, {}],
            186: [function(e, t, n) {
                "use strict";

                function r(e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }
                n.__esModule = !0;
                var i = function() {
                    function e(t) {
                        r(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
                }();
                n.default = i
            }, {}],
            187: [function(e, t, n) {
                "use strict";

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

                function i(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)
                }
                n.__esModule = !0;
                var u = e("../../core"),
                    c = function(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }(u),
                    d = e("../BasePrepare"),
                    h = function(e) {
                        return e && e.__esModule ? e : {
                            default: e
                        }
                    }(d),
                    p = function(e) {
                        function t(n) {
                            r(this, t);
                            var o = i(this, e.call(this, n));
                            return o.uploadHookHelper = o.renderer, o.registerFindHook(l), o.registerUploadHook(a), o.registerUploadHook(s), o
                        }
                        return o(t, e), t
                    }(h.default);
                n.default = p, c.WebGLRenderer.registerPlugin("prepare", p)
            }, {
                "../../core": 65,
                "../BasePrepare": 182
            }],
            188: [function(e, t, n) {
                (function(t) {
                    "use strict";

                    function r(e) {
                        if (e && e.__esModule) return e;
                        var t = {};
                        if (null != e)
                            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
                        return t.default = e, t
                    }
                    n.__esModule = !0, n.loader = n.prepare = n.particles = n.mesh = n.loaders = n.interaction = n.filters = n.extras = n.extract = n.accessibility = void 0;
                    var i = e("./polyfill");
                    Object.keys(i).forEach(function(e) {
                        "default" !== e && "__esModule" !== e && Object.defineProperty(n, e, {
                            enumerable: !0,
                            get: function() {
                                return i[e]
                            }
                        })
                    });
                    var o = e("./core");
                    Object.keys(o).forEach(function(e) {
                        "default" !== e && "__esModule" !== e && Object.defineProperty(n, 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 = r(l),
                        c = e("./extract"),
                        d = r(c),
                        h = e("./extras"),
                        p = r(h),
                        f = e("./filters"),
                        m = r(f),
                        g = e("./interaction"),
                        b = r(g),
                        _ = e("./loaders"),
                        y = r(_),
                        v = e("./mesh"),
                        x = r(v),
                        S = e("./particles"),
                        w = r(S),
                        T = e("./prepare"),
                        P = r(T);
                    o.utils.mixins.performMixins();
                    var C = y.shared || null;
                    n.accessibility = u, n.extract = d, n.extras = p, n.filters = m, n.interaction = b, n.loaders = y, n.mesh = x, n.particles = w, n.prepare = P, n.loader = C, "function" == typeof s.default && (0, s.default)(n), t.PIXI = n
                }).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": 180,
                "./prepare": 184
            }]
        }, {}, [188])(188)
    }), define("skbJet/component/utils/Interface", [], function() {
            function e(e, t) {
                if (this.functions = e || [], t)
                    for (var n = 0; n < t.functions.length; n++) this.functions.indexOf(t.functions[n]) < 0 && this.functions.push(t.functions[n])
            }

            function t() {
                throw "Not implemented yet."
            }
            return e.prototype.implementedBy = function(e) {
                for (var n = 0; n < this.functions.length; n++) e[this.functions[n]] || (e[this.functions[n]] = t)
            }, e.prototype.isImplementedBy = function(e) {
                for (var t = 0; t < this.functions.length; t++) {
                    var n = e[this.functions[t]];
                    if (!n || "function" != typeof n) 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 n(e) {
                    var t = e._style;
                    if (t && (t._width && (t._width = Number(t._width) * r), t._height && (t._height = Number(t._height) * r), t._top && (t._top = Number(t._top) * r), t._left && (t._left = Number(t._left) * r), t._background && t._background._position && (t._background._position._x && (t._background._position._x = Number(t._background._position._x) * r), t._background._position._y && (t._background._position._y = Number(t._background._position._y) * r)), t._font && t._font._size && (t._font._size = Number(t._font._size) * r), t._text && t._text._lineHeight && (t._text._lineHeight = Number(t._text._lineHeight) * r), t._text && t._text._strokeWidth && (t._text._strokeWidth = Number(t._text._strokeWidth) * r)), e._SPRITES)
                        for (var i = 0; i < e._SPRITES.length; i++) n(e._SPRITES[i])
                }
                var r = t || 2;
                e._width && (e._width = Number(e._width) * r), e._height && (e._height = Number(e._height) * r);
                for (var i = 0; i < e._SCENES.length; i++) {
                    for (var o = 0; o < e._SCENES[i]._LAYERS.length; o++) n(e._SCENES[i]._LAYERS[o]);
                    for (var a = 0; a < e._SCENES[i]._ANIMATIONS.length; a++) {
                        var s = e._SCENES[i]._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++) n(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 n = 0; n < e._SPRITES.length; n++) t(e._SPRITES[n])
                }
                for (var n = 0; n < e._SCENES.length; n++)
                    for (var r = 0; r < e._SCENES[n]._LAYERS.length; r++) t(e._SCENES[n]._LAYERS[r])
            }

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

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

            function i(e, t, n, i, a) {
                if (!(0 === n || 0 === i || 0 === e || 0 === t || r(e, o.w) && r(t, o.h))) {
                    o.w = e, o.h = t;
                    var s, l, u = i / n;
                    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: n,
                fitSize: i
            }
        }), define("skbJet/component/gladPixiRenderer/globalStore", [], function() {
            return {
                lib: {},
                animMap: {}
            }
        }), define("skbJet/component/utils/PauseTimer", [], function() {
            function e(t, n) {
                this.index = e.index++, e.map[this.index] = this, this.callBack = t, this.delay = n, this.startTime = Date.now(), this.pauseTime = null;
                var r = this;
                this._innerIndex = window.setTimeout(function() {
                    delete e.map[r.index], r.callBack()
                }, n)
            }

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

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

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

            function i(e, n) {
                return new t(e, n).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: n,
                clearTimeout: r,
                setInterval: i,
                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 n(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 n = Number(t._transform._scale._x);
                            e._transform._scale._x = n
                        }
                        if (null != t._transform._scale._y && ("string" != typeof t._transform._scale._y || "" !== t._transform._scale._y)) {
                            var n = Number(t._transform._scale._y);
                            e._transform._scale._y = n
                        }
                    }
                    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 r(e) {
                return !(null === e || void 0 === e || "" === e)
            }

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

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

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

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

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

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

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

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

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

            function s(e, t, n, r) {
                if (n._style) {
                    var o = e._style,
                        s = t._style,
                        l = n._style;
                    a(l._width) && (s._width = i(o._width, l._width, r)), a(l._height) && (s._height = i(o._height, l._height, r)), a(l._top) && (s._top = i(o._top, l._top, r)), a(l._left) && (s._left = i(o._left, l._left, r)), a(l._opacity) && (s._opacity = i(o._opacity, l._opacity, r)), a(l._background) && (s._background = {}, a(l._background._position) && (s._background._position = {}, a(l._background._position._x) && (s._background._position._x = i(o._background._position._x, l._background._position._x, r)), a(l._background._position._y) && (s._background._position._y = i(o._background._position._y, l._background._position._y, r)))), a(l._transform) && (s._transform = {}, a(l._transform._rotate) && (s._transform._rotate = i(o._transform._rotate, l._transform._rotate, r)), a(l._transform._scale) && (s._transform._scale = {}, a(l._transform._scale._x) && (s._transform._scale._x = i(o._transform._scale._x, l._transform._scale._x, r)), a(l._transform._scale._y) && (s._transform._scale._y = i(o._transform._scale._y, l._transform._scale._y, r))), a(l._transform._skew) && (s._transform._skew = {}, a(l._transform._skew._x) && (s._transform._skew._x = i(o._transform._skew._x, l._transform._skew._x, r)), a(l._transform._skew._y) && (s._transform._skew._y = i(o._transform._skew._y, l._transform._skew._y, r))))
                }
            }
            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, r) {
                n(this, e, t, r)
            }, 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), r(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 n = 0; n < this._spritesNameList.length; n++) {
                            var r = this._gladObjLib[this._spritesNameList[n]];
                            r.updateCurrentStyle(t._SPRITES[n]._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 && (r(this), this._onEnd && this._onEnd())
            }, t.prototype.pause = function() {
                this._isPlaying = !1
            }, t.prototype.clone = function(e, r) {
                var i = new t;
                return n(i, this.animData, this._gladAnimMap, this._gladObjLib, e, r), i
            }, 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 n = t.animData._keyFrames[t._frameIndex];
                if (null == n) return null;
                if (n && n._time === e) return n;
                var r = t.animData._keyFrames[t._frameIndex - 1],
                    i = {
                        _time: e,
                        _SPRITES: []
                    },
                    a = i._time;
                t.animData._step && (a = t.animData._step * Math.floor(i._time / t.animData._step));
                for (var l = (a - r._time) / (n._time - r._time), u = 0; u < n._SPRITES.length; u++) {
                    var c = n._SPRITES[u],
                        d = r._SPRITES[u];
                    if (d._id !== c._id) throw "Error: sprite list dismatch in animation frames";
                    var h = {
                        _id: c._id,
                        _name: c._name,
                        _style: {}
                    };
                    s(d, h, c, l), i._SPRITES.push(h)
                }
                return i
            }, t
        }), define("skbJet/component/gladPixiRenderer/KeyFrameAnimation", ["skbJet/component/gladRenderer/animation/KeyFrameAnimation", "skbJet/component/gladPixiRenderer/globalStore"], function(e, t) {
            function n(e) {
                this.init(e, t.animMap, t.lib), this.updateStyleIfPlaying = this.onTick
            }
            return n.prototype = new e, n
        }), 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, n, r, i, o) {
            function a(r) {
                this.layers = {}, this.data = r, o.lib[r._name] = this, this.pixiContainer = new e.Container, this.pixiContainer.name = r._name;
                for (var i = 0; i < r._LAYERS.length; i++) {
                    var a = r._LAYERS[i];
                    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 i = 0; i < r._ANIMATIONS.length; i++) {
                    "_KEY_FRAME_ANIMATION" === r._ANIMATIONS[i]._type && new n(r._ANIMATIONS[i])
                }
            }
            var s;
            r.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 = i.isNotEmpty;
            return a.prototype.updateCurrentStyle = function(e) {
                var t = this.pixiContainer,
                    n = e,
                    r = Number(n._width),
                    i = Number(n._height);
                r || (s || (s = require("skbJet/component/gladPixiRenderer/gladPixiRenderer")), r = s.getSize().width), i || (s || (s = require("skbJet/component/gladPixiRenderer/gladPixiRenderer")), i = s.getSize().height), t.pivot.x = r / 2, t.pivot.y = i / 2, t.x = Number(n._left) + t.pivot.x, t.y = Number(n._top) + t.pivot.y, l(n._transform) && l(n._transform._scale) && (l(n._transform._scale._x) && (t.scale.x = Number(n._transform._scale._x)), l(n._transform._scale._y) && (t.scale.y = Number(n._transform._scale._y))), l(n._transform) && l(n._transform._rotate) && (t.rotation = Number(n._transform._rotate) * Math.PI / 180), l(n._opacity) && (t.alpha = Number(n._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, n, r, i, o) {
            function a(e, t) {
                e === y.width && t === y.height || (y.width = e, y.height = t, d.resize(y.width, y.height), c(v.width, v.height))
            }

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

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

            function u(e) {
                n.showScene(b, e)
            }

            function c(e, t) {
                var r = Number(d.view.width),
                    i = Number(d.view.height);
                v.width = e, v.height = t, n.fitSize(e, t, r, i, d.view)
            }
            var d, h, p, f, m, g = r.lib,
                b = {},
                _ = r.animMap,
                y = {
                    width: 0,
                    height: 0
                },
                v = {
                    width: 0,
                    height: 0
                },
                x = {
                    init: s,
                    lib: g,
                    fitSize: c,
                    showScene: u,
                    animMap: _,
                    setSize: a,
                    getSize: function() {
                        return {
                            width: y.width,
                            height: y.height
                        }
                    },
                    getPixiRenderer: function() {
                        return d
                    },
                    getTicker: function() {
                        return p
                    },
                    getTimer: function() {
                        return i
                    },
                    forceRender: function() {
                        d.render(f)
                    },
                    getSprite: function(e) {
                        return g[e]
                    },
                    getAnimation: function(e) {
                        return _[e]
                    }
                };
            return t.implementedBy(x), x
        }), 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, n) {
                    e[t] = n
                }, this.get = function(t) {
                    return e[t]
                }, this.delete = function(t) {
                    delete e[t]
                }, this.keys = function() {
                    var t = [];
                    for (var n in e) t.push(n);
                    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 n(e, t) {
                setTimeout(function() {
                    t(e)
                }, 0)
            }

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

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

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

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

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

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

            function a(e) {
                if (i(e) && !ur(e) && !(e instanceof u)) {
                    if (e instanceof l) return e;
                    if (wn.call(e, "__chain__") && wn.call(e, "__wrapped__")) return Ie(e)
                }
                return new l(e)
            }

            function s() {}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            function T(e, t) {
                return e === _t ? t : e
            }

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

            function C(e, t) {
                return null == t ? e : k(t, hr(t), e)
            }

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

            function O(e, t, n) {
                var r = typeof e;
                return "function" == r ? t === _t ? e : Z(e, t, n) : null == e ? pt : "object" == r ? W(e) : t === _t ? bt(e) : H(e, t)
            }

            function E(e, t, n, r, i, o, a) {
                var s;
                if (n && (s = i ? n(e, r, i) : n(e)), s !== _t) return s;
                if (!it(e)) return e;
                var l = ur(e);
                if (l) {
                    if (s = _e(e), !t) return b(e, s)
                } else {
                    var u = Tn.call(e),
                        c = u == Nt;
                    if (u != jt && u != It && (!c || i)) return un[u] ? ve(e, u, t) : i ? e : {};
                    if (bn(e)) return i ? e : {};
                    if (s = ye(c ? {} : e), !t) return C(s, e)
                }
                o || (o = []), a || (a = []);
                for (var d = o.length; d--;)
                    if (o[d] == e) return a[d];
                return o.push(e), a.push(s), (l ? _ : L)(e, function(r, i) {
                    s[i] = E(r, t, n, i, e, o, a)
                }), s
            }

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

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

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

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

            function B(e, t) {
                return Kn(e, t, ut)
            }

            function L(e, t) {
                return Kn(e, t, hr)
            }

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

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

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

            function G(e, t, n, r, i, o, a) {
                var s = ur(e),
                    l = ur(t),
                    u = Bt,
                    c = Bt;
                s || (u = Tn.call(e), u == It ? u = jt : u != jt && (s = lt(e))), l || (c = Tn.call(t), c == It ? c = jt : c != jt && (l = lt(t)));
                var d = u == jt && !bn(e),
                    h = c == jt && !bn(t),
                    p = u == c;
                if (p && !s && !d) return ce(e, t, u);
                if (!i) {
                    var f = d && wn.call(e, "__wrapped__"),
                        m = h && wn.call(t, "__wrapped__");
                    if (f || m) return n(f ? e.value() : e, m ? t.value() : t, r, i, o, a)
                }
                if (!p) return !1;
                o || (o = []), a || (a = []);
                for (var g = o.length; g--;)
                    if (o[g] == e) return a[g] == t;
                o.push(e), a.push(t);
                var b = (s ? ue : de)(e, t, n, r, i, o, a);
                return o.pop(), a.pop(), b
            }

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

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

            function W(e) {
                var t = me(e);
                if (1 == t.length && t[0][2]) {
                    var n = t[0][0],
                        r = t[0][1];
                    return function(e) {
                        return null != e && (e = Me(e), e[n] === r && (r !== _t || n in e))
                    }
                }
                return function(e) {
                    return j(e, t)
                }
            }

            function H(e, t) {
                var n = ur(e),
                    r = Te(e) && ke(t),
                    i = e + "";
                return e = Re(e),
                    function(o) {
                        if (null == o) return !1;
                        var a = i;
                        if (o = Me(o), (n || !r) && !(a in o)) {
                            if (null == (o = 1 == e.length ? o : F(o, J(e, 0, -1)))) return !1;
                            a = Le(e), o = Me(o)
                        }
                        return o[a] === t ? t !== _t || a in o : N(t, o[a], _t, !0)
                    }
            }

            function z(e) {
                return function(t) {
                    return null == t ? _t : Me(t)[e]
                }
            }

            function V(e) {
                var t = e + "";
                return e = Re(e),
                    function(n) {
                        return F(n, e, t)
                    }
            }

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

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

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

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

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

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

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

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

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

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

            function ne(e, t, n) {
                for (var r = -1, i = n.length, o = -1, a = Fn(e.length - i, 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 (; ++r < i;) u[c + n[r]] = e[o++];
                return u
            }

            function re(e, t) {
                function n() {
                    return (this && this !== gn && this instanceof n ? r : e).apply(t, arguments)
                }
                var r = oe(e);
                return n
            }

            function ie(e) {
                return Rn && On ? new p(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 n = qn(e.prototype),
                        r = e.apply(n, t);
                    return it(r) ? r : n
                }
            }

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

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

            function le(e, t, n, r, i, o, a, s) {
                var l = t & vt;
                if (!l && "function" != typeof e) throw new TypeError(Mt);
                var u = r ? r.length : 0;
                if (u || (t &= ~(Tt | Pt), r = i = _t), u -= i ? i.length : 0, t & Pt) {
                    var c = r,
                        d = i;
                    r = i = _t
                }
                var h = l ? _t : Zn(e),
                    p = [e, t, n, r, i, c, d, o, a, s];
                if (h && (Oe(p, h), t = p[1], s = p[9]), p[9] = null == s ? l ? 0 : e.length : Fn(s - u, 0) || 0, t == yt) var f = re(p[0], p[2]);
                else f = t != Tt && t != (yt | Tt) || p[4].length ? ae.apply(_t, p) : se.apply(_t, p);
                return (h ? Qn : tr)(f, p)
            }

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

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

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

            function he(e, t, n) {
                var r = a.callback || ht;
                return r = r === ht ? O : r, n ? r(e, t, n) : r
            }

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

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

            function me(e) {
                for (var t = ct(e), n = t.length; n--;) t[n][2] = ke(t[n][1]);
                return t
            }

            function ge(e, t) {
                var n = null == e ? _t : e[t];
                return ot(n) ? n : _t
            }

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

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

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

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

            function xe(e) {
                return null != e && Ce(er(e))
            }

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

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

            function Te(e, t) {
                var n = typeof e;
                return !!("string" == n && en.test(e) || "number" == n) || !ur(e) && (!Zt.test(e) || null != t && e in Me(t))
            }

            function Pe(e) {
                var t = pe(e),
                    n = a[t];
                if ("function" != typeof n || !(t in u.prototype)) return !1;
                if (e === n) return !0;
                var r = Zn(n);
                return !!r && e === r[0]
            }

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

            function ke(e) {
                return e === e && !it(e)
            }

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

            function Ee(e, t) {
                for (var n = e.length, r = Nn(t.length, n), i = b(e); r--;) {
                    var o = t[r];
                    e[r] = Se(o, n) ? i[o] : _t
                }
                return e
            }

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

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

            function Re(e) {
                if (ur(e)) return e;
                var t = [];
                return n(e).replace(tn, function(e, n, r, i) {
                    t.push(r ? i.replace(nn, "$1") : n || e)
                }), t
            }

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

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

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

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

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

            function Ne(e, t, n) {
                return t.call(n, e)
            }

            function Ge() {
                return De(this)
            }

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

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

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

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

            function ze() {
                return $(this.__wrapped__, this.__actions__)
            }

            function Ve(e, t, n) {
                var r = ur(e) ? y : M;
                return t = he(t, n, 3), r(e, t)
            }

            function Xe(e, t, n, r) {
                var i = e ? er(e) : 0;
                return Ce(i) || (e = dt(e), i = e.length), n = "number" != typeof n || r && we(t, n, r) ? 0 : n < 0 ? Fn(i + n, 0) : n || 0, "string" == typeof e || !ur(e) && st(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && fe(e, t, n) > -1
            }

            function Je(e, t, n) {
                var r = ur(e) ? v : U;
                return t = he(t, n, 3), r(e, t)
            }

            function Ye(e, t, n) {
                var r = ur(e) ? w : Y;
                return n && we(e, t, n) && (t = _t), "function" == typeof t && n === _t || (t = he(t, n, 3)), r(e, t)
            }

            function qe(e, t) {
                if ("function" != typeof t) {
                    if ("function" != typeof e) throw new TypeError(Mt);
                    var n = e;
                    e = t, t = n
                }
                return e = Ln(e = +e) ? e : 0,
                    function() {
                        if (--e < 1) return t.apply(this, arguments)
                    }
            }

            function $e(e, t, n) {
                function r() {
                    p && clearTimeout(p), u && clearTimeout(u), m = 0, u = p = f = _t
                }

                function i(t, n) {
                    n && clearTimeout(n), u = p = f = _t, t && (m = sr(), c = e.apply(h, l), p || u || (l = h = _t))
                }

                function o() {
                    var e = t - (sr() - d);
                    e <= 0 || e > t ? i(f, u) : p = setTimeout(o, e)
                }

                function a() {
                    i(b, p)
                }

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

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

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

            function Ze(e, t, n, r) {
                return t && "boolean" != typeof t && we(e, t, n) ? t = !1 : "function" == typeof t && (r = n, n = t, t = !1), "function" == typeof n ? E(e, t, Z(n, r, 3)) : E(e, t)
            }

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

            function tt(e) {
                return i(e) && xe(e) && wn.call(e, "callee") && !kn.call(e, "callee")
            }

            function nt(e, t, n, r) {
                n = "function" == typeof n ? Z(n, r, 3) : _t;
                var i = n ? n(e, t) : _t;
                return i === _t ? N(e, t, n) : !!i
            }

            function rt(e) {
                return it(e) && Tn.call(e) == Nt
            }

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

            function ot(e) {
                return null != e && (rt(e) ? Pn.test(Sn.call(e)) : i(e) && (bn(e) ? Pn : on).test(e))
            }

            function at(e) {
                var t;
                if (!i(e) || Tn.call(e) != jt || bn(e) || tt(e) || !wn.call(e, "constructor") && "function" == typeof(t = e.constructor) && !(t instanceof t)) return !1;
                var n;
                return a.support.ownLast ? (B(e, function(e, t, r) {
                    return n = wn.call(r, t), !1
                }), !1 !== n) : (B(e, function(e, t) {
                    n = t
                }), n === _t || wn.call(e, n))
            }

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

            function lt(e) {
                return i(e) && Ce(e.length) && !!ln[Tn.call(e)]
            }

            function ut(e) {
                if (null == e) return [];
                it(e) || (e = Object(e));
                var t = e.length,
                    n = a.support;
                t = t && Ce(t) && (ur(e) || tt(e) || st(e)) && t || 0;
                for (var r = e.constructor, i = -1, o = rt(r) && r.prototype || vn, s = o === e, l = Array(t), u = t > 0, c = n.enumErrorProps && (e === yn || e instanceof Error), d = n.enumPrototypes && rt(e); ++i < t;) l[i] = i + "";
                for (var h in e) d && "prototype" == h || c && ("message" == h || "name" == h) || u && Se(h, t) || "constructor" == h && (s || !wn.call(e, h)) || l.push(h);
                if (n.nonEnumShadows && e !== vn) {
                    var p = e === xn ? Wt : e === yn ? Ft : Tn.call(e),
                        f = Jn[p] || Jn[jt];
                    for (p == jt && (o = vn), t = sn.length; t--;) {
                        h = sn[t];
                        var m = f[h];
                        s && m || (m ? !wn.call(e, h) : e[h] === o[h]) || l.push(h)
                    }
                }
                return l
            }

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

            function dt(e) {
                return q(e, hr(e))
            }

            function ht(e, t, n) {
                return n && we(e, t, n) && (t = _t), i(e) ? ft(e) : O(e, t)
            }

            function pt(e) {
                return e
            }

            function ft(e) {
                return W(E(e, !0))
            }

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

            function gt() {}

            function bt(e) {
                return Te(e) ? z(e) : V(e)
            }
            var _t, yt = 1,
                vt = 2,
                xt = 4,
                St = 8,
                wt = 16,
                Tt = 32,
                Pt = 64,
                Ct = 128,
                kt = 256,
                Ot = 200,
                Et = 1,
                At = 2,
                Mt = "Expected a function",
                Rt = "__lodash_placeholder__",
                It = "[object Arguments]",
                Bt = "[object Array]",
                Lt = "[object Boolean]",
                Dt = "[object Date]",
                Ft = "[object Error]",
                Nt = "[object Function]",
                Gt = "[object Number]",
                jt = "[object Object]",
                Ut = "[object RegExp]",
                Wt = "[object String]",
                Ht = "[object ArrayBuffer]",
                zt = "[object Float32Array]",
                Vt = "[object Float64Array]",
                Xt = "[object Int8Array]",
                Jt = "[object Int16Array]",
                Yt = "[object Int32Array]",
                qt = "[object Uint8Array]",
                $t = "[object Uint8ClampedArray]",
                Kt = "[object Uint16Array]",
                Qt = "[object Uint32Array]",
                Zt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
                en = /^\w*$/,
                tn = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,
                nn = /\\(\\)?/g,
                rn = /\w*$/,
                on = /^\[object .+?Constructor\]$/,
                an = /^\d+$/,
                sn = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"],
                ln = {};
            ln[zt] = ln[Vt] = ln[Xt] = ln[Jt] = ln[Yt] = ln[qt] = ln[$t] = ln[Kt] = ln[Qt] = !0, ln[It] = ln[Bt] = ln[Ht] = ln[Lt] = ln[Dt] = ln[Ft] = ln[Nt] = ln["[object Map]"] = ln[Gt] = ln[jt] = ln[Ut] = ln["[object Set]"] = ln[Wt] = ln["[object WeakMap]"] = !1;
            var un = {};
            un[It] = un[Bt] = un[Ht] = un[Lt] = un[Dt] = un[zt] = un[Vt] = un[Xt] = un[Jt] = un[Yt] = un[Gt] = un[jt] = un[Ut] = un[Wt] = un[qt] = un[$t] = un[Kt] = un[Qt] = !0, un[Ft] = un[Nt] = un["[object Map]"] = un["[object Set]"] = un["[object WeakMap]"] = !1;
            var cn = {
                    function: !0,
                    object: !0
                },
                dn = cn[typeof exports] && exports && !exports.nodeType && exports,
                hn = cn[typeof module] && module && !module.nodeType && module,
                pn = dn && hn && "object" == typeof global && global && global.Object && global,
                fn = cn[typeof self] && self && self.Object && self,
                mn = cn[typeof window] && window && window.Object && window,
                gn = pn || mn !== (this && this.window) && mn || fn || this,
                bn = function() {
                    try {
                        Object({
                            toString: 0
                        } + "")
                    } catch (e) {
                        return function() {
                            return !1
                        }
                    }
                    return function(e) {
                        return "function" != typeof e.toString && "string" == typeof(e + "")
                    }
                }(),
                _n = Array.prototype,
                yn = Error.prototype,
                vn = Object.prototype,
                xn = String.prototype,
                Sn = Function.prototype.toString,
                wn = vn.hasOwnProperty,
                Tn = vn.toString,
                Pn = RegExp("^" + Sn.call(wn).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
                Cn = gn.ArrayBuffer,
                kn = vn.propertyIsEnumerable,
                On = ge(gn, "Set"),
                En = _n.splice,
                An = gn.Uint8Array,
                Mn = ge(gn, "WeakMap"),
                Rn = ge(Object, "create"),
                In = Math.floor,
                Bn = ge(Array, "isArray"),
                Ln = gn.isFinite,
                Dn = ge(Object, "keys"),
                Fn = Math.max,
                Nn = Math.min,
                Gn = ge(Date, "now"),
                jn = Number.POSITIVE_INFINITY,
                Un = 4294967294,
                Wn = 2147483647,
                Hn = 9007199254740991,
                zn = Mn && new Mn,
                Vn = {},
                Xn = {};
            Xn[zt] = gn.Float32Array, Xn[Vt] = gn.Float64Array, Xn[Xt] = gn.Int8Array, Xn[Jt] = gn.Int16Array, Xn[Yt] = gn.Int32Array, Xn[qt] = An, Xn[$t] = gn.Uint8ClampedArray, Xn[Kt] = gn.Uint16Array, Xn[Qt] = gn.Uint32Array;
            var Jn = {};
            Jn[Bt] = Jn[Dt] = Jn[Gt] = {
                constructor: !0,
                toLocaleString: !0,
                toString: !0,
                valueOf: !0
            }, Jn[Lt] = Jn[Wt] = {
                constructor: !0,
                toString: !0,
                valueOf: !0
            }, Jn[Ft] = Jn[Nt] = Jn[Ut] = {
                constructor: !0,
                toString: !0
            }, Jn[jt] = {
                constructor: !0
            }, _(sn, function(e) {
                for (var t in Jn)
                    if (wn.call(Jn, t)) {
                        var n = Jn[t];
                        n[e] = wn.call(n, e)
                    }
            });
            var Yn = a.support = {};
            ! function(e) {
                var t = function() {
                        this.x = 1
                    },
                    n = {
                        0: 1,
                        length: 1
                    },
                    r = [];
                t.prototype = {
                    valueOf: 1,
                    y: 1
                };
                for (var i in new t) r.push(i);
                Yn.enumErrorProps = kn.call(yn, "message") || kn.call(yn, "name"), Yn.enumPrototypes = kn.call(t, "prototype"), Yn.nonEnumShadows = !/valueOf/.test(r), Yn.ownLast = "x" != r[0], Yn.spliceObjects = (En.call(n, 0, 1), !n[0]), Yn.unindexedChars = "x" [0] + Object("x")[0] != "xx"
            }();
            var qn = function() {
                    function e() {}
                    return function(t) {
                        if (it(t)) {
                            e.prototype = t;
                            var n = new e;
                            e.prototype = _t
                        }
                        return n || {}
                    }
                }(),
                $n = function(e, t) {
                    return function(n, r) {
                        var i = n ? er(n) : 0;
                        if (!Ce(i)) return e(n, r);
                        for (var o = t ? i : -1, a = Me(n);
                            (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
                        return n
                    }
                }(L),
                Kn = function(e) {
                    return function(t, n, r) {
                        for (var i = Me(t), o = r(t), a = o.length, s = e ? a : -1; e ? s-- : ++s < a;) {
                            var l = o[s];
                            if (!1 === n(i[l], l, i)) break
                        }
                        return t
                    }
                }(),
                Qn = zn ? function(e, t) {
                    return zn.set(e, t), e
                } : pt,
                Zn = zn ? function(e) {
                    return zn.get(e)
                } : gt,
                er = z("length"),
                tr = function() {
                    var e = 0,
                        t = 0;
                    return function(n, r) {
                        var i = sr(),
                            o = 16 - (i - t);
                        if (t = i, o > 0) {
                            if (++e >= 150) return n
                        } else e = 0;
                        return Qn(n, r)
                    }
                }(),
                nr = Ke(function(e, t) {
                    return xe(e) ? A(e, t) : []
                }),
                rr = Ke(function(e) {
                    return e = I(e), this.thru(function(t) {
                        return g(ur(t) ? t : [Me(t)], e)
                    })
                }),
                ir = function(t, n) {
                    return function(r, i, o) {
                        if (i = he(i, o, 3), ur(r)) {
                            var a = e(r, i, n);
                            return a > -1 ? r[a] : _t
                        }
                        return R(r, i, t)
                    }
                }($n),
                or = function(e, t) {
                    return function(n, r, i) {
                        return "function" == typeof r && i === _t && ur(n) ? e(n, r) : t(n, Z(r, i, 3))
                    }
                }(_, $n),
                ar = function(e, t) {
                    return function(n, r, i, o) {
                        var a = arguments.length < 3;
                        return "function" == typeof r && o === _t && ur(n) ? e(n, r, i, a) : X(n, he(r, o, 4), i, a, t)
                    }
                }(S, $n),
                sr = Gn || function() {
                    return (new Date).getTime()
                },
                lr = Ke(function(e, t, n) {
                    var r = yt;
                    if (n.length) {
                        var i = o(n, lr.placeholder);
                        r |= Tt
                    }
                    return le(e, r, t, n, i)
                }),
                ur = Bn || function(e) {
                    return i(e) && Ce(e.length) && Tn.call(e) == Bt
                },
                cr = function(e) {
                    return Ke(function(t, n) {
                        var r = -1,
                            i = null == t ? 0 : n.length,
                            o = i > 2 ? n[i - 2] : _t,
                            a = i > 2 ? n[2] : _t,
                            s = i > 1 ? n[i - 1] : _t;
                        for ("function" == typeof o ? (o = Z(o, s, 5), i -= 2) : (o = "function" == typeof s ? s : _t, i -= o ? 1 : 0), a && we(n[0], n[1], a) && (o = i < 3 ? _t : o, i = 1); ++r < i;) {
                            var l = n[r];
                            l && e(t, l, o)
                        }
                        return t
                    })
                }(function(e, t, n) {
                    return n ? P(e, t, n) : C(e, t)
                }),
                dr = function(e, t) {
                    return Ke(function(n) {
                        var r = n[0];
                        return null == r ? r : (n.push(t), e.apply(_t, n))
                    })
                }(cr, T),
                hr = Dn ? function(e) {
                    var t = null == e ? _t : e.constructor;
                    return "function" == typeof t && t.prototype === e || ("function" == typeof e ? a.support.enumPrototypes : xe(e)) ? Ae(e) : it(e) ? Dn(e) : []
                } : Ae;
            a.prototype = s.prototype, l.prototype = qn(s.prototype), l.prototype.constructor = l, u.prototype = qn(s.prototype), u.prototype.constructor = u, p.prototype.push = m, a.after = qe, a.assign = cr, a.bind = lr, a.callback = ht, a.chain = De, a.debounce = $e, a.defaults = dr, a.filter = Ve, a.forEach = or, a.keys = hr, a.keysIn = ut, a.map = Je, a.matches = ft, a.mixin = mt, a.pairs = ct, a.property = bt, a.restParam = Ke, a.tap = Fe, a.throttle = Qe, a.thru = Ne, a.values = dt, a.without = nr, a.collect = Je, a.each = or, a.extend = cr, a.iteratee = ht, a.select = Ve, mt(a, a), a.clone = Ze, a.cloneDeep = et, a.find = ir, a.identity = pt, a.includes = Xe, a.indexOf = Be, a.isArguments = tt, a.isArray = ur, a.isEqual = nt, a.isFunction = rt, a.isNative = ot, a.isObject = it, a.isPlainObject = at, a.isString = st, a.isTypedArray = lt, a.last = Le, a.noop = gt, a.now = sr, a.reduce = ar, a.some = Ye, a.any = Ye, a.contains = Xe, a.eq = nt, a.detect = ir, a.foldl = ar, a.include = Xe, a.inject = ar, mt(a, function() {
                    var e = {};
                    return L(a, function(t, n) {
                        a.prototype[n] || (e[n] = 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", lr.placeholder = a, _(["drop", "take"], function(e, t) {
                    u.prototype[e] = function(n) {
                        var r = this.__filtered__;
                        if (r && !t) return new u(this);
                        n = null == n ? 1 : Fn(In(n) || 0, 0);
                        var i = this.clone();
                        return r ? i.__takeCount__ = Nn(i.__takeCount__, n) : i.__views__.push({
                            size: n,
                            type: e + (i.__dir__ < 0 ? "Right" : "")
                        }), i
                    }, u.prototype[e + "Right"] = function(t) {
                        return this.reverse()[e](t).reverse()
                    }
                }), _(["filter", "map", "takeWhile"], function(e, t) {
                    var n = t + 1,
                        r = n != At;
                    u.prototype[e] = function(e, t) {
                        var i = this.clone();
                        return i.__iteratees__.push({
                            iteratee: he(e, t, 1),
                            type: n
                        }), i.__filtered__ = i.__filtered__ || r, i
                    }
                }), _(["first", "last"], function(e, t) {
                    var n = "take" + (t ? "Right" : "");
                    u.prototype[e] = function() {
                        return this[n](1).value()[0]
                    }
                }), _(["initial", "rest"], function(e, t) {
                    var n = "drop" + (t ? "" : "Right");
                    u.prototype[e] = function() {
                        return this.__filtered__ ? new u(this) : this[n](1)
                    }
                }),
                _(["pluck", "where"], function(e, t) {
                    var n = t ? "filter" : "map",
                        r = t ? W : bt;
                    u.prototype[e] = function(e) {
                        return this[n](r(e))
                    }
                }), u.prototype.compact = function() {
                    return this.filter(pt)
                }, u.prototype.reject = function(e, t) {
                    return e = he(e, t, 1), this.filter(function(t) {
                        return !e(t)
                    })
                }, u.prototype.slice = function(e, t) {
                    e = null == e ? 0 : +e || 0;
                    var n = this;
                    return n.__filtered__ && (e > 0 || t < 0) ? new u(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== _t && (t = +t || 0, n = t < 0 ? n.dropRight(-t) : n.take(t - e)), n)
                }, u.prototype.takeRightWhile = function(e, t) {
                    return this.reverse().takeWhile(e, t).reverse()
                }, u.prototype.toArray = function() {
                    return this.take(jn)
                }, L(u.prototype, function(e, t) {
                    var n = /^(?:filter|map|reject)|While$/.test(t),
                        r = /^(?:first|last)$/.test(t),
                        i = a[r ? "take" + ("last" == t ? "Right" : "") : t];
                    i && (a.prototype[t] = function() {
                        var t = r ? [1] : arguments,
                            o = this.__chain__,
                            a = this.__wrapped__,
                            s = !!this.__actions__.length,
                            c = a instanceof u,
                            d = t[0],
                            h = c || ur(a);
                        h && n && "function" == typeof d && 1 != d.length && (c = h = !1);
                        var p = function(e) {
                                return r && o ? i(e, 1)[0] : i.apply(_t, x([e], t))
                            },
                            f = {
                                func: Ne,
                                args: [p],
                                thisArg: _t
                            },
                            m = c && !s;
                        if (r && !o) return m ? (a = a.clone(), a.__actions__.push(f), e.call(a)) : i.call(_t, this.value())[0];
                        if (!r && h) {
                            a = m ? a : new u(this);
                            var g = e.apply(a, t);
                            return g.__actions__.push(f), new l(g, o)
                        }
                        return this.thru(p)
                    })
                }), _(["join", "pop", "push", "replace", "shift", "sort", "splice", "split", "unshift"], function(e) {
                    var t = (/^(?:replace|split)$/.test(e) ? xn : _n)[e],
                        n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
                        r = !Yn.spliceObjects && /^(?:pop|shift|splice)$/.test(e),
                        i = /^(?:join|pop|replace|shift)$/.test(e),
                        o = r ? function() {
                            var e = t.apply(this, arguments);
                            return 0 === this.length && delete this[0], e
                        } : t;
                    a.prototype[e] = function() {
                        var e = arguments;
                        return i && !this.__chain__ ? o.apply(this.value(), e) : this[n](function(t) {
                            return o.apply(t, e)
                        })
                    }
                }), L(u.prototype, function(e, t) {
                    var n = a[t];
                    if (n) {
                        var r = n.name + "";
                        (Vn[r] || (Vn[r] = [])).push({
                            name: t,
                            func: n
                        })
                    }
                }), Vn[ae(_t, vt).name] = [{
                    name: "wrapper",
                    func: _t
                }], u.prototype.clone = c, u.prototype.reverse = d, u.prototype.value = h, a.prototype.chain = Ge, a.prototype.commit = je, a.prototype.concat = rr, a.prototype.plant = Ue, a.prototype.reverse = We, a.prototype.toString = He, a.prototype.run = a.prototype.toJSON = a.prototype.valueOf = a.prototype.value = ze, 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(n) {
                return t(n, e)
            }) : "object" == typeof module && module.exports ? module.exports = t(require("lodash"), this) : e.postal = t(e._, e)
        }(this, function(e, t, n) {
            function r() {
                for (; x.length;) c.unsubscribe(x.shift())
            }

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

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

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

            function s(t, n) {
                return "function" == typeof t ? t : t ? function(r) {
                    var i = 0,
                        o = 0;
                    return e.each(t, function(e, a) {
                        i += 1, ("topic" === a && n.compare(r.topic, t.topic, {
                            resolverNoCache: !0
                        }) || "context" === a && t.context === r._context || r[a] === t[a]) && (o += 1)
                    }), i === o
                } : function() {
                    return !0
                }
            }
            var l = t.postal,
                u = {
                    DEFAULT_CHANNEL: "/",
                    SYSTEM_CHANNEL: "postal",
                    enableSystemMessages: !0,
                    cacheKeyDelimiter: "|",
                    autoCompactResolver: !1
                },
                c = {
                    configuration: e.extend({}, u)
                },
                d = c.configuration,
                h = function(e, t) {
                    this.bus = t, this.channel = e || d.DEFAULT_CHANNEL
                };
            h.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]
                })
            }, h.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 p = function(e, t, r) {
                    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 = r, this.pipeline = [], this.cacheKeys = [], this._context = n
                },
                f = function() {
                    var t;
                    return function(n) {
                        var r = !1;
                        return "string" == typeof n ? (r = n === t, t = n) : (r = e.isEqual(n, t), t = e.extend({}, n)), !r
                    }
                },
                m = function() {
                    var t = [];
                    return function(n) {
                        var r = !e.any(t, function(t) {
                            return e.isEqual(n, t)
                        });
                        return r && t.push(n), r
                    }
                };
            p.prototype = {
                catch: function(e) {
                    var t = this.callback,
                        n = function() {
                            try {
                                t.apply(this, arguments)
                            } catch (t) {
                                e(t, arguments[0])
                            }
                        };
                    return this.callback = n, 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 n = this,
                        r = e.after(t, e.bind(function() {
                            n.unsubscribe()
                        }));
                    return n.pipeline.push(function(e, t, n) {
                        n(e, t), r()
                    }), n
                },
                distinct: function() {
                    return this.constraint(new m)
                },
                distinctUntilChanged: function() {
                    return this.constraint(new f)
                },
                invokeSubscriber: function(e, t) {
                    if (!this.inactive) {
                        var n = this,
                            r = n.pipeline,
                            i = r.length,
                            o = n._context,
                            a = -1,
                            s = !1;
                        if (i) {
                            r = r.concat([n.callback]);
                            ! function e(t, l) {
                                a += 1, a < i ? r[a].call(o, t, l, e) : (n.callback.call(o, t, l), s = !0)
                            }(e, t)
                        } else n.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, n, r) {
                        e.call(this, t, n) && r(t, n)
                    }), this
                },
                constraints: function(t) {
                    var n = this;
                    return e.each(t, function(e) {
                        n.constraint(e)
                    }), n
                },
                context: function(e) {
                    return this._context = e, this
                },
                debounce: function(t, n) {
                    if ("number" != typeof t) throw new Error("Milliseconds must be a number");
                    return this.pipeline.push(e.debounce(function(e, t, n) {
                        n(e, t)
                    }, t, !!n)), this
                },
                delay: function(e) {
                    if ("number" != typeof e) throw new Error("Milliseconds must be a number");
                    return this.pipeline.push(function(t, n, r) {
                        setTimeout(function() {
                            r(t, n)
                        }, e)
                    }), this
                },
                throttle: function(t) {
                    if ("number" != typeof t) throw new Error("Milliseconds must be a number");
                    var n = function(e, t, n) {
                        n(e, t)
                    };
                    return this.pipeline.push(e.throttle(n, t)), this
                }
            };
            for (var g = ["withConstraint", "withConstraints", "withContext", "withDebounce", "withDelay", "withThrottle"], b = ["constraint", "constraints", "context", "debounce", "delay", "throttle"], _ = 0; _ < 6; _++) {
                var y = g[_];
                p.prototype[y] = function(e, t) {
                    return function() {
                        if (console.warn || console.log) {
                            console.warn
                        }
                        return p.prototype[t].apply(this, arguments)
                    }
                }(y, b[_])
            }
            var v = (d.resolver = {
                    cache: {},
                    regex: {},
                    enableCache: !0,
                    compare: function(t, n, r) {
                        var i, o, a, s = n + d.cacheKeyDelimiter + t,
                            l = this.cache[s],
                            u = r || {},
                            c = this.enableCache && !u.resolverNoCache;
                        return !0 === l ? l : -1 === t.indexOf("#") && -1 === t.indexOf("*") ? (l = n === t, c && (this.cache[s] = l), l) : ((o = this.regex[t]) || (i = "^" + 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(i)), l = o.test(n), c && (this.cache[s] = l), l)
                    },
                    reset: function() {
                        this.cache = {}, this.regex = {}
                    },
                    purge: function(t) {
                        var n = this,
                            r = d.cacheKeyDelimiter,
                            i = function(e, i) {
                                var o = i.split(r),
                                    a = o[0],
                                    s = o[1];
                                void 0 !== t.topic && t.topic !== a || void 0 !== t.binding && t.binding !== s || delete n.cache[i]
                            },
                            o = function(e, t) {
                                var i = t.split(r);
                                0 === c.getSubscribersFor({
                                    topic: i[0]
                                }).length && delete n.cache[t]
                            };
                        if (void 0 === t) this.reset();
                        else {
                            var a = !0 === t.compact ? o : i;
                            e.each(this.cache, a)
                        }
                    }
                }, 0),
                x = [],
                S = 0,
                w = e.bind(a, this, "created"),
                T = e.bind(a, this, "removed");
            if (e.extend(c, {
                    cache: {},
                    subscriptions: {},
                    wireTaps: [],
                    ChannelDefinition: h,
                    SubscriptionDefinition: p,
                    channel: function(e) {
                        return new h(e, this)
                    },
                    addWireTap: function(e) {
                        var t = this;
                        return t.wireTaps.push(e),
                            function() {
                                var n = t.wireTaps.indexOf(e); - 1 !== n && t.wireTaps.splice(n, 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 n = [],
                            r = this;
                        return e.each(r.subscriptions, function(r) {
                            e.each(r, function(r) {
                                n = n.concat(e.filter(r, s(t, d.resolver)))
                            })
                        }), n
                    },
                    publish: function(t, n) {
                        ++v;
                        var i = t.channel = t.channel || d.DEFAULT_CHANNEL,
                            a = t.topic;
                        t.timeStamp = new Date, this.wireTaps.length && e.each(this.wireTaps, function(e) {
                            e(t.data, t, v)
                        });
                        var s = i + d.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 h = o(a, this.cache, s, function(e) {
                                e.invokeSubscriber(t.data, t) ? c++ : u++
                            }, t);
                            e.each(this.subscriptions[i], function(t) {
                                e.each(t, h)
                            })
                        }
                        0 == --v && r(), n && n({
                            activated: c,
                            skipped: u
                        })
                    },
                    reset: function() {
                        this.unsubscribeFor(), d.resolver.reset(), this.subscriptions = {}, this.cache = {}
                    },
                    subscribe: function(t) {
                        var n, r = this.subscriptions,
                            i = new p(t.channel || d.DEFAULT_CHANNEL, t.topic, t.callback),
                            a = r[i.channel],
                            s = i.channel.length;
                        return a || (a = r[i.channel] = {}), n = r[i.channel][i.topic], n || (n = r[i.channel][i.topic] = []), n.push(i), e.each(e.keys(this.cache), function(e) {
                            e.substr(0, s) === i.channel && o(e.split(d.cacheKeyDelimiter)[1], this.cache, e)(i)
                        }, this), d.enableSystemMessages && this.publish(w(i)), i
                    },
                    unsubscribe: function() {
                        for (var t, n, r, o, a = arguments.length, s = 0; s < a; s++) {
                            if (t = arguments[s], t.inactive = !0, v) return void x.push(t);
                            if (n = this.subscriptions[t.channel], r = n && n[t.topic]) {
                                var l = r.length;
                                for (o = 0; o < l;) {
                                    if (r[o] === t) {
                                        r.splice(o, 1);
                                        break
                                    }
                                    o += 1
                                }
                                if (0 === r.length && (delete n[t.topic], e.keys(n).length || delete this.subscriptions[t.channel]), t.cacheKeys && t.cacheKeys.length)
                                    for (var u; u = t.cacheKeys.pop();) e.each(this.cache[u], i(t, u, this.cache));
                                if ("function" == typeof d.resolver.purge) {
                                    var c = !0 === d.autoCompactResolver ? 0 : "number" == typeof d.autoCompactResolver && d.autoCompactResolver - 1;
                                    c >= 0 && S === c ? (d.resolver.purge({
                                        compact: !0
                                    }), S = 0) : c >= 0 && S < c && (S += 1)
                                }
                            }
                            d.enableSystemMessages && this.publish(T(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,
                    n = t.Q;
                t.Q = e(), t.Q.noConflict = function() {
                    return t.Q = n, this
                }
            }
        }(function() {
            "use strict";

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

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

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

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

            function i(e) {
                for (var t = e.split("\n"), n = [], r = 0; r < t.length; ++r) {
                    var i = t[r];
                    s(i) || o(i) || !i || n.push(i)
                }
                return n.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 n = /at ([^ ]+):(\d+):(?:\d+)$/.exec(e);
                if (n) return [n[1], Number(n[2])];
                var r = /.*@(.+):(\d+)$/.exec(e);
                return r ? [r[1], Number(r[2])] : void 0
            }

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

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

            function u(e) {
                return e instanceof p ? e : b(e) ? C(e) : P(e)
            }

            function c() {
                function e(e) {
                    t = e, o.source = e, Y(n, function(t, n) {
                        u.nextTick(function() {
                            e.promiseDispatch.apply(e, n)
                        })
                    }, void 0), n = void 0, r = void 0
                }
                var t, n = [],
                    r = [],
                    i = K(c.prototype),
                    o = K(p.prototype);
                if (o.promiseDispatch = function(e, i, o) {
                        var a = J(arguments);
                        n ? (n.push(a), "when" === i && o[1] && r.push(o[1])) : u.nextTick(function() {
                            t.promiseDispatch.apply(t, a)
                        })
                    }, o.valueOf = function() {
                        if (n) return o;
                        var e = m(t);
                        return g(e) && (t = e), e
                    }, o.inspect = function() {
                        return t ? t.inspect() : {
                            state: "pending"
                        }
                    }, u.longStackSupport && j) try {
                    throw new Error
                } catch (e) {
                    o.stack = e.stack.substring(e.stack.indexOf("\n") + 1)
                }
                return i.promise = o, i.resolve = function(n) {
                    t || e(u(n))
                }, i.fulfill = function(n) {
                    t || e(P(n))
                }, i.reject = function(n) {
                    t || e(T(n))
                }, i.notify = function(e) {
                    t || Y(r, function(t, n) {
                        u.nextTick(function() {
                            n(e)
                        })
                    }, void 0)
                }, i
            }

            function d(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 h(e) {
                return d(function(t, n) {
                    for (var r = 0, i = e.length; r < i; r++) u(e[r]).then(t, n)
                })
            }

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

            function f(e, t, n, r) {
                return u(e).then(t, n, r)
            }

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

            function g(e) {
                return e instanceof p
            }

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

            function _(e) {
                return g(e) && "pending" === e.inspect().state
            }

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

            function v(e) {
                return g(e) && "rejected" === e.inspect().state
            }

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

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

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

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

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

            function C(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 k(e) {
                return p({
                    isDef: function() {}
                }, function(t, n) {
                    return I(e, t, n)
                }, function() {
                    return u(e).inspect()
                })
            }

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

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

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

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

            function R(e) {
                return function() {
                    return O([this, B(arguments)], function(t, n) {
                        return e.apply(t, n)
                    })
                }
            }

            function I(e, t, n) {
                return u(e).dispatch(t, n)
            }

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

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

                    function s() {
                        0 === --n && 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];
                    n++, f(u, a, s, l)
                }, void 0), t.promise
            }

            function D(e) {
                return f(e, function(e) {
                    return e = $(e, u), f(B($(e, function(e) {
                        return f(e, z, z)
                    })), function() {
                        return e
                    })
                })
            }

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

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

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

                    function t(t, n) {
                        try {
                            t()
                        } catch (t) {
                            if (a) throw n && n.exit(), setTimeout(e, 0), n && n.enter(), t;
                            setTimeout(function() {
                                throw t
                            }, 0)
                        }
                        n && n.exit()
                    }
                    var n = {
                            task: void 0,
                            next: null
                        },
                        r = n,
                        i = !1,
                        o = void 0,
                        a = !1,
                        s = [];
                    if (V = function(e) {
                            r = r.next = {
                                task: e,
                                domain: a && process.domain,
                                next: null
                            }, i || (i = !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 V.runAfter = function(e) {
                        s.push(e), i || (i = !0, o())
                    }, V
                }(),
                X = Function.call,
                J = e(Array.prototype.slice),
                Y = e(Array.prototype.reduce || function(e, t) {
                    var n = 0,
                        r = this.length;
                    if (1 === arguments.length)
                        for (;;) {
                            if (n in this) {
                                t = this[n++];
                                break
                            }
                            if (++n >= r) throw new TypeError
                        }
                    for (; n < r; n++) n in this && (t = e(t, this[n], n));
                    return t
                }),
                q = e(Array.prototype.indexOf || function(e) {
                    for (var t = 0; t < this.length; t++)
                        if (this[t] === e) return t;
                    return -1
                }),
                $ = e(Array.prototype.map || function(e, t) {
                    var n = this,
                        r = [];
                    return Y(n, function(i, o, a) {
                        r.push(e.call(t, o, a, n))
                    }, void 0), r
                }),
                K = 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 n in e) Q(e, n) && t.push(n);
                    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 = V, 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, n) {
                    t ? e.reject(t) : arguments.length > 2 ? e.resolve(J(arguments, 1)) : e.resolve(n)
                }
            }, u.Promise = d, u.promise = d, d.race = h, d.all = B, d.reject = T, d.resolve = u, u.passByCopy = function(e) {
                return e
            }, p.prototype.passByCopy = function() {
                return this
            }, u.join = function(e, t) {
                return u(e).join(t)
            }, p.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 = h, p.prototype.race = function() {
                return this.then(u.race)
            }, u.makePromise = p, p.prototype.toString = function() {
                return "[object Promise]"
            }, p.prototype.then = function(e, t, n) {
                function i(t) {
                    try {
                        return "function" == typeof e ? e(t) : t
                    } catch (e) {
                        return T(e)
                    }
                }

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

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

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

            function n(e, t, n) {
                return function(r, i, o) {
                    var a = 0,
                        s = P(r);
                    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 (n && o && s) return o = n(r, i), r[o] === i ? o : -1;
                    if (i !== i) return o = t(c.call(r, a, s), _.isNaN), o >= 0 ? o + a : -1;
                    for (o = e > 0 ? a : s - 1; o >= 0 && s > o; o += e)
                        if (r[o] === i) return o;
                    return -1
                }
            }

            function r(e, t) {
                var n = M.length,
                    r = e.constructor,
                    i = _.isFunction(r) && r.prototype || s,
                    o = "constructor";
                for (_.has(e, o) && !_.contains(t, o) && t.push(o); n--;)(o = M[n]) in e && e[o] !== i[o] && !_.contains(t, o) && t.push(o)
            }
            var i = this,
                o = i._,
                a = Array.prototype,
                s = Object.prototype,
                l = Function.prototype,
                u = a.push,
                c = a.slice,
                d = s.toString,
                h = s.hasOwnProperty,
                p = Array.isArray,
                f = Object.keys,
                m = l.bind,
                g = Object.create,
                b = function() {},
                _ = function(e) {
                    return e instanceof _ ? e : this instanceof _ ? void(this._wrapped = e) : new _(e)
                };
            "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = _), exports._ = _) : i._ = _, _.VERSION = "1.8.3";
            var y = function(e, t, n) {
                    if (void 0 === t) return e;
                    switch (null == n ? 3 : n) {
                        case 1:
                            return function(n) {
                                return e.call(t, n)
                            };
                        case 2:
                            return function(n, r) {
                                return e.call(t, n, r)
                            };
                        case 3:
                            return function(n, r, i) {
                                return e.call(t, n, r, i)
                            };
                        case 4:
                            return function(n, r, i, o) {
                                return e.call(t, n, r, i, o)
                            }
                    }
                    return function() {
                        return e.apply(t, arguments)
                    }
                },
                v = function(e, t, n) {
                    return null == e ? _.identity : _.isFunction(e) ? y(e, t, n) : _.isObject(e) ? _.matcher(e) : _.property(e)
                };
            _.iteratee = function(e, t) {
                return v(e, t, 1 / 0)
            };
            var x = function(e, t) {
                    return function(n) {
                        var r = arguments.length;
                        if (2 > r || null == n) return n;
                        for (var i = 1; r > i; i++)
                            for (var o = arguments[i], a = e(o), s = a.length, l = 0; s > l; l++) {
                                var u = a[l];
                                t && void 0 !== n[u] || (n[u] = o[u])
                            }
                        return n
                    }
                },
                S = function(e) {
                    if (!_.isObject(e)) return {};
                    if (g) return g(e);
                    b.prototype = e;
                    var t = new b;
                    return b.prototype = null, t
                },
                w = function(e) {
                    return function(t) {
                        return null == t ? void 0 : t[e]
                    }
                },
                T = Math.pow(2, 53) - 1,
                P = w("length"),
                C = function(e) {
                    var t = P(e);
                    return "number" == typeof t && t >= 0 && T >= t
                };
            _.each = _.forEach = function(e, t, n) {
                t = y(t, n);
                var r, i;
                if (C(e))
                    for (r = 0, i = e.length; i > r; r++) t(e[r], r, e);
                else {
                    var o = _.keys(e);
                    for (r = 0, i = o.length; i > r; r++) t(e[o[r]], o[r], e)
                }
                return e
            }, _.map = _.collect = function(e, t, n) {
                t = v(t, n);
                for (var r = !C(e) && _.keys(e), i = (r || e).length, o = Array(i), a = 0; i > a; a++) {
                    var s = r ? r[a] : a;
                    o[a] = t(e[s], s, e)
                }
                return o
            }, _.reduce = _.foldl = _.inject = e(1), _.reduceRight = _.foldr = e(-1), _.find = _.detect = function(e, t, n) {
                var r;
                return r = C(e) ? _.findIndex(e, t, n) : _.findKey(e, t, n), void 0 !== r && -1 !== r ? e[r] : void 0
            }, _.filter = _.select = function(e, t, n) {
                var r = [];
                return t = v(t, n), _.each(e, function(e, n, i) {
                    t(e, n, i) && r.push(e)
                }), r
            }, _.reject = function(e, t, n) {
                return _.filter(e, _.negate(v(t)), n)
            }, _.every = _.all = function(e, t, n) {
                t = v(t, n);
                for (var r = !C(e) && _.keys(e), i = (r || e).length, o = 0; i > o; o++) {
                    var a = r ? r[o] : o;
                    if (!t(e[a], a, e)) return !1
                }
                return !0
            }, _.some = _.any = function(e, t, n) {
                t = v(t, n);
                for (var r = !C(e) && _.keys(e), i = (r || e).length, o = 0; i > o; o++) {
                    var a = r ? r[o] : o;
                    if (t(e[a], a, e)) return !0
                }
                return !1
            }, _.contains = _.includes = _.include = function(e, t, n, r) {
                return C(e) || (e = _.values(e)), ("number" != typeof n || r) && (n = 0), _.indexOf(e, t, n) >= 0
            }, _.invoke = function(e, t) {
                var n = c.call(arguments, 2),
                    r = _.isFunction(t);
                return _.map(e, function(e) {
                    var i = r ? t : e[t];
                    return null == i ? i : i.apply(e, n)
                })
            }, _.pluck = function(e, t) {
                return _.map(e, _.property(t))
            }, _.where = function(e, t) {
                return _.filter(e, _.matcher(t))
            }, _.findWhere = function(e, t) {
                return _.find(e, _.matcher(t))
            }, _.max = function(e, t, n) {
                var r, i, o = -1 / 0,
                    a = -1 / 0;
                if (null == t && null != e) {
                    e = C(e) ? e : _.values(e);
                    for (var s = 0, l = e.length; l > s; s++)(r = e[s]) > o && (o = r)
                } else t = v(t, n), _.each(e, function(e, n, r) {
                    ((i = t(e, n, r)) > a || i === -1 / 0 && o === -1 / 0) && (o = e, a = i)
                });
                return o
            }, _.min = function(e, t, n) {
                var r, i, o = 1 / 0,
                    a = 1 / 0;
                if (null == t && null != e) {
                    e = C(e) ? e : _.values(e);
                    for (var s = 0, l = e.length; l > s; s++) r = e[s], o > r && (o = r)
                } else t = v(t, n), _.each(e, function(e, n, r) {
                    i = t(e, n, r), (a > i || 1 / 0 === i && 1 / 0 === o) && (o = e, a = i)
                });
                return o
            }, _.shuffle = function(e) {
                for (var t, n = C(e) ? e : _.values(e), r = n.length, i = Array(r), o = 0; r > o; o++) t = _.random(0, o), t !== o && (i[o] = i[t]), i[t] = n[o];
                return i
            }, _.sample = function(e, t, n) {
                return null == t || n ? (C(e) || (e = _.values(e)), e[_.random(e.length - 1)]) : _.shuffle(e).slice(0, Math.max(0, t))
            }, _.sortBy = function(e, t, n) {
                return t = v(t, n), _.pluck(_.map(e, function(e, n, r) {
                    return {
                        value: e,
                        index: n,
                        criteria: t(e, n, r)
                    }
                }).sort(function(e, t) {
                    var n = e.criteria,
                        r = t.criteria;
                    if (n !== r) {
                        if (n > r || void 0 === n) return 1;
                        if (r > n || void 0 === r) return -1
                    }
                    return e.index - t.index
                }), "value")
            };
            var k = function(e) {
                return function(t, n, r) {
                    var i = {};
                    return n = v(n, r), _.each(t, function(r, o) {
                        var a = n(r, o, t);
                        e(i, r, a)
                    }), i
                }
            };
            _.groupBy = k(function(e, t, n) {
                _.has(e, n) ? e[n].push(t) : e[n] = [t]
            }), _.indexBy = k(function(e, t, n) {
                e[n] = t
            }), _.countBy = k(function(e, t, n) {
                _.has(e, n) ? e[n]++ : e[n] = 1
            }), _.toArray = function(e) {
                return e ? _.isArray(e) ? c.call(e) : C(e) ? _.map(e, _.identity) : _.values(e) : []
            }, _.size = function(e) {
                return null == e ? 0 : C(e) ? e.length : _.keys(e).length
            }, _.partition = function(e, t, n) {
                t = v(t, n);
                var r = [],
                    i = [];
                return _.each(e, function(e, n, o) {
                    (t(e, n, o) ? r : i).push(e)
                }), [r, i]
            }, _.first = _.head = _.take = function(e, t, n) {
                return null == e ? void 0 : null == t || n ? e[0] : _.initial(e, e.length - t)
            }, _.initial = function(e, t, n) {
                return c.call(e, 0, Math.max(0, e.length - (null == t || n ? 1 : t)))
            }, _.last = function(e, t, n) {
                return null == e ? void 0 : null == t || n ? e[e.length - 1] : _.rest(e, Math.max(0, e.length - t))
            }, _.rest = _.tail = _.drop = function(e, t, n) {
                return c.call(e, null == t || n ? 1 : t)
            }, _.compact = function(e) {
                return _.filter(e, _.identity)
            };
            var O = function(e, t, n, r) {
                for (var i = [], o = 0, a = r || 0, s = P(e); s > a; a++) {
                    var l = e[a];
                    if (C(l) && (_.isArray(l) || _.isArguments(l))) {
                        t || (l = O(l, t, n));
                        var u = 0,
                            c = l.length;
                        for (i.length += c; c > u;) i[o++] = l[u++]
                    } else n || (i[o++] = l)
                }
                return i
            };
            _.flatten = function(e, t) {
                return O(e, t, !1)
            }, _.without = function(e) {
                return _.difference(e, c.call(arguments, 1))
            }, _.uniq = _.unique = function(e, t, n, r) {
                _.isBoolean(t) || (r = n, n = t, t = !1), null != n && (n = v(n, r));
                for (var i = [], o = [], a = 0, s = P(e); s > a; a++) {
                    var l = e[a],
                        u = n ? n(l, a, e) : l;
                    t ? (a && o === u || i.push(l), o = u) : n ? _.contains(o, u) || (o.push(u), i.push(l)) : _.contains(i, l) || i.push(l)
                }
                return i
            }, _.union = function() {
                return _.uniq(O(arguments, !0, !0))
            }, _.intersection = function(e) {
                for (var t = [], n = arguments.length, r = 0, i = P(e); i > r; r++) {
                    var o = e[r];
                    if (!_.contains(t, o)) {
                        for (var a = 1; n > a && _.contains(arguments[a], o); a++);
                        a === n && t.push(o)
                    }
                }
                return t
            }, _.difference = function(e) {
                var t = O(arguments, !0, !0, 1);
                return _.filter(e, function(e) {
                    return !_.contains(t, e)
                })
            }, _.zip = function() {
                return _.unzip(arguments)
            }, _.unzip = function(e) {
                for (var t = e && _.max(e, P).length || 0, n = Array(t), r = 0; t > r; r++) n[r] = _.pluck(e, r);
                return n
            }, _.object = function(e, t) {
                for (var n = {}, r = 0, i = P(e); i > r; r++) t ? n[e[r]] = t[r] : n[e[r][0]] = e[r][1];
                return n
            }, _.findIndex = t(1), _.findLastIndex = t(-1), _.sortedIndex = function(e, t, n, r) {
                n = v(n, r, 1);
                for (var i = n(t), o = 0, a = P(e); a > o;) {
                    var s = Math.floor((o + a) / 2);
                    n(e[s]) < i ? o = s + 1 : a = s
                }
                return o
            }, _.indexOf = n(1, _.findIndex, _.sortedIndex), _.lastIndexOf = n(-1, _.findLastIndex), _.range = function(e, t, n) {
                null == t && (t = e || 0, e = 0), n = n || 1;
                for (var r = Math.max(Math.ceil((t - e) / n), 0), i = Array(r), o = 0; r > o; o++, e += n) i[o] = e;
                return i
            };
            var E = function(e, t, n, r, i) {
                if (!(r instanceof t)) return e.apply(n, i);
                var o = S(e.prototype),
                    a = e.apply(o, i);
                return _.isObject(a) ? a : o
            };
            _.bind = function(e, t) {
                if (m && e.bind === m) return m.apply(e, c.call(arguments, 1));
                if (!_.isFunction(e)) throw new TypeError("Bind must be called on a function");
                var n = c.call(arguments, 2),
                    r = function() {
                        return E(e, r, t, this, n.concat(c.call(arguments)))
                    };
                return r
            }, _.partial = function(e) {
                var t = c.call(arguments, 1),
                    n = function() {
                        for (var r = 0, i = t.length, o = Array(i), a = 0; i > a; a++) o[a] = t[a] === _ ? arguments[r++] : t[a];
                        for (; r < arguments.length;) o.push(arguments[r++]);
                        return E(e, n, this, this, o)
                    };
                return n
            }, _.bindAll = function(e) {
                var t, n, r = arguments.length;
                if (1 >= r) throw new Error("bindAll must be passed function names");
                for (t = 1; r > t; t++) n = arguments[t], e[n] = _.bind(e[n], e);
                return e
            }, _.memoize = function(e, t) {
                var n = function(r) {
                    var i = n.cache,
                        o = "" + (t ? t.apply(this, arguments) : r);
                    return _.has(i, o) || (i[o] = e.apply(this, arguments)), i[o]
                };
                return n.cache = {}, n
            }, _.delay = function(e, t) {
                var n = c.call(arguments, 2);
                return setTimeout(function() {
                    return e.apply(null, n)
                }, t)
            }, _.defer = _.partial(_.delay, _, 1), _.throttle = function(e, t, n) {
                var r, i, o, a = null,
                    s = 0;
                n || (n = {});
                var l = function() {
                    s = !1 === n.leading ? 0 : _.now(), a = null, o = e.apply(r, i), a || (r = i = null)
                };
                return function() {
                    var u = _.now();
                    s || !1 !== n.leading || (s = u);
                    var c = t - (u - s);
                    return r = this, i = arguments, 0 >= c || c > t ? (a && (clearTimeout(a), a = null), s = u, o = e.apply(r, i), a || (r = i = null)) : a || !1 === n.trailing || (a = setTimeout(l, c)), o
                }
            }, _.debounce = function(e, t, n) {
                var r, i, o, a, s, l = function() {
                    var u = _.now() - a;
                    t > u && u >= 0 ? r = setTimeout(l, t - u) : (r = null, n || (s = e.apply(o, i), r || (o = i = null)))
                };
                return function() {
                    o = this, i = arguments, a = _.now();
                    var u = n && !r;
                    return r || (r = setTimeout(l, t)), u && (s = e.apply(o, i), o = i = null), s
                }
            }, _.wrap = function(e, t) {
                return _.partial(t, e)
            }, _.negate = function(e) {
                return function() {
                    return !e.apply(this, arguments)
                }
            }, _.compose = function() {
                var e = arguments,
                    t = e.length - 1;
                return function() {
                    for (var n = t, r = e[t].apply(this, arguments); n--;) r = e[n].call(this, r);
                    return r
                }
            }, _.after = function(e, t) {
                return function() {
                    return --e < 1 ? t.apply(this, arguments) : void 0
                }
            }, _.before = function(e, t) {
                var n;
                return function() {
                    return --e > 0 && (n = t.apply(this, arguments)), 1 >= e && (t = null), n
                }
            }, _.once = _.partial(_.before, 2);
            var A = !{
                    toString: null
                }.propertyIsEnumerable("toString"),
                M = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"];
            _.keys = function(e) {
                if (!_.isObject(e)) return [];
                if (f) return f(e);
                var t = [];
                for (var n in e) _.has(e, n) && t.push(n);
                return A && r(e, t), t
            }, _.allKeys = function(e) {
                if (!_.isObject(e)) return [];
                var t = [];
                for (var n in e) t.push(n);
                return A && r(e, t), t
            }, _.values = function(e) {
                for (var t = _.keys(e), n = t.length, r = Array(n), i = 0; n > i; i++) r[i] = e[t[i]];
                return r
            }, _.mapObject = function(e, t, n) {
                t = v(t, n);
                for (var r, i = _.keys(e), o = i.length, a = {}, s = 0; o > s; s++) r = i[s], a[r] = t(e[r], r, e);
                return a
            }, _.pairs = function(e) {
                for (var t = _.keys(e), n = t.length, r = Array(n), i = 0; n > i; i++) r[i] = [t[i], e[t[i]]];
                return r
            }, _.invert = function(e) {
                for (var t = {}, n = _.keys(e), r = 0, i = n.length; i > r; r++) t[e[n[r]]] = n[r];
                return t
            }, _.functions = _.methods = function(e) {
                var t = [];
                for (var n in e) _.isFunction(e[n]) && t.push(n);
                return t.sort()
            }, _.extend = x(_.allKeys), _.extendOwn = _.assign = x(_.keys), _.findKey = function(e, t, n) {
                t = v(t, n);
                for (var r, i = _.keys(e), o = 0, a = i.length; a > o; o++)
                    if (r = i[o], t(e[r], r, e)) return r
            }, _.pick = function(e, t, n) {
                var r, i, o = {},
                    a = e;
                if (null == a) return o;
                _.isFunction(t) ? (i = _.allKeys(a), r = y(t, n)) : (i = O(arguments, !1, !1, 1), r = function(e, t, n) {
                    return t in n
                }, a = Object(a));
                for (var s = 0, l = i.length; l > s; s++) {
                    var u = i[s],
                        c = a[u];
                    r(c, u, a) && (o[u] = c)
                }
                return o
            }, _.omit = function(e, t, n) {
                if (_.isFunction(t)) t = _.negate(t);
                else {
                    var r = _.map(O(arguments, !1, !1, 1), String);
                    t = function(e, t) {
                        return !_.contains(r, t)
                    }
                }
                return _.pick(e, t, n)
            }, _.defaults = x(_.allKeys, !0), _.create = function(e, t) {
                var n = S(e);
                return t && _.extendOwn(n, t), n
            }, _.clone = function(e) {
                return _.isObject(e) ? _.isArray(e) ? e.slice() : _.extend({}, e) : e
            }, _.tap = function(e, t) {
                return t(e), e
            }, _.isMatch = function(e, t) {
                var n = _.keys(t),
                    r = n.length;
                if (null == e) return !r;
                for (var i = Object(e), o = 0; r > o; o++) {
                    var a = n[o];
                    if (t[a] !== i[a] || !(a in i)) return !1
                }
                return !0
            };
            var R = function(e, t, n, r) {
                if (e === t) return 0 !== e || 1 / e == 1 / t;
                if (null == e || null == t) return e === t;
                e instanceof _ && (e = e._wrapped), t instanceof _ && (t = t._wrapped);
                var i = d.call(e);
                if (i !== d.call(t)) return !1;
                switch (i) {
                    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]" === i;
                if (!o) {
                    if ("object" != typeof e || "object" != typeof t) return !1;
                    var a = e.constructor,
                        s = t.constructor;
                    if (a !== s && !(_.isFunction(a) && a instanceof a && _.isFunction(s) && s instanceof s) && "constructor" in e && "constructor" in t) return !1
                }
                n = n || [], r = r || [];
                for (var l = n.length; l--;)
                    if (n[l] === e) return r[l] === t;
                if (n.push(e), r.push(t), o) {
                    if ((l = e.length) !== t.length) return !1;
                    for (; l--;)
                        if (!R(e[l], t[l], n, r)) return !1
                } else {
                    var u, c = _.keys(e);
                    if (l = c.length, _.keys(t).length !== l) return !1;
                    for (; l--;)
                        if (u = c[l], !_.has(t, u) || !R(e[u], t[u], n, r)) return !1
                }
                return n.pop(), r.pop(), !0
            };
            _.isEqual = function(e, t) {
                return R(e, t)
            }, _.isEmpty = function(e) {
                return null == e || (C(e) && (_.isArray(e) || _.isString(e) || _.isArguments(e)) ? 0 === e.length : 0 === _.keys(e).length)
            }, _.isElement = function(e) {
                return !(!e || 1 !== e.nodeType)
            }, _.isArray = p || function(e) {
                return "[object Array]" === d.call(e)
            }, _.isObject = function(e) {
                var t = typeof e;
                return "function" === t || "object" === t && !!e
            }, _.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error"], function(e) {
                _["is" + e] = function(t) {
                    return d.call(t) === "[object " + e + "]"
                }
            }), _.isArguments(arguments) || (_.isArguments = function(e) {
                return _.has(e, "callee")
            }), "function" != typeof /./ && "object" != typeof Int8Array && (_.isFunction = function(e) {
                return "function" == typeof e || !1
            }), _.isFinite = function(e) {
                return isFinite(e) && !isNaN(parseFloat(e))
            }, _.isNaN = function(e) {
                return _.isNumber(e) && e !== +e
            }, _.isBoolean = function(e) {
                return !0 === e || !1 === e || "[object Boolean]" === d.call(e)
            }, _.isNull = function(e) {
                return null === e
            }, _.isUndefined = function(e) {
                return void 0 === e
            }, _.has = function(e, t) {
                return null != e && h.call(e, t)
            }, _.noConflict = function() {
                return i._ = o, this
            }, _.identity = function(e) {
                return e
            }, _.constant = function(e) {
                return function() {
                    return e
                }
            }, _.noop = function() {}, _.property = w, _.propertyOf = function(e) {
                return null == e ? function() {} : function(t) {
                    return e[t]
                }
            }, _.matcher = _.matches = function(e) {
                return e = _.extendOwn({}, e),
                    function(t) {
                        return _.isMatch(t, e)
                    }
            }, _.times = function(e, t, n) {
                var r = Array(Math.max(0, e));
                t = y(t, n, 1);
                for (var i = 0; e > i; i++) r[i] = t(i);
                return r
            }, _.random = function(e, t) {
                return null == t && (t = e, e = 0), e + Math.floor(Math.random() * (t - e + 1))
            }, _.now = Date.now || function() {
                return (new Date).getTime()
            };
            var I = {
                    "&": "&amp;",
                    "<": "&lt;",
                    ">": "&gt;",
                    '"': "&quot;",
                    "'": "&#x27;",
                    "`": "&#x60;"
                },
                B = _.invert(I),
                L = function(e) {
                    var t = function(t) {
                            return e[t]
                        },
                        n = "(?:" + _.keys(e).join("|") + ")",
                        r = RegExp(n),
                        i = RegExp(n, "g");
                    return function(e) {
                        return e = null == e ? "" : "" + e, r.test(e) ? e.replace(i, t) : e
                    }
                };
            _.escape = L(I), _.unescape = L(B), _.result = function(e, t, n) {
                var r = null == e ? void 0 : e[t];
                return void 0 === r && (r = n), _.isFunction(r) ? r.call(e) : r
            };
            var D = 0;
            _.uniqueId = function(e) {
                var t = ++D + "";
                return e ? e + t : t
            }, _.templateSettings = {
                evaluate: /<%([\s\S]+?)%>/g,
                interpolate: /<%=([\s\S]+?)%>/g,
                escape: /<%-([\s\S]+?)%>/g
            };
            var F = /(.)^/,
                N = {
                    "'": "'",
                    "\\": "\\",
                    "\r": "r",
                    "\n": "n",
                    "\u2028": "u2028",
                    "\u2029": "u2029"
                },
                G = /\\|'|\r|\n|\u2028|\u2029/g,
                j = function(e) {
                    return "\\" + N[e]
                };
            _.template = function(e, t, n) {
                !t && n && (t = n), t = _.defaults({}, t, _.templateSettings);
                var r = RegExp([(t.escape || F).source, (t.interpolate || F).source, (t.evaluate || F).source].join("|") + "|$", "g"),
                    i = 0,
                    o = "__p+='";
                e.replace(r, function(t, n, r, a, s) {
                    return o += e.slice(i, s).replace(G, j), i = s + t.length, n ? o += "'+\n((__t=(" + n + "))==null?'':_.escape(__t))+\n'" : r ? o += "'+\n((__t=(" + r + "))==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, _)
                };
                return s.source = "function(" + (t.variable || "obj") + "){\n" + o + "}", s
            }, _.chain = function(e) {
                var t = _(e);
                return t._chain = !0, t
            };
            var U = function(e, t) {
                return e._chain ? _(t).chain() : t
            };
            _.mixin = function(e) {
                _.each(_.functions(e), function(t) {
                    var n = _[t] = e[t];
                    _.prototype[t] = function() {
                        var e = [this._wrapped];
                        return u.apply(e, arguments), U(this, n.apply(_, e))
                    }
                })
            }, _.mixin(_), _.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(e) {
                var t = a[e];
                _.prototype[e] = function() {
                    var n = this._wrapped;
                    return t.apply(n, arguments), "shift" !== e && "splice" !== e || 0 !== n.length || delete n[0], U(this, n)
                }
            }), _.each(["concat", "join", "slice"], function(e) {
                var t = a[e];
                _.prototype[e] = function() {
                    return U(this, t.apply(this._wrapped, arguments))
                }
            }), _.prototype.value = function() {
                return this._wrapped
            }, _.prototype.valueOf = _.prototype.toJSON = _.prototype.value, _.prototype.toString = function() {
                return "" + this._wrapped
            }, "function" == typeof define && define.amd && define("underscore", [], function() {
                return _
            })
        }.call(this),
        function(e, t) {
            "object" == typeof module && module.exports ? module.exports = t(require("underscore")) : "function" == typeof define && define.amd ? define("riveter", ["underscore"], function(n) {
                return t(n, e)
            }) : e.riveter = t(e._, e)
        }(this, function(e, t, n) {
            var r = Array.prototype.slice,
                i = function() {
                    for (var e = r.call(arguments, 0); e.length;) i.rivet(e.shift())
                };
            return i.rivet = function(e) {
                e.hasOwnProperty("extend") || (e.extend = function(t, n) {
                    return i.extend(e, t, n)
                }), e.hasOwnProperty("compose") || (e.compose = function() {
                    return i.compose.apply(this, [e].concat(r.call(arguments, 0)))
                }), e.hasOwnProperty("inherits") || (e.inherits = function(t, n) {
                    i.inherits(e, t, n)
                }), e.hasOwnProperty("mixin") || (e.mixin = function() {
                    i.mixin.apply(this, [e].concat(r.call(arguments, 0)))
                })
            }, i.inherits = function(t, n, r) {
                var o, a = function() {},
                    s = function() {
                        n.apply(this, arguments)
                    };
                return "object" == typeof t ? (t.hasOwnProperty("constructor") && (s = t.constructor), o = t) : (s = t, o = t.prototype), i.rivet(s), e.defaults(s, n, r), a.prototype = n.prototype, s.prototype = new a, e.extend(s.prototype, o, {
                    constructor: s
                }), s.__super = n, s.__super__ = n.prototype, s
            }, i.extend = function(e, t, n) {
                return i.inherits(t, e, n)
            }, i.compose = function() {
                var t = r.call(arguments, 0),
                    n = t.shift();
                i.rivet(n);
                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 = n.extend({
                        constructor: function() {
                            var t = r.call(arguments, 0);
                            e.each(o.preInit, function(e) {
                                e.apply(this, t)
                            }, this), n.prototype.constructor.apply(this, t), e.each(o.postInit, function(e) {
                                e.apply(this, t)
                            }, this)
                        }
                    });
                return i.rivet(a), e.defaults(a.prototype, e.extend.apply(null, [{}].concat(o.items))), a
            }, i.mixin = function() {
                var t = r.call(arguments, 0),
                    n = t.shift();
                i.rivet(n), e.defaults(n.prototype, e.extend.apply(null, [{}].concat(t)))
            }, i
        }),
        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(n, r, i) {
                return t(n, r, i, e)
            }) : e.postal = t(e._, e.postal, e.riveter, e)
        }(this, function(e, t, n, r, i) {
            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", n = 0; n < 36; n++) e[n] = 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, n;
                return function(r) {
                    return r && (n = e, e = r, t.publish({
                        channel: t.configuration.SYSTEM_CHANNEL,
                        topic: "instanceId.changed",
                        data: {
                            oldId: n,
                            newId: e
                        }
                    })), e
                }
            }());
            var l = function() {},
                u = !1,
                c = [],
                d = [],
                h = [],
                p = {
                    enabled: !0,
                    filterMode: "whitelist",
                    filterDirection: "both"
                },
                f = p,
                m = function(n, r, i) {
                    var o = Object.prototype.hasOwnProperty.call(t.fedx.filters[i], n),
                        a = o && e.any(t.fedx.filters[i][n], function(e) {
                            return t.configuration.resolver.compare(e, r)
                        }),
                        s = "blacklist" === f.filterMode;
                    return f.enabled && (s && (!o || o && !a) || !s && o && a)
                },
                g = {
                    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
                        }
                    }
                },
                b = {
                    "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(n) {
                        n.source.handshakeComplete = !0, n.source.setInstanceId(n.packingSlip.instanceId), n.source.pings[n.packingSlip.pingData.ticket] && (n.source.pings[n.packingSlip.pingData.ticket].callback({
                            ticket: n.packingSlip.pingData.ticket,
                            instanceId: n.packingSlip.instanceId,
                            source: n.source
                        }), n.source.pings[n.packingSlip.pingData.ticket] = i), e.contains(t.fedx.clients, n.packingSlip.instanceId) || t.fedx.clients.push(n.packingSlip.instanceId), t.publish({
                            channel: "postal.federation",
                            topic: "client.federated",
                            data: {
                                remoteId: n.source.instanceId,
                                localId: t.instanceId(),
                                transport: n.transport
                            }
                        })
                    },
                    "federation.disconnect": function(n) {
                        t.fedx.clients = e.without(t.fedx.clients, n.source.instanceId), t.fedx.disconnect({
                            transport: n.source.transportName,
                            instanceId: n.source.instanceId,
                            doNotNotify: !0
                        })
                    },
                    "federation.message": function(e) {
                        var n = e.packingSlip.envelope;
                        m(n.channel, n.topic, "in") && (n.lastSender = e.packingSlip.instanceId, t.publish(n))
                    },
                    "federation.bundle": function(n) {
                        e.each(n.packingSlip.packingSlips, function(r) {
                            t.fedx.onFederatedMsg(e.extend({}, n, {
                                packingSlip: r
                            }))
                        })
                    }
                },
                _ = function(e, t, n) {
                    this.target = e, this.options = t || {}, this.pings = {}, this.instanceId = n, this.handshakeComplete = !1
                };
            return _.prototype.sendPing = function(e) {
                var n = t.fedx.getPackingSlip("ping");
                this.pings[n.ticket] = {
                    ticket: n.ticket,
                    callback: e || l
                }, this.send(n)
            }, _.prototype.sendPong = function(e) {
                this.send(t.fedx.getPackingSlip("pong", e))
            }, _.prototype.sendBundle = function(e) {
                this.send(t.fedx.getPackingSlip("bundle", e))
            }, _.prototype.sendMessage = function(n) {
                if (this.handshakeComplete) {
                    n.originId = n.originId || t.instanceId();
                    var r = e.clone(n);
                    !this.instanceId || this.instanceId === r.lastSender || r.knownIds && r.knownIds.length && (!r.knownIds || e.include(r.knownIds, this.instanceId)) || (r.knownIds = (r.knownIds || []).concat(e.without(t.fedx.clients, this.instanceId)), this.send(t.fedx.getPackingSlip("message", r)))
                }
            }, _.prototype.disconnect = function() {
                this.send(t.fedx.getPackingSlip("disconnect"))
            }, _.prototype.onMessage = function(e) {
                this.shouldProcess() && t.fedx.onFederatedMsg({
                    transport: this.transportName,
                    packingSlip: e,
                    source: this
                })
            }, _.prototype.shouldProcess = function() {
                return !0
            }, _.prototype.send = function() {
                throw new Error("An object deriving from FederationClient must provide an implementation for 'send'.")
            }, _.prototype.setInstanceId = function(e) {
                this.instanceId = e
            }, n(_), t.fedx = e.extend({
                FederationClient: _,
                packingSlips: g,
                handlers: b,
                clients: [],
                transports: {},
                filters: { in: {},
                    out: {}
                },
                addFilter: function(t) {
                    t = e.isArray(t) ? t : [t], e.each(t, function(t) {
                        t.direction = t.direction || f.filterDirection, e.each("both" === t.direction ? ["in", "out"] : [t.direction], function(n) {
                            this.filters[n][t.channel] ? e.include(this.filters[n][t.channel], t.topic) || this.filters[n][t.channel].push(t.topic) : this.filters[n][t.channel] = [t.topic]
                        }, this)
                    }, this)
                },
                removeFilter: function(t) {
                    t = e.isArray(t) ? t : [t], e.each(t, function(t) {
                        t.direction = t.direction || f.filterDirection, e.each("both" === t.direction ? ["in", "out"] : [t.direction], function(n) {
                            this.filters[n][t.channel] && e.include(this.filters[n][t.channel], t.topic) && (this.filters[n][t.channel] = e.without(this.filters[n][t.channel], t.topic))
                        }, this)
                    }, this)
                },
                canSendRemote: function(e, t) {
                    return m(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 && (f = e.defaults(t, p)), f
                },
                getPackingSlip: function(e) {
                    if (Object.prototype.hasOwnProperty.call(g, e)) return g[e].apply(this, Array.prototype.slice.call(arguments, 1))
                },
                onFederatedMsg: function(e) {
                    if (!u) return void c.push(e);
                    if (!Object.prototype.hasOwnProperty.call(b, e.packingSlip.type)) throw new Error("postal.federation does not have a message handler for '" + e.packingSlip.type + "'.");
                    b[e.packingSlip.type](e)
                },
                sendMessage: function(t) {
                    if (!u) return void d.push(arguments);
                    e.each(this.transports, function(e) {
                        e.sendMessage(t)
                    })
                },
                disconnect: function(t) {
                    t = t || {};
                    var n = this.transports;
                    t.transport && (n = {}, n[t.transport] = this.transports[t.transport]), e.each(n, function(e) {
                        e.disconnect({
                            target: t.target,
                            instanceId: t.instanceId,
                            doNotNotify: !!t.doNotNotify
                        })
                    }, this)
                },
                _getTransports: function() {
                    return e.reduce(this.transports, function(e, t, n) {
                        return e[n] = !0, e
                    }, {})
                },
                signalReady: function(t, n, r) {
                    if (!u) return void h.push(arguments);
                    var i = this._getTransports();
                    switch (arguments.length) {
                        case 1:
                            "function" == typeof t ? r = t : "string" == typeof t && (i = {}, i[t] = this.transports[t], r = l);
                            break;
                        case 2:
                            "string" == typeof t ? (i = {}, i[t] = this.transports[t]) : i = t, r = n || l;
                            break;
                        case 3:
                            i = {}, i[t] = [n]
                    }
                    e.each(i, function(e, t) {
                        e = "boolean" == typeof e ? [] : e, this.transports[t].signalReady(e, r)
                    }, this)
                }
            }, t.fedx), t.addWireTap(function(e, n) {
                t.fedx.canSendRemote(n.channel, n.topic) && t.fedx.sendMessage(n)
            }), t.subscribe({
                channel: t.configuration.SYSTEM_CHANNEL,
                topic: "instanceId.changed",
                callback: function() {
                    for (u = !0; h.length;) o(h.shift());
                    for (; d.length;) a(d.shift());
                    for (; c.length;) s(c.shift())
                }
            }), t.instanceId() !== i && (u = !0), t
        }),
        function(e, t) {
            "function" == typeof define && define.amd ? define("xframe", ["lodash", "postal.federation"], function(n, r) {
                return t(n, r, 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, n, r) {
            function i() {
                b.routeMessage.apply(b, arguments)
            }

            function o(t) {
                for (var n in t) t.hasOwnProperty(n) && ("function" == typeof t[n] && delete t[n], e.isPlainObject(t[n]) && o(t[n]), e.isArray(t[n]) && e.each(t[n], o));
                return t
            }
            var a = location.origin || location.protocol + "//" + location.host,
                s = /MSIE [8,9]/.test(navigator.userAgent),
                l = function(t, n) {
                    var r = e.find(this.remotes, function(e) {
                        return e.instanceId === n
                    });
                    return r && t.push(r), t
                },
                u = function(t, n) {
                    var r = e.find(this.remotes, function(e) {
                        return e.target === n
                    });
                    return r && t.push(r), t
                },
                c = function(e) {
                    e.disconnect()
                },
                d = "undefined" == typeof window && postMessage && location,
                h = [],
                p = function() {},
                f = {
                    allowedOrigins: [a],
                    enabled: !0,
                    defaultOriginUrl: "*",
                    safeSerialize: !1
                },
                m = e.extend({}, f),
                g = t.fedx.FederationClient.extend({
                    transportName: "xframe",
                    shouldProcess: function() {
                        var t = !!m.allowedOrigins.length;
                        return m.enabled && ("*" === this.options.origin || t && e.contains(m.allowedOrigins, this.options.origin) || !t || this.options.isWorker && e.contains(h, this.target) || d)
                    },
                    send: function(e) {
                        var n, r;
                        this.shouldProcess() && (r = d ? null : this.target, n = [t.fedx.transports.xframe.wrapForTransport(e)], this.options.isWorker || d || n.push(this.options.origin), d ? this.target.postMessage.apply(r, n) : 1 === n.length ? this.target.postMessage(n[0]) : this.target.postMessage(n[0], n[1]))
                    }
                }, {
                    getInstance: function(e, t, n) {
                        var r = new g(e, {
                            origin: t,
                            isWorker: "undefined" != typeof Worker && e instanceof Worker
                        }, n);
                        return r.options.isWorker && b.listenToWorker(r.target), r
                    }
                }),
                b = t.fedx.transports.xframe = {
                    eagerSerialize: s,
                    XFrameClient: g,
                    configure: function(t) {
                        return t && (m = e.defaults(e.extend(m, t), f)), m
                    },
                    clearConfiguration: function() {
                        m = e.extend({}, f)
                    },
                    getTargets: d ? 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 n = t.protocol + "//" + t.host;
                            return "//" === n && (n = null), {
                                target: e.contentWindow,
                                origin: n || m.defaultOriginUrl
                            }
                        });
                        return window.parent && window.parent !== window && t.push({
                            target: window.parent,
                            origin: "*"
                        }), t.concat(h)
                    },
                    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(n) {
                        var r = n.source || n.currentTarget,
                            i = this.unwrapFromTransport(n.data);
                        if (i.postal) {
                            t.instanceId();
                            var o = e.find(this.remotes, function(e) {
                                return e.target === r
                            });
                            o || (o = g.getInstance(r, n.origin, i.packingSlip.instanceId), this.remotes.push(o)), o.onMessage(i.packingSlip)
                        }
                    },
                    sendMessage: function(t) {
                        var n = t;
                        m.safeSerialize && (n = o(e.cloneDeep(t))), e.each(this.remotes, function(e) {
                            e.sendMessage(n)
                        })
                    },
                    disconnect: function(t) {
                        t = t || {};
                        var n = 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(n, c, this), this.remotes = e.without.apply(null, [this.remotes].concat(n))
                    },
                    signalReady: function(t, n) {
                        t = e.isArray(t) ? t : [t], t = t.length ? t : this.getTargets(), n = n || p, e.each(t, function(t) {
                            if (t.target) {
                                t.origin = t.origin || m.defaultOriginUrl;
                                var r = e.find(this.remotes, function(e) {
                                    return e.target === t.target
                                });
                                r || (r = g.getInstance(t.target, t.origin), this.remotes.push(r)), r.sendPing(n)
                            }
                        }, this)
                    },
                    addEventListener: d ? function() {
                        addEventListener("message", i)
                    } : function(e, t, n, r) {
                        "undefined" != typeof window && ("addEventListener" in e ? e.addEventListener(t, n, r) : e.attachEvent("on" + t, n))
                    },
                    listenToWorker: function(t) {
                        e.include(h, t) || (t.addEventListener("message", i), h.push(t))
                    },
                    stopListeningToWorker: function(t) {
                        if (t) t.removeEventListener("message", i), h = e.without(h, t);
                        else
                            for (; h.length;) h.pop().removeEventListener("message", i)
                    }
                };
            return b.addEventListener(this, "message", i, !1), t
        }),
        function(e, t) {
            "function" == typeof define && define.amd ? define("request-response", ["lodash", "postal"], function(n, r) {
                return t(n, r, 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, n, r) {
            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 i = function() {
                for (var e = {}, t = [], n = 0; n < 256; n++) t[n] = (n < 16 ? "0" : "") + n.toString(16);
                return e.create = function() {
                    var e = 4294967295 * Math.random() | 0,
                        n = 4294967295 * Math.random() | 0,
                        r = 4294967295 * Math.random() | 0,
                        i = 4294967295 * Math.random() | 0;
                    return t[255 & e] + t[e >> 8 & 255] + t[e >> 16 & 255] + t[e >> 24 & 255] + "-" + t[255 & n] + t[n >> 8 & 255] + "-" + t[n >> 16 & 15 | 64] + t[n >> 24 & 255] + "-" + t[63 & r | 128] + t[r >> 8 & 255] + "-" + t[r >> 16 & 255] + t[r >> 24 & 255] + t[255 & i] + t[i >> 8 & 255] + t[i >> 16 & 255] + t[i >> 24 & 255]
                }, e
            }();
            t.ChannelDefinition.prototype.request = function(e) {
                var n = e.envelope ? e.envelope : {
                        topic: e.topic,
                        data: e.data,
                        headers: e.headers
                    },
                    r = i.create(),
                    o = e.replyTopic || r,
                    a = e.replyChannel || "postal.request-response",
                    s = t.configuration.promise.createDeferred();
                n.headers = n.headers || {}, n.headers.replyable = !0, n.headers.requestId = r, n.headers.replyTopic = o, n.headers.replyChannel = a;
                t.subscribe({
                    channel: a,
                    topic: o,
                    callback: function(e, n) {
                        n.headers && n.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(n), t.configuration.promise.getPromise(s)
            };
            var o = t.publish;
            return t.publish = function(e) {
                e.headers && e.headers.replyable && (e.reply = function(n, r) {
                    t.publish({
                        channel: e.headers.replyChannel,
                        topic: e.headers.replyTopic,
                        headers: {
                            isReply: !0,
                            isError: !!n,
                            requestId: e.headers.requestId,
                            resolverNoCache: !0
                        },
                        data: n || r
                    })
                }), o.call(this, e)
            }, t
        }), define("skbJet/component/gameMsgBus/PlatformMessageBus", ["postal", "promise", "postal.federation", "xframe", "request-response"], function(e, t) {
            "use strict";

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

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

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

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

            function a(t) {
                e.unsubscribe(t)
            }
            var s;
            return function() {
                return Object.freeze({
                    init: n,
                    publish: r,
                    subscribe: o,
                    unsubscribe: a,
                    getPostal: e,
                    request: i
                })
            }
        }), define("skbJet/component/gameMsgBus/PlatformMsgBusAdapter", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gameMsgBus/PlatformMessageBus"], function(e, t) {
            function n() {}
            var r = t();
            r.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"
                }]
            }), r.getPostal.addWireTap(function(t, n) {
                "postal" === n.channel || "postal.federation" === n.channel || n._fromGame || setTimeout(function() {
                    e.publish("platformMsg/" + n.channel + "/" + n.topic, n.data)
                }, 0)
            }), e.subscribe("toPlatform", function(e) {
                e._fromGame = !0, r.publish(e)
            }), e.subscribe("toPlatformRequest", function(e) {
                r.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
                }), r.publish({
                    channel: "Game",
                    topic: "ErrorHandler.Throw",
                    data: t
                })
            });
            var i = null;
            return r.getPostal.channel("ClientService").subscribe("StateChange", function(t, r) {
                i = function() {
                    i = n, r.reply(null, {
                        state: t.state
                    })
                }, e.publish(t.state, t)
            }), e.subscribe("nextState", function() {
                i && i()
            }), {}
        }), define("skbJet/component/resourceLoader/Util", [], function() {
            var e = {};
            return e.httpGetJson = function(t, n, r) {
                e.httpGetText(t, function(e) {
                    n(JSON.parse(e))
                }, r)
            }, e.httpGetText = function(e, t, n) {
                var r = new XMLHttpRequest;
                r.addEventListener("load", function(e) {
                    e.target.status >= 200 && e.target.status < 300 ? t(e.target.responseText) : n()
                }), r.addEventListener("error", n), r.addEventListener("timeout", n), r.open("GET", e), r.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, n) {
                t = e.removeQueryStr(t), t = e.getFileNameFromPath(t);
                var r = t.match(/\.(\w+)$/);
                return r && r[1] ? n ? r[1].toLowerCase() : r[1] : null
            }, e.getFileNameWithoutExt = function(t) {
                t = e.removeQueryStr(t), t = e.getFileNameFromPath(t);
                var n = t.match(/(.*)(\.\w+)+$/);
                return n ? n[1] : t
            }, e.getParentFolder = function(t) {
                t = e.removeQueryStr(t);
                var n = e.getFileNameFromPath(t);
                return t.substring(0, t.length - n.length)
            }, e
        }), define("skbJet/component/resourceLoader/LoaderContext", [], function() {
            function e(e, t, n) {
                this.assetPackUrl = e, this.languageCode = t, this.skinCode = n, 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 n(e, t) {
                for (var n = {}, r = 0; r < e.length; r++) n[e[r]] = [e[r].toLowerCase()], e[r].indexOf("_") > -1 ? n[e[r]].push(e[r].replace("_", "-").toLowerCase()) : e[r].indexOf("-") > -1 && n[e[r]].push(e[r].replace("-", "_").toLowerCase());
                var i;
                for (var o in n)
                    if (n[o].indexOf("i18n/" + t.languageCode.toLowerCase() + ".json") >= 0) {
                        i = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                        break
                    }
                if (!i)
                    for (var o in n)
                        if (n[o].indexOf("i18n/default.json") >= 0) {
                            i = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                            break
                        }
                if (!i)
                    for (var o in n)
                        if (n[o].indexOf("i18n/en.json") >= 0) {
                            i = o.substring(o.lastIndexOf("/") + 1, o.lastIndexOf("."));
                            break
                        }
                return !!i && (t.languageCode = i, !0)
            }

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

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

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

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

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

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

            function c(e) {
                if (t.utils.TextureCache[e]) {
                    var n = t.utils.TextureCache[e],
                        r = new t.CanvasRenderer(n.orig.width, n.orig.height, {
                            transparent: !0
                        }),
                        i = new t.Sprite(n);
                    m.addChild(i), r.render(m);
                    var o = new Image;
                    o.src = r.view.toDataURL(), f[e] = o, m.removeChild(i)
                }
            }
            n.sounds = n.sounds || {}, n.images = n.images || {}, n.layout = n.layout || {}, n.sprites = n.sprites || {}, n.i18n = n.i18n || {};
            var d, h = {
                    audio: n.sounds,
                    images: n.images,
                    layout: n.layout,
                    sprites: n.sprites,
                    i18n: null
                },
                p = {};
            h.load = function(e, t, n) {
                r.initDefault(e, t, n), d = r.getDefault(), d.addSubLoader("images", new s({
                    type: "images"
                })), d.addSubLoader("sprites", new a({
                    type: "sprites"
                }));
                var c = new i({
                    type: "i18n",
                    parseJson: !0
                });
                c.origLoad = c.load, c.load = function(e, t) {
                    for (var n in e) n.match(/splash\.json$/) && delete e[n];
                    this.origLoad(e, t)
                }, d.addSubLoader("i18n", c), d.addSubLoader("layout", new o({
                    tagName: "script",
                    tagAttributes: {
                        type: "text/javascript"
                    },
                    fileExtFilterList: ["js"],
                    parentTag: document.getElementsByTagName("head")[0]
                })), d.load(l, u)
            };
            var f = {},
                m = new t.Container;
            return h.getImgObj = function(e) {
                return f[e] || c(e), f[e]
            }, h
        }),
        function() {
            "use strict";
            var e = function() {
                this.init()
            };
            e.prototype = {
                init: function() {
                    var e = this || t;
                    return e._counter = 1e3, 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.mobileAutoEnable = !0, e._setup(), e
                },
                volume: function(e) {
                    var n = this || t;
                    if (e = parseFloat(e), n.ctx || u(), void 0 !== e && e >= 0 && e <= 1) {
                        if (n._volume = e, n._muted) return n;
                        n.usingWebAudio && n.masterGain.gain.setValueAtTime(e, t.ctx.currentTime);
                        for (var r = 0; r < n._howls.length; r++)
                            if (!n._howls[r]._webAudio)
                                for (var i = n._howls[r]._getSoundIds(), o = 0; o < i.length; o++) {
                                    var a = n._howls[r]._soundById(i[o]);
                                    a && a._node && (a._node.volume = a._volume * e)
                                }
                        return n
                    }
                    return n._volume
                },
                mute: function(e) {
                    var n = this || t;
                    n.ctx || u(), n._muted = e, n.usingWebAudio && n.masterGain.gain.setValueAtTime(e ? 0 : n._volume, t.ctx.currentTime);
                    for (var r = 0; r < n._howls.length; r++)
                        if (!n._howls[r]._webAudio)
                            for (var i = n._howls[r]._getSoundIds(), o = 0; o < i.length; o++) {
                                var a = n._howls[r]._soundById(i[o]);
                                a && a._node && (a._node.muted = !!e || a._muted)
                            }
                    return n
                },
                unload: function() {
                    for (var e = this || t, n = e._howls.length - 1; n >= 0; n--) e._howls[n].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 || "running" : "running", e._autoSuspend(), !e.usingWebAudio)
                        if ("undefined" != typeof Audio) try {
                            var n = new Audio;
                            void 0 === n.oncanplaythrough && (e._canPlayEvent = "canplay")
                        } catch (t) {
                            e.noAudio = !0
                        } else e.noAudio = !0;
                    try {
                        var n = new Audio;
                        n.muted && (e.noAudio = !0)
                    } catch (e) {}
                    return e.noAudio || e._setupCodecs(), e
                },
                _setupCodecs: function() {
                    var e = this || t,
                        n = null;
                    try {
                        n = "undefined" != typeof Audio ? new Audio : null
                    } catch (t) {
                        return e
                    }
                    if (!n || "function" != typeof n.canPlayType) return e;
                    var r = n.canPlayType("audio/mpeg;").replace(/^no$/, ""),
                        i = e._navigator && e._navigator.userAgent.match(/OPR\/([0-6].)/g),
                        o = i && parseInt(i[0].split("/")[1], 10) < 33;
                    return e._codecs = {
                        mp3: !(o || !r && !n.canPlayType("audio/mp3;").replace(/^no$/, "")),
                        mpeg: !!r,
                        opus: !!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""),
                        ogg: !!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""),
                        oga: !!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""),
                        wav: !!n.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""),
                        aac: !!n.canPlayType("audio/aac;").replace(/^no$/, ""),
                        caf: !!n.canPlayType("audio/x-caf;").replace(/^no$/, ""),
                        m4a: !!(n.canPlayType("audio/x-m4a;") || n.canPlayType("audio/m4a;") || n.canPlayType("audio/aac;")).replace(/^no$/, ""),
                        mp4: !!(n.canPlayType("audio/x-mp4;") || n.canPlayType("audio/mp4;") || n.canPlayType("audio/aac;")).replace(/^no$/, ""),
                        weba: !!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""),
                        webm: !!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ""),
                        dolby: !!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/, ""),
                        flac: !!(n.canPlayType("audio/x-flac;") || n.canPlayType("audio/flac;")).replace(/^no$/, "")
                    }, e
                },
                _enableMobileAudio: function() {
                    var e = this || t,
                        n = /iPhone|iPad|iPod|Android|BlackBerry|BB10|Silk|Mobi/i.test(e._navigator && e._navigator.userAgent),
                        r = !!("ontouchend" in window || e._navigator && e._navigator.maxTouchPoints > 0 || e._navigator && e._navigator.msMaxTouchPoints > 0);
                    if (!e._mobileEnabled && e.ctx && (n || r)) {
                        e._mobileEnabled = !1, e._mobileUnloaded || 44100 === e.ctx.sampleRate || (e._mobileUnloaded = !0, e.unload()), e._scratchBuffer = e.ctx.createBuffer(1, 1, 22050);
                        var i = function() {
                            t._autoResume();
                            var n = e.ctx.createBufferSource();
                            n.buffer = e._scratchBuffer, n.connect(e.ctx.destination), void 0 === n.start ? n.noteOn(0) : n.start(0), "function" == typeof e.ctx.resume && e.ctx.resume(), n.onended = function() {
                                n.disconnect(0), e._mobileEnabled = !0, e.mobileAutoEnable = !1, document.removeEventListener("touchstart", i, !0), document.removeEventListener("touchend", i, !0)
                            }
                        };
                        return document.addEventListener("touchstart", i, !0), document.addEventListener("touchend", i, !0), e
                    }
                },
                _autoSuspend: function() {
                    var e = this;
                    if (e.autoSuspend && e.ctx && void 0 !== e.ctx.suspend && t.usingWebAudio) {
                        for (var n = 0; n < e._howls.length; n++)
                            if (e._howls[n]._webAudio)
                                for (var r = 0; r < e._howls[n]._sounds.length; r++)
                                    if (!e._howls[n]._sounds[r]._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,
                n = function(e) {
                    var t = this;
                    e.src && 0 !== e.src.length && t.init(e)
                };
            n.prototype = {
                init: function(e) {
                    var n = this;
                    return t.ctx || u(), n._autoplay = e.autoplay || !1, n._format = "string" != typeof e.format ? e.format : [e.format], n._html5 = e.html5 || !1, n._muted = e.mute || !1, n._loop = e.loop || !1, n._pool = e.pool || 5, n._preload = "boolean" != typeof e.preload || e.preload, n._rate = e.rate || 1, n._sprite = e.sprite || {}, n._src = "string" != typeof e.src ? e.src : [e.src], n._volume = void 0 !== e.volume ? e.volume : 1, n._xhrWithCredentials = e.xhrWithCredentials || !1, n._duration = 0, n._state = "unloaded", n._sounds = [], n._endTimers = {}, n._queue = [], n._playLock = !1, n._onend = e.onend ? [{
                        fn: e.onend
                    }] : [], n._onfade = e.onfade ? [{
                        fn: e.onfade
                    }] : [], n._onload = e.onload ? [{
                        fn: e.onload
                    }] : [], n._onloaderror = e.onloaderror ? [{
                        fn: e.onloaderror
                    }] : [], n._onplayerror = e.onplayerror ? [{
                        fn: e.onplayerror
                    }] : [], n._onpause = e.onpause ? [{
                        fn: e.onpause
                    }] : [], n._onplay = e.onplay ? [{
                        fn: e.onplay
                    }] : [], n._onstop = e.onstop ? [{
                        fn: e.onstop
                    }] : [], n._onmute = e.onmute ? [{
                        fn: e.onmute
                    }] : [], n._onvolume = e.onvolume ? [{
                        fn: e.onvolume
                    }] : [], n._onrate = e.onrate ? [{
                        fn: e.onrate
                    }] : [], n._onseek = e.onseek ? [{
                        fn: e.onseek
                    }] : [], n._onresume = [], n._webAudio = t.usingWebAudio && !n._html5, void 0 !== t.ctx && t.ctx && t.mobileAutoEnable && t._enableMobileAudio(), t._howls.push(n), n._autoplay && n._queue.push({
                        event: "play",
                        action: function() {
                            n.play()
                        }
                    }), n._preload && n.load(), n
                },
                load: function() {
                    var e = this,
                        n = null;
                    if (t.noAudio) return void e._emit("loaderror", null, "No audio support.");
                    "string" == typeof e._src && (e._src = [e._src]);
                    for (var i = 0; i < e._src.length; i++) {
                        var a, s;
                        if (e._format && e._format[i]) a = e._format[i];
                        else {
                            if ("string" != typeof(s = e._src[i])) {
                                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)) {
                            n = e._src[i];
                            break
                        }
                    }
                    return n ? (e._src = n, e._state = "loading", "https:" === window.location.protocol && "http:" === n.slice(0, 5) && (e._html5 = !0, e._webAudio = !1), new r(e), e._webAudio && o(e), e) : void e._emit("loaderror", null, "No codec support for selected audio sources.")
                },
                play: function(e, n) {
                    var r = this,
                        i = null;
                    if ("number" == typeof e) i = e, e = null;
                    else {
                        if ("string" == typeof e && "loaded" === r._state && !r._sprite[e]) return null;
                        if (void 0 === e) {
                            e = "__default";
                            for (var o = 0, a = 0; a < r._sounds.length; a++) r._sounds[a]._paused && !r._sounds[a]._ended && (o++, i = r._sounds[a]._id);
                            1 === o ? e = null : i = null
                        }
                    }
                    var s = i ? r._soundById(i) : r._inactiveSound();
                    if (!s) return null;
                    if (i && !e && (e = s._sprite || "__default"), "loaded" !== r._state) {
                        s._sprite = e, s._ended = !1;
                        var l = s._id;
                        return r._queue.push({
                            event: "play",
                            action: function() {
                                r.play(l)
                            }
                        }), l
                    }
                    if (i && !s._paused) return n || r._loadQueue("play"), s._id;
                    r._webAudio && t._autoResume();
                    var u = Math.max(0, s._seek > 0 ? s._seek : r._sprite[e][0] / 1e3),
                        c = Math.max(0, (r._sprite[e][0] + r._sprite[e][1]) / 1e3 - u),
                        d = 1e3 * c / Math.abs(s._rate);
                    s._paused = !1, s._ended = !1, s._sprite = e, s._seek = u, s._start = r._sprite[e][0] / 1e3, s._stop = (r._sprite[e][0] + r._sprite[e][1]) / 1e3, s._loop = !(!s._loop && !r._sprite[e][2]);
                    var h = s._node;
                    if (r._webAudio) {
                        var p = function() {
                            r._refreshBuffer(s);
                            var e = s._muted || r._muted ? 0 : s._volume;
                            h.gain.setValueAtTime(e, t.ctx.currentTime), s._playStart = t.ctx.currentTime, void 0 === h.bufferSource.start ? s._loop ? h.bufferSource.noteGrainOn(0, u, 86400) : h.bufferSource.noteGrainOn(0, u, c) : s._loop ? h.bufferSource.start(0, u, 86400) : h.bufferSource.start(0, u, c), d !== 1 / 0 && (r._endTimers[s._id] = setTimeout(r._ended.bind(r, s), d)), n || setTimeout(function() {
                                r._emit("play", s._id)
                            }, 0)
                        };
                        "running" === t.state ? p() : (r.once("resume", p), r._clearTimer(s._id))
                    } else {
                        var f = function() {
                                h.currentTime = u, h.muted = s._muted || r._muted || t._muted || h.muted, h.volume = s._volume * t.volume(), h.playbackRate = s._rate;
                                try {
                                    var i = h.play();
                                    if ("undefined" != typeof Promise && i instanceof Promise) {
                                        r._playLock = !0;
                                        var o = function() {
                                            r._playLock = !1, n || r._emit("play", s._id)
                                        };
                                        i.then(o, o)
                                    } else n || r._emit("play", s._id);
                                    if (h.paused) return void r._emit("playerror", s._id, "Playback was unable to start. This is most commonly an issue on mobile devices where playback was not within a user interaction.");
                                    "__default" !== e ? r._endTimers[s._id] = setTimeout(r._ended.bind(r, s), d) : (r._endTimers[s._id] = function() {
                                        r._ended(s), h.removeEventListener("ended", r._endTimers[s._id], !1)
                                    }, h.addEventListener("ended", r._endTimers[s._id], !1))
                                } catch (e) {
                                    r._emit("playerror", s._id, e)
                                }
                            },
                            m = window && window.ejecta || !h.readyState && t._navigator.isCocoonJS;
                        if (h.readyState >= 3 || m) f();
                        else {
                            var g = function() {
                                f(), h.removeEventListener(t._canPlayEvent, g, !1)
                            };
                            h.addEventListener(t._canPlayEvent, g, !1), r._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 n = t._getSoundIds(e), r = 0; r < n.length; r++) {
                        t._clearTimer(n[r]);
                        var i = t._soundById(n[r]);
                        if (i && !i._paused && (i._seek = t.seek(n[r]), i._rateSeek = 0, i._paused = !0, t._stopFade(n[r]), i._node))
                            if (t._webAudio) {
                                if (!i._node.bufferSource) continue;
                                void 0 === i._node.bufferSource.stop ? i._node.bufferSource.noteOff(0) : i._node.bufferSource.stop(0), t._cleanBuffer(i._node)
                            } else isNaN(i._node.duration) && i._node.duration !== 1 / 0 || i._node.pause();
                        arguments[1] || t._emit("pause", i ? i._id : null)
                    }
                    return t
                },
                stop: function(e, t) {
                    var n = this;
                    if ("loaded" !== n._state) return n._queue.push({
                        event: "stop",
                        action: function() {
                            n.stop(e)
                        }
                    }), n;
                    for (var r = n._getSoundIds(e), i = 0; i < r.length; i++) {
                        n._clearTimer(r[i]);
                        var o = n._soundById(r[i]);
                        o && (o._seek = o._start || 0, o._rateSeek = 0, o._paused = !0, o._ended = !0, n._stopFade(r[i]), o._node && (n._webAudio ? o._node.bufferSource && (void 0 === o._node.bufferSource.stop ? o._node.bufferSource.noteOff(0) : o._node.bufferSource.stop(0), n._cleanBuffer(o._node)) : isNaN(o._node.duration) && o._node.duration !== 1 / 0 || (o._node.currentTime = o._start || 0, o._node.pause())), t || n._emit("stop", o._id))
                    }
                    return n
                },
                mute: function(e, n) {
                    var r = this;
                    if ("loaded" !== r._state) return r._queue.push({
                        event: "mute",
                        action: function() {
                            r.mute(e, n)
                        }
                    }), r;
                    if (void 0 === n) {
                        if ("boolean" != typeof e) return r._muted;
                        r._muted = e
                    }
                    for (var i = r._getSoundIds(n), o = 0; o < i.length; o++) {
                        var a = r._soundById(i[o]);
                        a && (a._muted = e, a._interval && r._stopFade(a._id), r._webAudio && a._node ? a._node.gain.setValueAtTime(e ? 0 : a._volume, t.ctx.currentTime) : a._node && (a._node.muted = !!t._muted || e), r._emit("mute", a._id))
                    }
                    return r
                },
                volume: function() {
                    var e, n, r = this,
                        i = arguments;
                    if (0 === i.length) return r._volume;
                    1 === i.length || 2 === i.length && void 0 === i[1] ? r._getSoundIds().indexOf(i[0]) >= 0 ? n = parseInt(i[0], 10) : e = parseFloat(i[0]) : i.length >= 2 && (e = parseFloat(i[0]), n = parseInt(i[1], 10));
                    var o;
                    if (!(void 0 !== e && e >= 0 && e <= 1)) return o = n ? r._soundById(n) : r._sounds[0], o ? o._volume : 0;
                    if ("loaded" !== r._state) return r._queue.push({
                        event: "volume",
                        action: function() {
                            r.volume.apply(r, i)
                        }
                    }), r;
                    void 0 === n && (r._volume = e), n = r._getSoundIds(n);
                    for (var a = 0; a < n.length; a++)(o = r._soundById(n[a])) && (o._volume = e, i[2] || r._stopFade(n[a]), r._webAudio && o._node && !o._muted ? o._node.gain.setValueAtTime(e, t.ctx.currentTime) : o._node && !o._muted && (o._node.volume = e * t.volume()), r._emit("volume", o._id));
                    return r
                },
                fade: function(e, n, r, i) {
                    var o = this;
                    if ("loaded" !== o._state) return o._queue.push({
                        event: "fade",
                        action: function() {
                            o.fade(e, n, r, i)
                        }
                    }), o;
                    o.volume(e, i);
                    for (var a = o._getSoundIds(i), s = 0; s < a.length; s++) {
                        var l = o._soundById(a[s]);
                        if (l) {
                            if (i || o._stopFade(a[s]), o._webAudio && !l._muted) {
                                var u = t.ctx.currentTime,
                                    c = u + r / 1e3;
                                l._volume = e, l._node.gain.setValueAtTime(e, u), l._node.gain.linearRampToValueAtTime(n, c)
                            }
                            o._startFadeInterval(l, e, n, r, a[s], void 0 === i)
                        }
                    }
                    return o
                },
                _startFadeInterval: function(e, t, n, r, i, o) {
                    var a = this,
                        s = t,
                        l = n - t,
                        u = Math.abs(l / .01),
                        c = Math.max(4, u > 0 ? r / u : r),
                        d = Date.now();
                    e._fadeTo = n, e._interval = setInterval(function() {
                        var i = (Date.now() - d) / r;
                        d = Date.now(), s += l * i, 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), (n < t && s <= n || n > t && s >= n) && (clearInterval(e._interval), e._interval = null, e._fadeTo = null, a.volume(n, e._id), a._emit("fade", e._id))
                    }, c)
                },
                _stopFade: function(e) {
                    var n = this,
                        r = n._soundById(e);
                    return r && r._interval && (n._webAudio && r._node.gain.cancelScheduledValues(t.ctx.currentTime), clearInterval(r._interval), r._interval = null, n.volume(r._fadeTo, e), r._fadeTo = null, n._emit("fade", e)), n
                },
                loop: function() {
                    var e, t, n, r = this,
                        i = arguments;
                    if (0 === i.length) return r._loop;
                    if (1 === i.length) {
                        if ("boolean" != typeof i[0]) return !!(n = r._soundById(parseInt(i[0], 10))) && n._loop;
                        e = i[0], r._loop = e
                    } else 2 === i.length && (e = i[0], t = parseInt(i[1], 10));
                    for (var o = r._getSoundIds(t), a = 0; a < o.length; a++)(n = r._soundById(o[a])) && (n._loop = e, r._webAudio && n._node && n._node.bufferSource && (n._node.bufferSource.loop = e, e && (n._node.bufferSource.loopStart = n._start || 0, n._node.bufferSource.loopEnd = n._stop)));
                    return r
                },
                rate: function() {
                    var e, n, r = this,
                        i = arguments;
                    if (0 === i.length) n = r._sounds[0]._id;
                    else if (1 === i.length) {
                        var o = r._getSoundIds(),
                            a = o.indexOf(i[0]);
                        a >= 0 ? n = parseInt(i[0], 10) : e = parseFloat(i[0])
                    } else 2 === i.length && (e = parseFloat(i[0]), n = parseInt(i[1], 10));
                    var s;
                    if ("number" != typeof e) return s = r._soundById(n), s ? s._rate : r._rate;
                    if ("loaded" !== r._state) return r._queue.push({
                        event: "rate",
                        action: function() {
                            r.rate.apply(r, i)
                        }
                    }), r;
                    void 0 === n && (r._rate = e), n = r._getSoundIds(n);
                    for (var l = 0; l < n.length; l++)
                        if (s = r._soundById(n[l])) {
                            s._rateSeek = r.seek(n[l]), s._playStart = r._webAudio ? t.ctx.currentTime : s._playStart, s._rate = e, r._webAudio && s._node && s._node.bufferSource ? s._node.bufferSource.playbackRate.setValueAtTime(e, t.ctx.currentTime) : s._node && (s._node.playbackRate = e);
                            var u = r.seek(n[l]),
                                c = (r._sprite[s._sprite][0] + r._sprite[s._sprite][1]) / 1e3 - u,
                                d = 1e3 * c / Math.abs(s._rate);
                            !r._endTimers[n[l]] && s._paused || (r._clearTimer(n[l]), r._endTimers[n[l]] = setTimeout(r._ended.bind(r, s), d)), r._emit("rate", s._id)
                        }
                    return r
                },
                seek: function() {
                    var e, n, r = this,
                        i = arguments;
                    if (0 === i.length) n = r._sounds[0]._id;
                    else if (1 === i.length) {
                        var o = r._getSoundIds(),
                            a = o.indexOf(i[0]);
                        a >= 0 ? n = parseInt(i[0], 10) : r._sounds.length && (n = r._sounds[0]._id, e = parseFloat(i[0]))
                    } else 2 === i.length && (e = parseFloat(i[0]), n = parseInt(i[1], 10));
                    if (void 0 === n) return r;
                    if ("loaded" !== r._state) return r._queue.push({
                        event: "seek",
                        action: function() {
                            r.seek.apply(r, i)
                        }
                    }), r;
                    var s = r._soundById(n);
                    if (s) {
                        if (!("number" == typeof e && e >= 0)) {
                            if (r._webAudio) {
                                var l = r.playing(n) ? 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 = r.playing(n);
                        if (c && r.pause(n, !0), s._seek = e, s._ended = !1, r._clearTimer(n), c && r.play(n, !0), !r._webAudio && s._node && (s._node.currentTime = e), c && !r._webAudio) {
                            var d = function() {
                                r._playLock ? setTimeout(d, 0) : r._emit("seek", n)
                            };
                            setTimeout(d, 0)
                        } else r._emit("seek", n)
                    }
                    return r
                },
                playing: function(e) {
                    var t = this;
                    if ("number" == typeof e) {
                        var n = t._soundById(e);
                        return !!n && !n._paused
                    }
                    for (var r = 0; r < t._sounds.length; r++)
                        if (!t._sounds[r]._paused) return !0;
                    return !1
                },
                duration: function(e) {
                    var t = this,
                        n = t._duration,
                        r = t._soundById(e);
                    return r && (n = t._sprite[r._sprite][1] / 1e3), n
                },
                state: function() {
                    return this._state
                },
                unload: function() {
                    for (var e = this, n = e._sounds, r = 0; r < n.length; r++) {
                        n[r]._paused || e.stop(n[r]._id), e._webAudio || (/MSIE |Trident\//.test(t._navigator && t._navigator.userAgent) || (n[r]._node.src = "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"), n[r]._node.removeEventListener("error", n[r]._errorFn, !1), n[r]._node.removeEventListener(t._canPlayEvent, n[r]._loadFn, !1)), delete n[r]._node, e._clearTimer(n[r]._id);
                        var o = t._howls.indexOf(e);
                        o >= 0 && t._howls.splice(o, 1)
                    }
                    var a = !0;
                    for (r = 0; r < t._howls.length; r++)
                        if (t._howls[r]._src === e._src) {
                            a = !1;
                            break
                        }
                    return i && a && delete i[e._src], t.noAudio = !1, e._state = "unloaded", e._sounds = [], e = null, null
                },
                on: function(e, t, n, r) {
                    var i = this,
                        o = i["_on" + e];
                    return "function" == typeof t && o.push(r ? {
                        id: n,
                        fn: t,
                        once: r
                    } : {
                        id: n,
                        fn: t
                    }), i
                },
                off: function(e, t, n) {
                    var r = this,
                        i = r["_on" + e],
                        o = 0;
                    if ("number" == typeof t && (n = t, t = null), t || n)
                        for (o = 0; o < i.length; o++) {
                            var a = n === i[o].id;
                            if (t === i[o].fn && a || !t && a) {
                                i.splice(o, 1);
                                break
                            }
                        } else if (e) r["_on" + e] = [];
                        else {
                            var s = Object.keys(r);
                            for (o = 0; o < s.length; o++) 0 === s[o].indexOf("_on") && Array.isArray(r[s[o]]) && (r[s[o]] = [])
                        }
                    return r
                },
                once: function(e, t, n) {
                    var r = this;
                    return r.on(e, t, n, 1), r
                },
                _emit: function(e, t, n) {
                    for (var r = this, i = r["_on" + e], o = i.length - 1; o >= 0; o--) i[o].id && i[o].id !== t && "load" !== e || (setTimeout(function(e) {
                        e.call(this, t, n)
                    }.bind(r, i[o].fn), 0), i[o].once && r.off(e, i[o].fn, i[o].id));
                    return r._loadQueue(e), r
                },
                _loadQueue: function(e) {
                    var t = this;
                    if (t._queue.length > 0) {
                        var n = t._queue[0];
                        n.event === e && (t._queue.shift(), t._loadQueue()), e || n.action()
                    }
                    return t
                },
                _ended: function(e) {
                    var n = this,
                        r = e._sprite;
                    if (!n._webAudio && e._node && !e._node.paused && !e._node.ended && e._node.currentTime < e._stop) return setTimeout(n._ended.bind(n, e), 100), n;
                    var i = !(!e._loop && !n._sprite[r][2]);
                    if (n._emit("end", e._id), !n._webAudio && i && n.stop(e._id, !0).play(e._id), n._webAudio && i) {
                        n._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);
                        n._endTimers[e._id] = setTimeout(n._ended.bind(n, e), o)
                    }
                    return n._webAudio && !i && (e._paused = !0, e._ended = !0, e._seek = e._start || 0, e._rateSeek = 0, n._clearTimer(e._id), n._cleanBuffer(e._node), t._autoSuspend()), n._webAudio || i || n.stop(e._id), n
                },
                _clearTimer: function(e) {
                    var t = this;
                    if (t._endTimers[e]) {
                        if ("function" != typeof t._endTimers[e]) clearTimeout(t._endTimers[e]);
                        else {
                            var n = t._soundById(e);
                            n && n._node && n._node.removeEventListener("ended", t._endTimers[e], !1)
                        }
                        delete t._endTimers[e]
                    }
                    return t
                },
                _soundById: function(e) {
                    for (var t = this, n = 0; n < t._sounds.length; n++)
                        if (e === t._sounds[n]._id) return t._sounds[n];
                    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 r(e)
                },
                _drain: function() {
                    var e = this,
                        t = e._pool,
                        n = 0,
                        r = 0;
                    if (!(e._sounds.length < t)) {
                        for (r = 0; r < e._sounds.length; r++) e._sounds[r]._ended && n++;
                        for (r = e._sounds.length - 1; r >= 0; r--) {
                            if (n <= t) return;
                            e._sounds[r]._ended && (e._webAudio && e._sounds[r]._node && e._sounds[r]._node.disconnect(0), e._sounds.splice(r, 1), n--)
                        }
                    }
                },
                _getSoundIds: function(e) {
                    var t = this;
                    if (void 0 === e) {
                        for (var n = [], r = 0; r < t._sounds.length; r++) n.push(t._sounds[r]._id);
                        return n
                    }
                    return [e]
                },
                _refreshBuffer: function(e) {
                    var n = this;
                    return e._node.bufferSource = t.ctx.createBufferSource(), e._node.bufferSource.buffer = i[n._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), e._node.bufferSource.playbackRate.setValueAtTime(e._rate, t.ctx.currentTime), n
                },
                _cleanBuffer: function(e) {
                    var n = this;
                    if (t._scratchBuffer) {
                        e.bufferSource.onended = null, e.bufferSource.disconnect(0);
                        try {
                            e.bufferSource.buffer = t._scratchBuffer
                        } catch (e) {}
                    }
                    return e.bufferSource = null, n
                }
            };
            var r = function(e) {
                this._parent = e, this.init()
            };
            r.prototype = {
                init: function() {
                    var e = this,
                        n = e._parent;
                    return e._muted = n._muted, e._loop = n._loop, e._volume = n._volume, e._rate = n._rate, e._seek = 0, e._paused = !0, e._ended = !0, e._sprite = "__default", e._id = ++t._counter, n._sounds.push(e), e.create(), e
                },
                create: function() {
                    var e = this,
                        n = e._parent,
                        r = t._muted || e._muted || e._parent._muted ? 0 : e._volume;
                    return n._webAudio ? (e._node = void 0 === t.ctx.createGain ? t.ctx.createGainNode() : t.ctx.createGain(), e._node.gain.setValueAtTime(r, t.ctx.currentTime), e._node.paused = !0, e._node.connect(t.masterGain)) : (e._node = new Audio, 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 = n._src, e._node.preload = "auto", e._node.volume = r * t.volume(), e._node.load()), e
                },
                reset: function() {
                    var e = this,
                        n = e._parent;
                    return e._muted = n._muted, e._loop = n._loop, e._volume = n._volume, e._rate = n._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,
                        n = e._parent;
                    n._duration = Math.ceil(10 * e._node.duration) / 10, 0 === Object.keys(n._sprite).length && (n._sprite = {
                        __default: [0, 1e3 * n._duration]
                    }), "loaded" !== n._state && (n._state = "loaded", n._emit("load"), n._loadQueue()), e._node.removeEventListener(t._canPlayEvent, e._loadFn, !1)
                }
            };
            var i = {},
                o = function(e) {
                    var t = e._src;
                    if (i[t]) return e._duration = i[t].duration, void l(e);
                    if (/^data:[^;]+;base64,/.test(t)) {
                        for (var n = atob(t.split(",")[1]), r = new Uint8Array(n.length), o = 0; o < n.length; ++o) r[o] = n.charCodeAt(o);
                        s(r.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 i[t], e.load())
                        }, a(u)
                    }
                },
                a = function(e) {
                    try {
                        e.send()
                    } catch (t) {
                        e.onerror()
                    }
                },
                s = function(e, n) {
                    t.ctx.decodeAudioData(e, function(e) {
                        e && n._sounds.length > 0 && (i[n._src] = e, l(n, e))
                    }, function() {
                        n._emit("loaderror", null, "Decoding audio data failed.")
                    })
                },
                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() {
                    try {
                        "undefined" != typeof AudioContext ? t.ctx = new AudioContext : "undefined" != typeof webkitAudioContext ? t.ctx = new webkitAudioContext : t.usingWebAudio = !1
                    } catch (e) {
                        t.usingWebAudio = !1
                    }
                    var e = /iP(hone|od|ad)/.test(t._navigator && t._navigator.platform),
                        n = t._navigator && t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),
                        r = n ? parseInt(n[1], 10) : null;
                    if (e && r && r < 9) {
                        var i = /safari/.test(t._navigator && t._navigator.userAgent.toLowerCase());
                        (t._navigator && t._navigator.standalone && !i || t._navigator && !t._navigator.standalone && !i) && (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: n
                    }
                }), "undefined" != typeof exports && (exports.Howler = t, exports.Howl = n),
                "undefined" != typeof window ? (window.HowlerGlobal = e, window.Howler = t, window.Howl = n, window.Sound = r) : "undefined" != typeof global && (global.HowlerGlobal = e, global.Howler = t, global.Howl = n, global.Sound = r)
        }(),
        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 n = t._howls.length - 1; n >= 0; n--) t._howls[n].stereo(e);
                return t
            }, HowlerGlobal.prototype.pos = function(e, t, n) {
                var r = this;
                return r.ctx && r.ctx.listener ? (t = "number" != typeof t ? r._pos[1] : t, n = "number" != typeof n ? r._pos[2] : n, "number" != typeof e ? r._pos : (r._pos = [e, t, n], r.ctx.listener.setPosition(r._pos[0], r._pos[1], r._pos[2]), r)) : r
            }, HowlerGlobal.prototype.orientation = function(e, t, n, r, i, o) {
                var a = this;
                if (!a.ctx || !a.ctx.listener) return a;
                var s = a._orientation;
                return t = "number" != typeof t ? s[1] : t, n = "number" != typeof n ? s[2] : n, r = "number" != typeof r ? s[3] : r, i = "number" != typeof i ? s[4] : i, o = "number" != typeof o ? s[5] : o, "number" != typeof e ? s : (a._orientation = [e, t, n, r, i, o], a.ctx.listener.setOrientation(e, t, n, r, i, o), a)
            }, Howl.prototype.init = function(e) {
                return function(t) {
                    var n = this;
                    return n._orientation = t.orientation || [1, 0, 0], n._stereo = t.stereo || null, n._pos = t.pos || null, n._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
                    }, n._onstereo = t.onstereo ? [{
                        fn: t.onstereo
                    }] : [], n._onpos = t.onpos ? [{
                        fn: t.onpos
                    }] : [], n._onorientation = t.onorientation ? [{
                        fn: t.onorientation
                    }] : [], e.call(this, t)
                }
            }(Howl.prototype.init), Howl.prototype.stereo = function(t, n) {
                var r = this;
                if (!r._webAudio) return r;
                if ("loaded" !== r._state) return r._queue.push({
                    event: "stereo",
                    action: function() {
                        r.stereo(t, n)
                    }
                }), r;
                var i = void 0 === Howler.ctx.createStereoPanner ? "spatial" : "stereo";
                if (void 0 === n) {
                    if ("number" != typeof t) return r._stereo;
                    r._stereo = t, r._pos = [t, 0, 0]
                }
                for (var o = r._getSoundIds(n), a = 0; a < o.length; a++) {
                    var s = r._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, i), "spatial" === i ? s._panner.setPosition(t, 0, 0) : s._panner.pan.setValueAtTime(t, Howler.ctx.currentTime)), r._emit("stereo", s._id)
                    }
                }
                return r
            }, Howl.prototype.pos = function(t, n, r, i) {
                var o = this;
                if (!o._webAudio) return o;
                if ("loaded" !== o._state) return o._queue.push({
                    event: "pos",
                    action: function() {
                        o.pos(t, n, r, i)
                    }
                }), o;
                if (n = "number" != typeof n ? 0 : n, r = "number" != typeof r ? -.5 : r, void 0 === i) {
                    if ("number" != typeof t) return o._pos;
                    o._pos = [t, n, r]
                }
                for (var a = o._getSoundIds(i), s = 0; s < a.length; s++) {
                    var l = o._soundById(a[s]);
                    if (l) {
                        if ("number" != typeof t) return l._pos;
                        l._pos = [t, n, r], l._node && (l._panner && !l._panner.pan || e(l, "spatial"), l._panner.setPosition(t, n, r)), o._emit("pos", l._id)
                    }
                }
                return o
            }, Howl.prototype.orientation = function(t, n, r, i) {
                var o = this;
                if (!o._webAudio) return o;
                if ("loaded" !== o._state) return o._queue.push({
                    event: "orientation",
                    action: function() {
                        o.orientation(t, n, r, i)
                    }
                }), o;
                if (n = "number" != typeof n ? o._orientation[1] : n, r = "number" != typeof r ? o._orientation[2] : r, void 0 === i) {
                    if ("number" != typeof t) return o._orientation;
                    o._orientation = [t, n, r]
                }
                for (var a = o._getSoundIds(i), s = 0; s < a.length; s++) {
                    var l = o._soundById(a[s]);
                    if (l) {
                        if ("number" != typeof t) return l._orientation;
                        l._orientation = [t, n, r], l._node && (l._panner || (l._pos || (l._pos = o._pos || [0, 0, -.5]), e(l, "spatial")), l._panner.setOrientation(t, n, r)), o._emit("orientation", l._id)
                    }
                }
                return o
            }, Howl.prototype.pannerAttr = function() {
                var t, n, r, i = this,
                    o = arguments;
                if (!i._webAudio) return i;
                if (0 === o.length) return i._pannerAttr;
                if (1 === o.length) {
                    if ("object" != typeof o[0]) return r = i._soundById(parseInt(o[0], 10)), r ? r._pannerAttr : i._pannerAttr;
                    t = o[0], void 0 === n && (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
                    }), i._pannerAttr = {
                        coneInnerAngle: void 0 !== t.pannerAttr.coneInnerAngle ? t.pannerAttr.coneInnerAngle : i._coneInnerAngle,
                        coneOuterAngle: void 0 !== t.pannerAttr.coneOuterAngle ? t.pannerAttr.coneOuterAngle : i._coneOuterAngle,
                        coneOuterGain: void 0 !== t.pannerAttr.coneOuterGain ? t.pannerAttr.coneOuterGain : i._coneOuterGain,
                        distanceModel: void 0 !== t.pannerAttr.distanceModel ? t.pannerAttr.distanceModel : i._distanceModel,
                        maxDistance: void 0 !== t.pannerAttr.maxDistance ? t.pannerAttr.maxDistance : i._maxDistance,
                        refDistance: void 0 !== t.pannerAttr.refDistance ? t.pannerAttr.refDistance : i._refDistance,
                        rolloffFactor: void 0 !== t.pannerAttr.rolloffFactor ? t.pannerAttr.rolloffFactor : i._rolloffFactor,
                        panningModel: void 0 !== t.pannerAttr.panningModel ? t.pannerAttr.panningModel : i._panningModel
                    })
                } else 2 === o.length && (t = o[0], n = parseInt(o[1], 10));
                for (var a = i._getSoundIds(n), s = 0; s < a.length; s++)
                    if (r = i._soundById(a[s])) {
                        var l = r._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 = r._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) : (r._pos || (r._pos = i._pos || [0, 0, -.5]), e(r, "spatial"))
                    }
                return i
            }, Sound.prototype.init = function(e) {
                return function() {
                    var t = this,
                        n = t._parent;
                    t._orientation = n._orientation, t._stereo = n._stereo, t._pos = n._pos, t._pannerAttr = n._pannerAttr, e.call(this), t._stereo ? n.stereo(t._stereo) : t._pos && n.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,
                        n = t._parent;
                    return t._orientation = n._orientation, t._pos = n._pos, t._pannerAttr = n._pannerAttr, 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, e._panner.setPosition(e._pos[0], e._pos[1], e._pos[2]), 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/HowlerChannel", ["com/howlerjs/howler", "skbJet/component/utils/PauseTimer"], function(e, t) {
            function n() {}

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

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

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

            function r(t) {
                t._fadeInterval && (e.clearInterval(t._fadeInterval), t._fadeInterval = null)
            }
            var i = [];
            return t.STATUS = {
                Loading: "Loading",
                Playing: "Playing",
                Paused: "Paused",
                Stopped: "Stopped"
            }, t.prototype._currentVolume = 1, t.prototype._fadeOutEndPause = !1, t.prototype.load = function(e, n) {
                this.spriteMap = e.sprite, this.audioTag = new Audio, this.audioTag.muted = !0, this.audioTag.volume = 0, this.status = t.STATUS.Loading;
                var r = this;
                r.audioTag.oncanplaythrough = function() {
                    r.audioTag.onplay = function() {
                        r.audioTag.onplay = null, r.audioTag.pause(), r.status = t.STATUS.Stopped, i.push(r)
                    }, r.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
                    }
                }
                r.audioTag.src = o, r.audioTag.load(), setTimeout(n, 500)
            }, t.prototype.play = function(e, r) {
                if (this.status !== t.STATUS.Loading) try {
                    if (!this.spriteMap[e]) return;
                    var i = 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 = !!r, this._endTimerId = setTimeout(function() {
                        n(i)
                    }, 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,
                        r = e.spriteMap[e._currentPlaying][1] - (1e3 * e.audioTag.currentTime - e.spriteMap[e._currentPlaying][0]);
                    e._endTimerId = setTimeout(function() {
                        n(e)
                    }, r)
                }
            }, 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, n) {
                n = n || {}, t = t || 1500;
                var i = this;
                0 === i.audioTag.volume && (i.audioTag.volume = i._currentVolume);
                var o = i.audioTag.volume / 20;
                r(i), i._fadeInterval = e.setInterval(function() {
                    i.audioTag.volume - o <= 0 ? (i.audioTag.volume = 0, i.pause(), i._fadeOutEndPause = !0, e.clearInterval(i._fadeInterval), n.completeCallback && n.completeCallback()) : i.audioTag.volume -= o
                }, t / 20)
            }, t.prototype.playAndFadeIn = function(t, n, i, o) {
                o = o || {}, i = i || 2e3;
                var a = this,
                    s = a._currentVolume;
                n = n || !1, a.play(t, n), a.audioTag.volume = 0;
                var l = s / 20;
                r(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
                }, i / 20)
            }, t.prototype.cancelFade = function() {
                r(this), this.audioTag.volume = this._currentVolume, this._fadeOutEndPause = !1, this.resume()
            }, t
        }), 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, n) {
            var r = function() {
                    return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream
                }() ? t : n,
                i = {
                    getDeviceWidth: r.getDeviceWidth,
                    getDeviceHeight: r.getDeviceHeight
                };
            return e.implementedBy(i), i
        }), define("skbJet/component/channelAudioPlayer/channelAudioPlayerHelper", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/resourceLoader/resourceLib", "skbJet/component/deviceCompatibility/windowSize"], function(e, t, n) {
            function r() {}

            function i(e) {
                f = e
            }

            function o(e) {
                p = e
            }

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

                function i(t) {
                    var n = t || window.event;
                    n.stopPropagation(), n.cancelBubble = !0, v.removeChild(o);
                    var i = !1;
                    "audio_btn_YES" === this.id && (i = !0), p && p(i), setTimeout(function() {
                        f.muteAll(!i), l(i), e.publish("audioPlayer.playerSelectedWhenGameLaunch", i)
                    }, 110), window.removeEventListener("resize", r)
                }
                if (m) {
                    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", v.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;"), r(), window.addEventListener("resize", r), 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", i), c.addEventListener("click", i)
                }
            }

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

            function l(n) {
                var r = "Sound",
                    i = "On",
                    o = "Off";
                _ = !0, t.i18n.game.MenuCommand.audio && (r = t.i18n.game.MenuCommand.audio.sound, i = 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: r,
                            type: "list",
                            enabled: 1,
                            value: n ? 0 : 1,
                            values: ["0", "1"],
                            valueText: [i, o]
                        }]
                    }
                })
            }

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

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

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

            function h() {
                function n() {
                    if ("device" === r.config.screenEnvironment)
                        if (m) {
                            var o = {
                                query: t.i18n.game.audioLoader.confirm,
                                yes: t.i18n.game.audioLoader.yes,
                                no: t.i18n.game.audioLoader.no
                            };
                            a(o)
                        } else f.muteAll(i), d(!i);
                    else f.muteAll(i), e.publish("audioPlayer.playerSelectedWhenGameLaunch", !i);
                    e.unsubscribe("SKBeInstant.gameParametersUpdated", n)
                }
                var r = require("skbJet/component/SKBeInstant/SKBeInstant");
                if (!(S = r.isSKB())) {
                    v = r.getGameContainerElem();
                    var i = r.config.soundStartDisabled;
                    e.subscribe("SKBeInstant.gameParametersUpdated", n)
                }
            }
            var p, f = {
                    muteAll: r,
                    pauseAll: r,
                    resumeAll: r
                },
                m = !1,
                g = null,
                b = null,
                _ = !1,
                y = null,
                v = document.getElementById("game"),
                x = null,
                S = !0;
            return document.addEventListener("visibilitychange", function() {
                "hidden" === document.visibilityState ? f.pauseAll() : f.resumeAll()
            }), e.subscribe("platformMsg/Kernel/System.Init", c), e.subscribe("platformMsg/ConsoleService/Game.Control", u), e.subscribe("onBeforeShowStage", s), e.subscribe("jLotteryGame.assetsLoadedAndGameReady", h), {
                setChannelAudioPlayer: i,
                setPlayerAudioChoiceCallBack: o,
                gameAudioControlChanged: function(t) {
                    var n = 0;
                    t && (n = 1), e.publish("toPlatform", {
                        channel: "Game",
                        topic: "Game.Control",
                        data: {
                            name: "sound",
                            event: "change",
                            params: [n]
                        }
                    })
                },
                consoleAudioControlChanged: function(e) {
                    var t = !1;
                    return "sound" === e.option && "1" === e.value && (t = !0), t
                },
                enableAudioDialog: function(e) {
                    m = void 0 !== e && null !== e && e
                }
            }
        }), define("skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", ["skbJet/component/utils/Interface", "skbJet/component/channelAudioPlayer/IChannelAudioPlayer", "skbJet/component/channelAudioPlayer/channelAudioPlayerHelper", "com/howlerjs/howler"], function(e, t, n) {
            function r(e) {
                window.Howler.mute(e);
                for (var t in l) l[t] && l[t].mute(e)
            }

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

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

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

            function s() {
                for (var e in l) l[e] && l[e].stop()
            }
            var l = [];
            /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream && (window.Howler.autoSuspend = !1);
            var u = {
                gameAudioControlChanged: n.gameAudioControlChanged,
                consoleAudioControlChanged: n.consoleAudioControlChanged,
                play: function(e, t, n) {
                    e && (t || (t = 0), n || (n = !1), l[t] && (l[t].play(e, n), 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: i,
                resumeChannel: function(e) {
                    l[e] && l[e].resume()
                },
                resumeAll: o,
                muteAll: r,
                _addChannel: function(e, t) {
                    l[t] = e
                },
                volume: function(e, t) {
                    l[e] && l[e].volume(t)
                },
                fadeOut: function(e, t, n) {
                    l[e] && l[e].fadeOut(t, n)
                },
                playAndFadeIn: function(e, t, n, r, i) {
                    t && (e || (e = 0), l[e] && l[e].playAndFadeIn(t, n, r, i))
                },
                cancelFade: function(e) {
                    l[e] && l[e].cancelFade()
                },
                enableAudioDialog: function(e) {
                    n.enableAudioDialog(e)
                }
            };
            return t.implementedBy(u), n.setChannelAudioPlayer(u), n.setPlayerAudioChoiceCallBack(a), u
        }), 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, n, r, i, o, a) {
            function s(e) {
                e = e || {}, e.fileExtFilterList = ["json"], this._initOptions("sounds", e)
            }
            return s.prototype = new t, s.prototype._doLoadFile = function(t, n, r) {
                var s = this.options.queryStr;
                e.httpGetJson(t, function(l) {
                    var u = null;
                    u = window.AudioContext || window.webkitAudioContext ? new i : new o;
                    for (var c = e.getFileNameWithoutExt(t), d = e.getParentFolder(t), h = 0; h < l.urls.length; h++) l.urls[h] = d + l.urls[h] + s;
                    u.load(l, n, r);
                    var p = c.match(/\d+$/);
                    p && p[0] && a._addChannel(u, parseInt(p[0]))
                }, r)
            }, s
        }), define("skbJet/componentManchester/webfontLoader/FontSubLoader", ["skbJet/component/resourceLoader/Util", "skbJet/component/resourceLoader/AbstractSubLoader"], function(e, t) {
            function n(e) {
                e = e || {}, e.fileExtFilterList = ["json"], e.checkInterval = e.checkInterval || 250, e.timeout = e.timeout || 3e4, e.testString = e.testString || "abcdefghijklmnopqrstuvwxyz 1234567890_-", this._initOptions("fonts", e), this._testCanvas = document.createElement("canvas"), this._testCtx = this._testCanvas.getContext("2d")
            }
            return n.prototype = new t, n.prototype._doLoadFile = function(t, n, r) {
                var i = {
                        woff: "woff",
                        woff2: "woff2",
                        ttf: "truetype"
                    },
                    o = ["woff2", "woff", "ttf"],
                    a = this._testCtx,
                    s = this.options;
                e.httpGetJson(t, function(l) {
                    function u() {
                        b += 1, a.font = f + l.family + ", sans-serif", a.measureText(s.testString).width !== m ? n() : b > s.timeout / s.checkInterval ? r() : setTimeout(u, s.checkInterval)
                    }
                    var c = e.getParentFolder(t);
                    "string" == typeof l.files && (l.files = [l.files]), l.files.sort(function(t, n) {
                        return o.indexOf(e.getFileExt(t, !0)) > o.indexOf(e.getFileExt(n, !0))
                    });
                    var d = l.files.map(function(t) {
                        var n = "url(" + c + t + ") ",
                            r = e.getFileExt(t, !0);
                        return n += 'format("' + i[r] + '")'
                    });
                    if ("FontFace" in window) {
                        var h = new window.FontFace(l.family, d[0], l);
                        document.fonts.add(h), h.load().then(function() {
                            n()
                        }).catch(function() {
                            r()
                        })
                    } else {
                        var p = "@font-face {";
                        p += 'font-family: "' + l.family + '";', p += "src: " + d.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 m = a.measureText(s.testString).width,
                            g = document.createElement("style");
                        document.head.appendChild(g), g.sheet.insertRule(p, 0);
                        var b = 0;
                        u()
                    }
                }, r)
            }, n
        }), define("game/LoadController", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/resourceLoader/ResourceLoader", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/howlerAudioPlayer/HowlerAudioSubLoader", "skbJet/componentManchester/webfontLoader/FontSubLoader"], function(e, t, n, r, i, o) {
            function a(n) {
                e.publish("toPlatform", {
                    channel: "Kernel",
                    topic: "LoadProgress",
                    data: {
                        id: "game",
                        items: n.total + 1,
                        current: n.current,
                        complete: !1
                    }
                }), n.complete && (t.init(null, null, "desktop" === s ? "2d" : null), t.showScene("_GameScene"), e.publish("toPlatform", {
                    channel: "Kernel",
                    topic: "LoadProgress",
                    data: {
                        id: "game",
                        items: n.total + 1,
                        current: n.total + 1,
                        complete: !0
                    }
                }))
            }
            var s = window.location.search.match(/&?assetPack=(\w+)&?/)[1],
                l = window.location.search.match(/&?language=((\w|-)+)&?/)[1].toLowerCase(),
                u = window.location.search.match(/&?skincode=(\w+)&?/)[1];
            return e.subscribe("resourceLoader.loadProgress", a), r.load("assetPacks/" + s, l, u), n.getDefault().addSubLoader("sounds", new i({
                type: "sounds"
            })), n.getDefault().addSubLoader("fonts", new o), {}
        }), define("game/BackgroundController", ["skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/pixiResourceLoader/pixiResourceLoader"], function(e, t, n) {
            function r(e) {
                var t;
                "BonusPicker" === e ? t = "" : "CountryPicker" === e ? t = "" : "BuoyBonus" === e ? t = "" : "SubPicker2" === e ? t = "" : "SubPicker1" === e ? t = "" : "AcceptReject" === e ? t = "" : "SubPicker3" === e ? t = "" : "FreeSpin" === e ? t = d : "BaseGame" === e && (t = c), "desktop" === h ? document.body.style.backgroundImage = "url(" + t + ")" : window.innerHeight <= window.innerWidth && "tablet" === h ? document.body.style.backgroundImage = "url(" + t + ")" : window.innerHeight >= window.innerWidth && "mobile" === h && (document.body.style.backgroundImage = "url(" + t + ")")
            }

            function i(e) {
                r(e.response.OutcomeDetail.NextStage), "FreeSpin" !== e.response.OutcomeDetail.NextStage && "BaseGame" !== e.response.OutcomeDetail.NextStage && t.publish("displayOrHideBasePage", !1)
            }

            function o(t) {
                "BonusPicker" === t.response.OutcomeDetail.NextStage ? e.getTimer().setTimeout(function() {
                    r(t.response.OutcomeDetail.NextStage)
                }, 700) : r(t.response.OutcomeDetail.NextStage)
            }

            function a(e) {
                if (h = e.serverConfig.paramGame.assetPack, "INT" !== e.serverConfig.channel) {
                    var t = document.createElement("style");
                    "tablet" === h ? t.innerHTML = "#_rotateMessageWrapper{\n\tmargin: 0 auto;\n\tpadding-top: 20%;\n\tvisibility:hidden;\n}\n#_rotateMessageBG{\n\tbackground-image: url(assetPacks/" + h + "/images/rotate2.png" + window._cacheFlag.queryStr + ");\n\tmargin-left: -15vw;\n\twidth: 30vw;\n\theight: 60vh;\n\tposition: absolute;\n\tbackground-size: contain;\n\tbackground-position: center;\n\tmargin-top: -30vh;\n\ttop: 50%;\n\tleft: 50%;\n\tbackground-repeat: no-repeat;\n}\n#_rotateMessageAnim{\n\tbackground-image: url(assetPacks/" + h + "/images/rotate1.png" + window._cacheFlag.queryStr + ");\n\tmargin-left: -9vw;\n\ttop: 50%;\n\tleft: 50%;\n\topacity: 1;\n\twidth: 18vw;\n\theight: 60vh;\n\tposition: absolute;\n\tbackground-size: contain;\n\tbackground-position: center;\n\tbackground-repeat: no-repeat;\n\t-webkit-animation: rotateDeviceAnim 4s infinite;\n\tmargin-top: -30vh;\n}\n@-webkit-keyframes rotateDeviceAnim{\n\t0% {\n\topacity: 0; transform: rotate(0deg);\n\t}\n\t9% {\n\topacity: 100;\n\t}\n\t10% {\n\ttransform: rotate(0deg);\n\t}\n\t50% {\n\ttransform: rotate(-90deg);\n\t}\n\t90% {\n\topacity: 100;\n\t}\n\t100% {\n\topacity: 0; transform: rotate(-90deg);\n\t}\n}\n#_rotateMessageText{\n\ttop: 65%;\n\tposition: absolute;\n\twidth: 100%;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\ttext-align: center;\n\tfont-size: 4vw;\n\tcolor: #fff;\n}" : "mobile" === h && (t.innerHTML = "#_rotateMessageWrapper{\n\tmargin: 0 auto;\n\tpadding-top: 20%;\n\tvisibility:hidden;\n}\n#_rotateMessageBG{\n\tbackground-image: url(assetPacks/" + h + "/images/rotate2.png" + window._cacheFlag.queryStr + ");\n\ttransform: rotate(90deg);\n\tmargin-left: -15vw;\n\twidth: 30vw;\n\theight: 60vh;\n\tposition: absolute;\n\tbackground-size: contain;\n\tbackground-position: center;\n\tmargin-top: -30vh;\n\ttop: 50%;\n\tleft: 50%;\n\tbackground-repeat: no-repeat;\n}\n#_rotateMessageAnim{\n\tbackground-image: url(assetPacks/" + h + "/images/rotate1.png" + window._cacheFlag.queryStr + ");\n\tmargin-left: -9vw;\n\ttop: 50%;\n\tleft: 50%;\n\topacity: 1;\n\twidth: 18vw;\n\theight: 60vh;\n\tposition: absolute;\n\tbackground-size: contain;\n\tbackground-position: center;\n\tbackground-repeat: no-repeat;\n\t-webkit-animation: rotateDeviceAnim 4s infinite;\n\tmargin-top: -30vh;\n}\n@-webkit-keyframes rotateDeviceAnim{\n\t0% {\n\topacity: 0; transform: rotate(-90deg);\n\t}\n\t9% {\n\topacity: 100;\n\t}\n\t10% {\n\ttransform: rotate(-90deg);\n\t}\n\t50% {\n\ttransform: rotate(0deg);\n\t}\n\t90% {\n\topacity: 100;\n\t}\n\t100% {\n\topacity: 0; transform: rotate(0deg);\n\t}\n}\n#_rotateMessageText{\n\ttop: 90%;\n\tposition: absolute;\n\twidth: 100%;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\ttext-align: center;\n\tfont-size: 5vh;\n\tcolor: #fff;\n}");
                    var r = document.createElement("div");
                    r.id = "_rotateMessageWrapper", r.innerHTML = '<div id="_rotateMessageBG"></div><div id="_rotateMessageAnim"></div><div id="_rotateMessageText">' + ("mobile" === h ? n.i18n.Game.rotateMessage2 : n.i18n.Game.rotateMessage) + "</div>", document.body.appendChild(r), document.head.appendChild(t)
                }
            }

            function s(e) {}

            function l(e) {
                c = n.getImgObj("backgroundBasegame").src, d = n.getImgObj("backgroundFreespins").src;
                var t = e.GameLogicResponse.OutcomeDetail.Stage;
                "SubPicker1" === t && r(t)
            }

            function u(e) {
                switch (e) {
                    case "imgUrl_base":
                        return c;
                    case "imgUrl_free":
                        return d
                }
            }
            var c, d, h;
            return t.subscribe("platformMsg/Kernel/System.Init", a), t.subscribe("platformMsg/ClientService/Game.Init", l), t.subscribe("onEnterNextStage", o), t.subscribe("onBeforeShowStage", i), t.subscribe("onStartGameInProgressNextStage", s), t.subscribe("updateBackground", r), {
                getImgUrl: u
            }
        }), define("skbJet/componentCRDC/SlotGameControllers/gameSizeController", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer"], function(e, t) {
            function n() {
                var n = Number(window.innerWidth),
                    r = Number(window.innerHeight);
                if (document.documentElement.style.width = n + "px", document.documentElement.style.height = r + "px", document.body.style.width = n + "px", document.body.style.height = r + "px", o.style.width = n + "px", o.style.height = r + "px", a) {
                    var i = t.animMap._landscape2portrait;
                    n < r ? (t.setSize(s.portrait.w, s.portrait.h), i.updateStyleToTime(i.maxTime)) : (t.setSize(s.landscape.w, s.landscape.h), i.updateStyleToTime(0)), e.publish("changeBackgroundBGIfPortrait", n < r)
                }
                t.fitSize(n, r)
            }

            function r() {
                if (a = a && !!t.animMap._landscape2portraitTemplate) {
                    var e = t.getPixiRenderer(),
                        r = Number(e.view.height),
                        i = Number(e.view.width);
                    s.landscape = {
                        w: i,
                        h: r
                    }, s.portrait = {
                        w: r,
                        h: Math.floor(.9 * i)
                    };
                    for (var l = [], u = t.animMap._landscape2portraitTemplate._spritesNameList, c = 0; c < u.length; c++) {
                        var d = u[c].match(/^_portrait_(.*)$/);
                        d ? l.push("_" + d[1]) : l.push(u[c])
                    }
                    t.animMap._landscape2portraitTemplate.clone(l, "_landscape2portrait")
                }
                o.width = 2 * window._gladData._width, o.height = 2 * window._gladData._height, window.addEventListener("resize", n), n()
            }

            function i(e) {
                "INT" !== e.serverConfig.channel && "STD" === e.serverConfig.presenttype && (a = !0)
            }
            var o = document.getElementById("game"),
                a = !1,
                s = {};
            return e.subscribe("platformMsg/Kernel/System.Init", i), e.subscribe("onBeforeShowStage", r), {}
        }), define("skbJet/component/currencyHelper/Currency", [], function() {
            function e(e) {
                this.currencyData = e, this.decimalPrecision = Number(e.DECIMAL_PRECISION)
            }

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

            function n(e, t, n) {
                if (!isNaN(e = Number(e))) {
                    if (n <= 0) return "";
                    var r = e.toFixed(n),
                        i = r.indexOf(".");
                    return -1 === i ? "" : t.DECIMAL_SEPARATOR + r.substring(i + 1)
                }
            }
            return e.prototype.formatBalance = function(e) {
                var r = t(Number(e), this.currencyData) + n(Number(e), this.currencyData, this.decimalPrecision);
                return "left" === this.currencyData.MAJOR_SYMBOL_ALIGNMENT ? r = "false" === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE || !1 === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE ? this.currencyData.MAJOR_SYMBOL + r : this.currencyData.MAJOR_SYMBOL + " " + r : "false" === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE || !1 === this.currencyData.MAJOR_SYMBOL_PADDING_SPACE ? r += this.currencyData.MAJOR_SYMBOL : r = r + " " + this.currencyData.MAJOR_SYMBOL, r
            }, 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 n(e) {
                if (Array.isArray(e.CurrencyResponse))
                    for (var n = 0; n < e.CurrencyResponse.length; n++) {
                        var r = new t(e.CurrencyResponse[n].CURRENCY);
                        p[r.getCurrencyCode()] = r
                    } else {
                        var r = new t(e.CurrencyResponse.CURRENCY);
                        p[h] = r
                    }
            }

            function r(e) {
                d = Number(e.serverConfig.denomamount), h = e.gameConfig.currencycode
            }

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

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

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

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

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

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

            function c(e) {
                return 1e3 * e / (1e3 * d)
            }
            var d, h, p = {};
            return e.subscribe("platformMsg/ClientService/Game.Init", n), e.subscribe("platformMsg/Kernel/System.Init", r), {
                formatBalance: i,
                formatFloat: l,
                formatInteger: s,
                convertToNumber: o,
                formatDecimal: a,
                fromStakeUnits: u,
                toStakeUnits: c
            }
        }), define("skbJet/componentCRDC/gladRenderer/gladButton", [], function() {
            function e(e, n, r) {
                this.sprite = e, this.activeImg = n, this.inactiveImg = n + "Inactive", this.overImg = n + "Over", this.pressedImg = n + "Pressed", this.enabled = !0;
                var i = this;
                i.sprite.pixiContainer.$sprite.interactive = !0, i.sprite.pixiContainer.$sprite.cursor = "pointer", i.options = {}, i.options.scaleXWhenClick = 1, i.options.scaleYWhenClick = 1, i.options.scaleXWhenOver = 1, i.options.scaleYWhenOver = 1, i.options.avoidMultiTouch = !0, i.originalScaleX = e._currentStyle._transform._scale._x, i.originalScaleY = e._currentStyle._transform._scale._y, r && (r.scaleXWhenClick && (i.options.scaleXWhenClick = Number(r.scaleXWhenClick)), r.scaleYWhenClick && (i.options.scaleYWhenClick = Number(r.scaleYWhenClick)), r.scaleXWhenOver && (i.options.scaleXWhenOver = Number(r.scaleXWhenOver)), r.scaleYWhenOver && (i.options.scaleYWhenOver = Number(r.scaleYWhenOver)), !1 === r.avoidMultiTouch && (i.options.avoidMultiTouch = !1)), i.sprite.on("mouseover", function() {
                    if (i.enabled) try {
                        e.setImage(i.overImg), 1 === i.options.scaleXWhenOver && 1 === i.options.scaleYWhenOver || e.updateCurrentStyle({
                            _transform: {
                                _scale: {
                                    _x: i.options.scaleXWhenOver,
                                    _y: i.options.scaleYWhenOver
                                }
                            }
                        })
                    } catch (e) {}
                }), i.sprite.on("mouseout", function() {
                    i.enabled && (i.sprite.setImage(i.activeImg), e.updateCurrentStyle({
                        _transform: {
                            _scale: {
                                _x: i.originalScaleX,
                                _y: i.originalScaleY
                            }
                        }
                    }))
                }), i.sprite.on("mousedown", function() {
                    i.enabled && (i.sprite.setImage(i.pressedImg), 1 === i.options.scaleXWhenClick && 1 === i.options.scaleYWhenClick || e.updateCurrentStyle({
                        _transform: {
                            _scale: {
                                _x: i.options.scaleXWhenClick,
                                _y: i.options.scaleYWhenClick
                            }
                        }
                    }))
                }), i.sprite.on("mouseup", function() {
                    i.enabled && (i.sprite.setImage(i.activeImg), e.updateCurrentStyle({
                        _transform: {
                            _scale: {
                                _x: i.originalScaleX,
                                _y: i.originalScaleY
                            }
                        }
                    }))
                }), i.sprite.on("click", function(n) {
                    i.enabled && i.onClick && (n.stopPropagation(), i.sprite.setImage(i.pressedImg), setTimeout(function() {
                        if (i.options.avoidMultiTouch) {
                            var r = Date.now(),
                                o = r - t;
                            t = r, o >= 150 && i.onClick(n)
                        } else i.onClick(n);
                        i.enabled && (i.sprite.setImage(i.activeImg), e.updateCurrentStyle({
                            _transform: {
                                _scale: {
                                    _x: i.originalScaleX,
                                    _y: i.originalScaleY
                                }
                            }
                        }))
                    }, 100))
                })
            }
            var t = 0;
            return e.prototype.enable = function(e) {
                if (void 0 === e || null === e) return this.enabled;
                this.enabled = !!e, this.enabled ? (this.sprite.setImage(this.activeImg), this.sprite.pixiContainer.$sprite.cursor = "pointer") : (this.sprite.setImage(this.inactiveImg), this.sprite.pixiContainer.$sprite.cursor = "default")
            }, e.prototype.show = function(e) {
                this.sprite.show(e)
            }, e.prototype.click = function(e) {
                this.onClick = e
            }, e.prototype.changeImg = function(e) {
                this.activeImg = e, this.inactiveImg = e + "Inactive", this.overImg = e + "Over", this.pressedImg = e + "Pressed", this.enabled ? this.sprite.setImage(this.activeImg) : this.sprite.setImage(this.inactiveImg)
            }, e.prototype.getEnabled = function() {
                return this.enabled
            }, e
        }), define("game/AutoSpinController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "game/BetController", "skbJet/componentCRDC/gladRenderer/gladButton"], function(e, t, n, r, i, o, a) {
            function s() {
                Z && (Z = !1, t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.AutoSpinStopped"
                }, !0))
            }

            function l(e) {
                $ = e.serverConfig.presenttype, q = e.serverConfig.channel, Y = e.serverConfig.paramGame.assetPack, "freespin" === e.serverConfig.paramGame.playMode && (ie = !0), e.serverConfig.autospin && 2 === Number(e.serverConfig.autospin.version) && (oe = !0)
            }

            function u(e) {
                n.lib._autoSpinSet && (K = new a(n.lib._autoSpinBtn, "AutoSpin", {
                    avoidMultiTouch: !0
                }), Q = new a(n.lib._autoSpinStop, "StopAutoSpin", {
                    avoidMultiTouch: !0
                }), P(), e.PaytableResponse && e.PaytableResponse.AutoSpinInfo && (re = "false" === e.PaytableResponse.AutoSpinInfo["@enable"].toLowerCase()), re || T(e))
            }

            function c(e) {
                se = !1, te = !1, "BaseGame" === e.response.OutcomeDetail.NextStage && n.lib._autoSpinSet && (M(), Z ? (j(), X--) : "INT" === q ? G() : P())
            }

            function d() {
                "mobile" !== Y && "tablet" !== Y || (M(), Z && I(), n.lib._betControlDialog.pixiContainer.visible && (P(), M()))
            }

            function h() {
                "mobile" !== Y && "tablet" !== Y || (n.lib._autoSpinSet && n.lib._autoSpinSet.show(!0), n.lib._AutoPlayButtonBG && n.lib._AutoPlayButtonBG.show(!0), ie && J <= 0 ? G() : N())
            }

            function p() {
                if (se = !0, ae = "BaseGame", n.lib._autoSpinSet) {
                    if (ie && J <= 0) return U(), G(), void s();
                    !1 === Z && W(), te = !0
                }
            }

            function f() {
                Z && X <= 0 && s()
            }

            function m(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && Y.indexOf("mini") < 0 && (U(), "INT" === q ? G() : P())
            }

            function g(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && Y.indexOf("mini") < 0 && (s(), X = null, M(), N(), t.publish("AutoSpinController.autoSpinEnd"))
            }

            function b(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && n.lib._autoSpinSet && Z && (U(), G())
            }

            function _(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && n.lib._autoSpinSet && (s(), n.getTimer().setTimeout(function() {
                    P()
                }, 500)), "BaseGame" === e.response.OutcomeDetail.NextStage && n.lib._autoSpinSet && ("INT" === q ? G() : P())
            }

            function y(e) {
                n.lib._autoSpinSet && ("FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && P(), "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && P(), "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && ("INT" === q ? G() : P())), ie && e.response.PromotionalFreeSpin && (J = Number(e.response.PromotionalFreeSpin["@count"])) <= 0 && (J = 0, n.lib._autoSpinSet && (G(), "INT" !== q && P()))
            }

            function v(e) {
                ae = e.response.OutcomeDetail.Stage
            }

            function x(e) {
                _(e)
            }

            function S() {
                n.lib._Num.setText(X + "")
            }

            function w(e, t) {
                e.click(function() {
                    B(t)
                }), e.enable(!0)
            }

            function T(e) {
                if (n.lib._autoSpinSet) {
                    n.lib._autoSpinSet.show(!0), n.lib._AutoPlayButtonBG && n.lib._AutoPlayButtonBG.show(!0), n.lib._autoSpinBtn.show(!0), K.click(function() {
                        C()
                    }), K.enable(!0), Q.click(function() {
                        R()
                    }), Q.enable(!0), V = e.PaytableResponse.AutoSpinInfo.Step.sort(function(e, t) {
                        return parseInt(t) - parseInt(e)
                    });
                    for (var t = Object.keys(n.lib._autoSpinTabPanel.sprites), r = 0; r < t.length; r++) n.lib["_T" + (r + 1)].setText(V[r] + ""), w(new a(n.lib[t[r]], "autoSpinBG", {
                        avoidMultiTouch: !0
                    }), n.lib[t[r]])
                }
            }

            function P() {
                n.lib._autoSpinSet && (n.lib._autoSpinSet.show(!1), n.lib._AutoPlayButtonBG && n.lib._AutoPlayButtonBG.show(!1), n.lib._autoSpinBtn.show(!1), n.lib._autoSpinTabPanel.show(!1), n.lib._autoSpinT1.show(!1), n.lib._autoSpinT2.show(!1), n.lib._autoSpinT3.show(!1), n.lib._autoSpinT4.show(!1), n.lib._autoSpinT5.show(!1), n.lib._autoSpinStop.show(!1), n.lib._autoSpinNum.show(!1), n.lib._Num.show(!1))
            }

            function C() {
                ne || re || (oe ? (G(), D(), k(), t.publish("autoBtnClicked"), t.publish("showButton", "_inactiveButton")) : ee ? (M(), O(), t.publish("autoBtnCancel")) : (A(), k(), t.publish("autoBtnClicked")), i.play("AutoSpin", 2, !1))
            }

            function k() {
                n.lib._betControlButton && n.lib._betControlButton.show(!1), n.lib._betPrompt && n.lib._betPrompt.show(!1)
            }

            function O() {
                n.lib._betControlButton && n.lib._betControlButton.show(!0)
            }

            function E() {
                O()
            }

            function A() {
                n.lib._autoSpinTabPanel.show(!0), n.lib._autoSpinT1.show(!0), n.lib._autoSpinT2.show(!0), n.lib._autoSpinT3.show(!0), n.lib._autoSpinT4.show(!0), n.lib._autoSpinT5.show(!0), ee = !0
            }

            function M() {
                n.lib._autoSpinTabPanel.show(!1), n.lib._autoSpinT1.show(!1), n.lib._autoSpinT2.show(!1), n.lib._autoSpinT3.show(!1), n.lib._autoSpinT4.show(!1), n.lib._autoSpinT5.show(!1), ee = !1
            }

            function R() {
                I(), i.play("AutoSpinStop", 2, !1), n.lib._betControlButton && se && n.lib._betControlButton.show(!0), se && t.publish("showButton", "_spinButton")
            }

            function I() {
                U(), "FreeSpin" !== ae && G(), s(), te && W()
            }

            function B(e) {
                var t = e.getName(),
                    n = t.charAt(t.length - 1) - 1;
                L(Number(V[n])), i.play("OptionsSelect", 2, !1)
            }

            function L(e) {
                X = e, M(), n.lib._autoSpinBtn.show(!1), j(), Z = !0, F(), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.AutoSpinStart"
                })
            }

            function D() {
                t.publish("toPlatformRequest", {
                    channel: "Game",
                    topic: "Game.AutoSpinOption",
                    data: {},
                    successCallback: function(e) {
                        e && "cancel" !== e.action ? (L(Number(e.steps)), i.play("OptionsSelect", 2, !1)) : (t.publish("AutoSpinController.UKAutoSpinCancelled"), i.play("AutoSpinStop", 2, !1), t.publish("autoBtnCancel"), N(), t.publish("showButton", "_spinButton"))
                    },
                    failCallback: function() {
                        t.publish("AutoSpinController.UKAutoSpinCancelled"), t.publish("autoBtnCancel"), N(), t.publish("showButton", "_spinButton")
                    }
                })
            }

            function F() {
                Z && X > 0 && (n.lib._spinButton.show(!1), n.lib._inactiveButton.show(!0), t.publish("nextState"))
            }

            function N() {
                n.lib._autoSpinSet && !re && (n.lib._autoSpinSet && n.lib._autoSpinSet.show(!0), n.lib._AutoPlayButtonBG && n.lib._AutoPlayButtonBG.show(!0), K.enable(!0), n.lib._autoSpinBtn.show(!0), ne = !1)
            }

            function G() {
                K.enable(!1), n.lib._autoSpinBtn.show(!0), ne = !0
            }

            function j() {
                n.lib._autoSpinStop.show(!0), S(), n.lib._autoSpinNum.show(!0), n.lib._Num.show(!0)
            }

            function U() {
                n.lib._autoSpinStop.show(!1), n.lib._autoSpinNum.show(!1), n.lib._Num.show(!1)
            }

            function W() {
                re || (U(), N(), t.publish("AutoSpinController.autoSpinEnd"))
            }

            function H() {
                return Z
            }

            function z(e) {
                se = !1, ae = e.response.OutcomeDetail.Stage, ie && e.response.PromotionalFreeSpin && (J = Number(e.response.PromotionalFreeSpin["@count"])) <= 0 && (J = 0)
            }
            var V, X, J, Y, q, $, K, Q, Z = !1,
                ee = !1,
                te = !1,
                ne = !1,
                re = !0,
                ie = !1,
                oe = !1,
                ae = "BaseGame",
                se = !1;
            return t.subscribe("platformMsg/Kernel/System.Init", l), t.subscribe("platformMsg/ClientService/Game.Init", u), t.subscribe("onBeforeRequest", c), t.subscribe("onBeginNewGame", p), t.subscribe("onResolveStage", z), t.subscribe("onAbortNextStage", m), t.subscribe("onResetNextStage", g), t.subscribe("onEnterNextStage", _), t.subscribe("onStartGameInProgressStage", v), t.subscribe("onStartGameInProgressNextStage", x), t.subscribe("onBeforeShowStage", y), t.subscribe("platformMsg/ClientService/Game.StopAutoSpin", I), t.subscribe("AutoSpinController.UKAutoSpinCancelled", E), t.subscribe("onBetControlButtonClicked", d), t.subscribe("okayBtnClicked", h), t.subscribe("onEndGame", f), t.subscribe("onExitStage", b), {
                autoSpin: F,
                currentAutoSpinState: H
            }
        }), define("game/BetController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "game/AutoSpinController", "skbJet/componentCRDC/gladRenderer/gladButton"], function(e, t, n, r, i, o, a, s) {
            function l(e) {
                ke = e.serverConfig.paramGame.assetPack, Ce = e.serverConfig.presenttype, Pe = e.serverConfig.softwareid, we = Number(e.serverConfig.denomamount), A(), "freespin" === e.serverConfig.paramGame.playMode && (je = !0, Se = Number(e.serverConfig.freespin_bet) / we, xe = Number(e.serverConfig.freespin_lines), Ve || localStorage.setItem(Pe + "betPerPattern", Se)), "desktop" !== e.serverConfig.paramGame.assetPack && (Ue = !0)
            }

            function u(e) {
                if (Fe = new s(n.lib._minusBtn4LineBet, "arrowMinus", {
                        avoidMultiTouch: !0
                    }), Ne = new s(n.lib._plusBtn4LineBet, "arrowPlus", {
                        avoidMultiTouch: !0
                    }), n.lib._betControlButton && (De = new s(n.lib._betControlButton, "buttonSettings", {
                        avoidMultiTouch: !0
                    })), n.lib._okayBtn && (Ge = new s(n.lib._okayBtn, "buttonOk", {
                        avoidMultiTouch: !0
                    })), Le = e.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap, Me = e.PaytableResponse.PatternSliderInfo.PatternInfo.Step, Oe = e.PaytableResponse.PatternSliderInfo.BetInfo.Step, Array.isArray(Oe) || (Oe = [Oe]), Array.isArray(Me) || (Me = [Me]), Ee = Oe.length, Re = Me.length, Be = Me[Re - 1], B(), R(), I(), "mobile" !== ke && "tablet" !== ke && "tabletmini" !== ke || G(), !je) {
                    if (e && e.GameLogicResponse) {
                        var t = e.GameLogicResponse;
                        c(t), d(t), Ve || localStorage.setItem(Pe + "betPerPattern", Se), Ve || localStorage.setItem(Pe + "patternsBet", xe)
                    }
                    pe({
                        betPerPattern: Se,
                        patternsBet: xe
                    })
                }
            }

            function c(e) {
                e.PatternSliderInput && e.PatternSliderInput.BetPerPattern ? (Se = Number(e.PatternSliderInput.BetPerPattern), h() && f()) : f()
            }

            function d(e) {
                e.PatternSliderInput && e.PatternSliderInput.PatternsBet ? (xe = Number(e.PatternSliderInput.PatternsBet), p() && m()) : m()
            }

            function h() {
                return -1 === Oe.indexOf(Se + "")
            }

            function p() {
                return -1 === Me.indexOf(xe + "")
            }

            function f() {
                Se = Number(Oe[0])
            }

            function m() {
                xe = Number(Me[Me.length - 1])
            }

            function g() {
                n.lib._balanceLabel.autoFontFitText = !0, n.lib._pfsLabel.autoFontFitText = !0, n.lib._winLabel.autoFontFitText = !0, n.lib._linesBetLabel.autoFontFitText = !0, n.lib._totalBetLabel.autoFontFitText = !0, n.lib._linesLabel.autoFontFitText = !0, n.lib._linesLabel2 && (n.lib._linesLabel2.autoFontFitText = !0), n.lib._freeSpinCountLabel.autoFontFitText = !0, n.lib._bonusWinLabel.autoFontFitText = !0, n.lib._betLabel.autoFontFitText = !0, n.lib._balanceValue.autoFontFitText = !0, n.lib._pfsValue.autoFontFitText = !0, n.lib._winValue.autoFontFitText = !0, n.lib._lineBetValue.autoFontFitText = !0, n.lib._totalBetValue.autoFontFitText = !0, n.lib._linesValue.autoFontFitText = !0, n.lib._freeSpinCountValue.autoFontFitText = !0, n.lib._bonusWinValue.autoFontFitText = !0, n.lib._betValue.autoFontFitText = !0, n.lib._betPromptMsg && (n.lib._betPromptMsg.autoFontFitText = !0)
            }

            function b(e) {
                g(), H(e), Z(e), D(), L(), F(), Ae = Oe.indexOf(Se + "") + 1, Ie = Me.indexOf(xe + "") + 1, $({
                    countWhiteSquare4Lines: Ie,
                    countWhiteSquare4LineBet: Ae
                }), n.lib._betControlDialog && n.lib._betControlDialog.show(!1), n.lib._betControlButton && ("BaseGame" === e.response.OutcomeDetail.NextStage ? (n.lib._betControlButton.show(!0), "MIN" === Ce && De.enable(!0)) : (n.lib._betControlButton.show(!1), "MIN" === Ce && (n.lib._betControlButton.show(!0), De.enable(!1)))), !1 === je ? n.lib._betPrompt && M() : n.lib._betPrompt && n.lib._betPrompt.show(!1), "mobile" !== ke && "tablet" !== ke && "tabletmini" !== ke || !He || N()
            }

            function _() {
                He = !0, te(), V(), We && N()
            }

            function y() {
                We = !0
            }

            function v(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && (n.lib._betControlButton && (n.lib._betControlButton.show(!1), "MIN" === Ce && (n.lib._betControlButton.show(!0), De.enable(!1))), n.lib._betPrompt && n.lib._betPrompt.show(!1), n.lib._betControlDialog && n.lib._betControlDialog.show(!1), z(), W(), ze = 0)
            }

            function x(e) {
                ("BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker2" !== e.response.OutcomeDetail.Stage || "SubPicker2" !== e.response.OutcomeDetail.NextStage) && ("BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker3" !== e.response.OutcomeDetail.Stage || "SubPicker3" !== e.response.OutcomeDetail.NextStage) && ("BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage || "SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage || "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage || "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage || "BonusPicker" === e.response.OutcomeDetail.Stage && "CountryPicker" === e.response.OutcomeDetail.NextStage || "CountryPicker" === e.response.OutcomeDetail.Stage && "BuoyBonus" === e.response.OutcomeDetail.NextStage || (t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.PlayData",
                    data: {
                        ActionInput: {
                            Action: "play"
                        },
                        PatternSliderInput: {
                            BetPerPattern: Se,
                            PatternsBet: xe
                        }
                    }
                }), t.publish("nextState")))
            }

            function S() {
                n.lib._betControlButton && ("MIN" === Ce ? (n.lib._betControlButton.show(!0), De.enable(!a.currentAutoSpinState())) : n.lib._betControlButton.show(!a.currentAutoSpinState())), je || a.currentAutoSpinState() || (V(), $({
                    countWhiteSquare4Lines: Ie,
                    countWhiteSquare4LineBet: Ae
                }))
            }

            function w(e) {
                "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (ze = "true" === e.response.AwardCapOutcome.AwardCapExceeded ? Le : ne(e.response.PrizeOutcome))
            }

            function T(e) {
                "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && (ze = "true" === e.response.AwardCapOutcome.AwardCapExceeded ? Le : ne(e.response.PrizeOutcome))
            }

            function P(e) {
                Z(e)
            }

            function C(e) {
                "betPerPattern" === e.option && (Ae = Oe.indexOf(e.value) + 1, $({
                    countWhiteSquare4LineBet: Ae
                }), t.publish("onBetControlButtonClicked"), F()), "patternsBet" === e.option && (Ie = Me.indexOf(e.value) + 1, $({
                    countWhiteSquare4Lines: Ie
                }), t.publish("onBetControlButtonClicked"), F())
            }

            function k(e) {
                n.lib._betPrompt && n.lib._betPrompt.show(!1), n.lib._betControlButton && (n.lib._betControlButton.show(!1), "MIN" === Ce && (n.lib._betControlButton.show(!0), De.enable(!1))), n.lib._betControlDialog && n.lib._betControlDialog.show(!1), G(), z(), "FreeSpin" === e.response.OutcomeDetail.NextStage && (ze = "true" === e.response.AwardCapOutcome.AwardCapExceeded ? Le : ne(e.response.PrizeOutcome)), "desktop" === ke && "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && te()
            }

            function O(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && (n.lib._betControlButton && (n.lib._betControlButton.show(!0), "MIN" === Ce && De.enable(!0)), V(), N())
            }

            function E(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && (n.lib._betControlButton && (n.lib._betControlButton.show(!1), "MIN" === Ce && (n.lib._betControlButton.show(!0), De.enable(!1))), z(), G())
            }

            function A() {
                try {
                    localStorage.setItem(Pe + "denomamount", we), Ve = !1
                } catch (e) {
                    Ve = !0
                }
            }

            function M() {
                n.lib._betPromptMsg.setText(i.i18n.Game.betPrompt);
                var t = r.formatFloat(n.lib._betPromptMsg.getTextWidth()),
                    o = t + 40;
                n.lib._betPromptMsg.updateCurrentStyle({
                    _width: o
                });
                var a = new e.Graphics;
                if (a.beginFill(0, .75), "MIN" === Ce) {
                    var s = Number(n.lib._betPromptBG._currentStyle._width) - o;
                    n.lib._betPromptMsg.updateCurrentStyle({
                        _left: s
                    }), a.x = s, a.lineStyle(3, 16763904)
                } else a.lineStyle(3, 16763904);
                a.drawRoundedRect(0, 0, o, n.lib._betPromptBG._currentStyle._height, 5), a.endFill(), n.lib._betPromptBG.pixiContainer.addChild(a), n.lib._betPrompt.show(!0), n.lib._betPromptAngle.show(!0), n.lib._betPromptMsg.show(!0), n.lib._betPromptBG.show(!0)
            }

            function R() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "list",
                            name: "betPerPattern",
                            text: "Coin Value",
                            enabled: 1,
                            value: Oe[0],
                            valueText: Oe.map(function(e) {
                                return r.formatBalance(Number(e) * we)
                            }),
                            values: Oe
                        }]
                    }
                })
            }

            function I() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            type: "list",
                            name: "patternsBet",
                            text: "Coins",
                            enabled: 0,
                            valueText: Me,
                            values: Me,
                            value: Me[Re - 1]
                        }]
                    }
                })
            }

            function B() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Register",
                    data: {
                        options: [{
                            name: "stake",
                            text: "Stake",
                            type: "stake",
                            enabled: 0,
                            value: 0,
                            valueText: "0"
                        }]
                    }
                })
            }

            function L() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "patternsBet",
                        event: "change",
                        params: [xe]
                    }
                })
            }

            function D() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "betPerPattern",
                        event: "change",
                        params: [Se]
                    }
                })
            }

            function F() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "stake",
                        event: "change",
                        params: [he(), r.formatBalance(he())]
                    }
                })
            }

            function N() {
                je || a.currentAutoSpinState() || t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "betPerPattern",
                        event: "enable",
                        params: [1]
                    }
                })
            }

            function G() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "betPerPattern",
                        event: "enable",
                        params: [0]
                    }
                })
            }

            function j() {
                G(), z()
            }

            function U() {
                N(), V()
            }

            function W() {
                t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.DeductStake",
                    data: he()
                })
            }

            function H(e) {
                n.lib._betControlButton && (De.click(function() {
                    X()
                }), "BaseGame" === e.response.OutcomeDetail.NextStage && De.enable(!0)), Fe.click(function() {
                    J()
                }), Ne.click(function() {
                    Y()
                }), n.lib._okayBtn && (Ge.click(function() {
                    q()
                }), Ge.enable(!0)), je && z(), n.lib._betPromptMsg && n.lib._betPromptMsg.on("click", X), n.lib._betPromptAngle && n.lib._betPromptAngle.on("click", X)
            }

            function z() {
                Te = !0, Fe.enable(!1), Ne.enable(!1), G()
            }

            function V() {
                je || a.currentAutoSpinState() || (Te = !1, n.lib._betControlButton && De.enable(!0), K(Ae, Ee, "LineBet"), N())
            }

            function X() {
                if (n.lib._autoSpinSet && n.lib._autoSpinSet.show(!1), o.play("OptionsButton", 2, !1), n.lib._betPrompt && n.lib._betPrompt.show(!1), n.lib._betControlButton) {
                    if (-1 !== n.lib._betControlButton.getImage().indexOf("Inactive")) return;
                    if ("MIN" !== Ce) n.lib._betControlButton.show(!1), t.publish("showButton", "");
                    else {
                        n.lib._betControlButton.show(!0), De.enable(!1);
                        var e = n.lib._actionButtonSet.sprites;
                        for (var r in e) e[r].show("_inactiveButton" === r)
                    }
                }
                n.lib._betControlDialog && n.lib._betControlDialog.show(!0), t.publish("onBetControlButtonClicked")
            }

            function J() {
                Te || Ae <= 1 || (Ae--, o.play("Minus", Ae % 2 == 0 ? 2 : 3, !1), t.publish("onBetControlButtonClicked"), $({
                    countWhiteSquare4LineBet: Ae
                }), D(), F())
            }

            function Y() {
                Te || Ae >= Ee || (Ae++, o.play(Ae >= Ee ? "MaxBet" : "Plus", Ae % 2 == 0 ? 2 : 3, !1), t.publish("onBetControlButtonClicked"), $({
                    countWhiteSquare4LineBet: Ae
                }), D(), F())
            }

            function q() {
                o.play("OptionsClose", 2, !1), n.lib._betControlDialog && n.lib._betControlDialog.show(!1), n.lib._betControlButton && (n.lib._betControlButton.show(!0), "MIN" === Ce && De.enable(!0)), n.lib._actionButtonSet.show(!0), n.lib._spinButton.show(!0), n.lib._inactiveButton.show(!1), n.lib._skipButton.show(!1), n.lib._startButton.show(!1), n.lib._networkActivity.show(!1), t.publish("okayBtnClicked")
            }

            function $(e) {
                1 === Ee ? (n.lib._changeProgressBox4LineBet && n.lib._changeProgressBox4LineBet.show(!1), Fe.enable(!1), Ne.enable(!1), ee(), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Control",
                    data: {
                        name: "betPerPattern",
                        event: "enable",
                        params: [0]
                    }
                })) : e.countWhiteSquare4LineBet && (K(Ae, Ee, "LineBet"), Q(Ae, Ee, "LineBet"), Se = Number(Oe[Ae - 1]), Ve || localStorage.setItem(Pe + "betPerPattern", Se), pe({
                    betPerPattern: Se
                })), n.lib._betControlButton, n.lib._linesValue.setText(xe), n.lib._lineBetValue.setText(r.formatBalance(Se * we)), t.publish("updateJackpotMeter", Se * we);
                var i = r.formatBalance(he());
                n.lib._totalBetValue.setText(i), n.lib._betValue.setText(i)
            }

            function K(e, t, n) {
                "LineBet" === n && (e <= 1 ? (Ne.enable(!0), Fe.enable(!1)) : e >= t ? (Ne.enable(!1), Fe.enable(!0)) : (Ne.enable(!0), Fe.enable(!0)))
            }

            function Q(e, t, i) {
                if (Ue) {
                    for (var o = 12 * t, a = r.formatFloat((r.formatFloat(n.lib["_changeProgressBox4" + i]._currentStyle._width) - o) / 2), s = [], l = 0; l < t; l++) s[l] = l < e ? "#FFFFFF" : "#535353";
                    for (var u = 0; u < t; u++) n.lib["_changeProgressBox4" + i].addChildFromData({
                        _id: "_squares4" + i + u,
                        _name: "_squares4_" + i + u,
                        _SPRITES: [],
                        _style: {
                            _width: "10",
                            _height: "10",
                            _top: "2",
                            _left: a + 12 * u + "",
                            _background: {
                                _color: s[u]
                            }
                        }
                    })
                }
            }

            function Z(e) {
                "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && ee(), "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && ee(), "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && te()
            }

            function ee() {
                n.lib._minusBtn4LineBet.show(!1), n.lib._plusBtn4LineBet.show(!1)
            }

            function te() {
                Ee > 1 && (n.lib._minusBtn4LineBet.show(!0), n.lib._plusBtn4LineBet.show(!0))
            }

            function ne(e, t) {
                for (var n = 0; n < e.length; n++)
                    if ("FreeSpin.Total" === e[n]["@name"]) return t ? r.formatFloat(e[n]["@totalPay"]) * we : r.formatFloat(e[n].Prize["@pay"]) * we
            }

            function re(e) {
                for (var t = 0, n = e.response.PrizeOutcome, r = 0; r < n.length; r++) "FreeSpin.Lines" === n[r]["@name"] && (t = Number(n[r]["@totalPay"]));
                return t *= we
            }

            function ie(e) {
                for (var t = 0, n = e.response.PrizeOutcome, r = 0; r < n.length; r++) "FreeSpin.Scatter" === n[r]["@name"] && (t = Number(n[r]["@totalPay"]));
                return t *= we
            }

            function oe(e) {
                for (var t = 0, n = e.response.PrizeOutcome, r = 0; r < n.length; r++) "BaseGame.Lines" === n[r]["@name"] && (t = Number(n[r]["@totalPay"]));
                return t *= we
            }

            function ae(e) {
                for (var t = 0, n = e.response.PrizeOutcome, r = 0; r < n.length; r++)
                    if ("Game.Total" === n[r]["@name"]) {
                        t = Number(n[r]["@totalPay"]);
                        break
                    }
                return t *= we
            }

            function se(e, t) {
                for (var n = 0, r = e.response.PrizeOutcome, i = 0; i < r.length; i++) r[i]["@name"] === t + ".Total" && (n = Number(r[i]["@totalPay"]));
                return n
            }

            function le(e) {
                for (var t = 0, n = e.response.PrizeOutcome, r = 0, i = 0, o = 0; o < n.length; o++) "Game.Total" === n[o]["@name"] && (t = Number(n[o]["@totalPay"])), "BaseGame.Jackpot" === n[o]["@name"] && (r = Number(n[o]["@totalPay"]));
                return i = t - r, i *= we
            }

            function ue(e) {
                for (var t = 0, n = e.response.PrizeOutcome, r = 0; r < n.length; r++)
                    if ("BonusPicker.Total" === n[r]["@name"]) {
                        t = Number(n[r]["@totalPay"]);
                        break
                    }
                return t *= we
            }

            function ce(e, t, n) {
                for (var r = 0, i = e.response.PrizeOutcome, o = 0; o < i.length; o++)
                    if (i[o]["@name"] === t + ".Lines" && i[o].Prize)
                        if (Array.isArray(i[o].Prize)) {
                            for (var a = 0; a < i[o].Prize.length; a++)
                                if (i[o].Prize[a]["@name"] === "Line " + n) {
                                    r = Number(i[o].Prize[a]["@totalPay"]);
                                    break
                                }
                        } else if (i[o].Prize["@name"] === "Line " + n) {
                    r = Number(i[o].Prize["@totalPay"]);
                    break
                }
                return r *= we
            }

            function de(e) {
                return "true" === e.response.AwardCapOutcome.AwardCapExceeded ? Le : ae("FreeSpin" === e.response.OutcomeDetail.Stage ? e : e)
            }

            function he() {
                return Se * xe * we
            }

            function pe(e) {
                e.betPerPattern && (Se = Number(e.betPerPattern)), e.patternsBet && (xe = Number(e.patternsBet))
            }

            function fe() {
                return xe
            }

            function me() {
                return Se
            }

            function ge() {
                return Number(Be)
            }

            function be() {
                return we
            }

            function _e() {
                V()
            }

            function ye(e, t, n) {
                for (var r = 0, i = e.response.PrizeOutcome, o = 0; o < i.length; o++)
                    if (i[o]["@name"] === t) {
                        r = "BuoyBonus.Total" === t ? n ? Number(i[o]["@totalPay"]) : Number(i[o].Prize["@pay"]) : Number(i[o]["@totalPay"]);
                        break
                    }
                return r *= we
            }

            function ve(e, t) {
                for (var n = 1, r = e.response.PrizeOutcome, i = 0; i < r.length; i++)
                    if (r[i]["@name"] === t) {
                        n = Number(r[i].Prize["@multiplier"]);
                        break
                    }
                return n
            }
            var xe, Se, we, Te, Pe, Ce, ke, Oe, Ee, Ae, Me, Re, Ie, Be, Le, De, Fe, Ne, Ge, je = !1,
                Ue = !1,
                We = !1,
                He = !1,
                ze = 0,
                Ve = !1;
            return t.subscribe("platformMsg/Kernel/System.Init", l), t.subscribe("platformMsg/ClientService/Game.Init", u), t.subscribe("onBeforeShowStage", b), t.subscribe("onStartGameInitial", _), t.subscribe("audioPlayer.playerSelectedWhenGameLaunch", y), t.subscribe("onBeforeRequest", v), t.subscribe("onMakeRequest", x), t.subscribe("onBeginNewGame", S), t.subscribe("onExitStage", w), t.subscribe("onEnterNextStage", P), t.subscribe("platformMsg/ConsoleService/Game.Control", C), t.subscribe("onStartGameInProgressStage", k), t.subscribe("onResetNextStage", O), t.subscribe("onAbortNextStage", E), t.subscribe("AutoSpinController.autoSpinEnd", _e), t.subscribe("onInProgressStage", T), t.subscribe("unlockBetControlBtns", V), t.subscribe("lockBetControlBtns", z), t.subscribe("autoBtnClicked", j), t.subscribe("autoBtnCancel", U), {
                calculateTotalBet: he,
                getFreeSpinTotal: ne,
                getPerWinInBonusGame: re,
                getPerWinInBaseGame: oe,
                getAllLinePayOnBaseGame: ae,
                getSingleLinePay: ce,
                getAllLinePayOnBaseGameExcludeJackpot: le,
                getTotalPayByStage: se,
                getCurBasePay: de,
                getCurPatternsBet: fe,
                getCurBetPerPattern: me,
                getMaxCountSquareArray4Lines: ge,
                getCurDenomamount: be,
                getPerWinInBonusGameScatter: ie,
                getBonusPickerWin: ue,
                getWinValue: ye,
                getMul: ve
            }
        }), define("game/PixiCoinShower", ["com/pixijs/pixi", "skbJet/component/gladPixiRenderer/gladPixiRenderer"], function(e, t) {
            function n(e) {
                c = this, e.parentContain && e.frames && (this.options = e, this.options.popRateScope = e.popRateScope || [6, 8], this.options.coinPerTime = e.coinPerTime || 3, this.options.coinAnimatSpeed = e.coinAnimatSpeed || [.3, .5], this.options.rotation = e.rotation || [0, 0], this.options.visibleRange = e.visibleRange || [0, document.getElementsByTagName("canvas")[0].width, 0, document.getElementsByTagName("canvas")[0].height], d = (this.options.visibleRange[1] - this.options.visibleRange[0]) / 960, this.options.Sx = e.Sx || [-10 * d, 10 * d], this.options.Sy = e.Sy || [-15 * d, -10 * d], this.options.g = e.g || .5 * d, this.options.centralScope = e.centralScope || .33, this.options.centralEnhanced = e.centralEnhanced || .33, this.options.initScale = e.initScale || .15, this.options.scaleChangeSpeed = e.scaleChangeSpeed || .007, this.options.popPosition = e.popPosition || [.45 * (this.options.visibleRange[1] - this.options.visibleRange[0]), .2 * (this.options.visibleRange[3] - this.options.visibleRange[2]), .55 * (this.options.visibleRange[1] - this.options.visibleRange[0]), .3 * (this.options.visibleRange[3] - this.options.visibleRange[2])], this.isPlaying = !1, t.getTicker().add(function() {
                    if (c.isPlaying)
                        for (var e = p; null !== e.next;)
                            if (o(e.next.value)) u(e.next.value), e = e.next;
                            else {
                                e.next.value.visible = !1;
                                var t = e.next;
                                e.next = t.next, t.next = h.next, h.next = t
                            }
                }))
            }

            function r(e) {
                this.next = null, this.value = e
            }

            function i(e, t) {
                return e + Math.random() * (t - e)
            }

            function o(e) {
                return e.x > c.options.visibleRange[0] && e.x < c.options.visibleRange[1] && e.y < c.options.visibleRange[3]
            }

            function a(e) {
                e.x = i(c.options.popPosition[0], c.options.popPosition[2]), e.y = i(c.options.popPosition[1], c.options.popPosition[3]), Math.random() > c.options.centralEnhanced ? e.Sx = i(c.options.Sx[0], c.options.Sx[1]) : e.Sx = i(c.options.Sx[0], c.options.Sx[1]) * c.options.centralScope, e.Sy = i(c.options.Sy[0], c.options.Sy[1]), e.visible = !0, e.scale.x = c.options.initScale * d, e.scale.y = c.options.initScale * d
            }

            function s() {
                var t = new e.extras.AnimatedSprite(c.options.frames);
                return t.pivot.x = t.width / 2, t.pivot.y = t.height / 2, t.visible = !1, t.animationSpeed = i(c.options.coinAnimatSpeed[0], c.options.coinAnimatSpeed[1]), t.rotation = i(c.options.rotation[0], c.options.rotation[1]), t.play(), c.options.parentContain.addChild(t), new r(t)
            }

            function l() {
                var e = 1e3 / i(c.options.popRateScope[0], c.options.popRateScope[1]);
                c.st = t.getTimer().setTimeout(l, e);
                for (var n = 0; n < c.options.coinPerTime; n++) {
                    var r;
                    null !== h.next ? (r = h.next, h.next = h.next.next) : r = s(), a(r.value), r.next = p.next, p.next = r
                }
            }

            function u(e) {
                e.scale.x += .007 * d, e.scale.y += .007 * d, e.x += e.Sx, e.Sy += c.options.g, e.y += e.Sy
            }
            var c, d, h, p;
            return h = new r, p = new r, n.prototype.start = function() {
                c.isPlaying = !0, l()
            }, n.prototype.stop = function() {
                function e() {
                    null === p.next ? c.isPlaying = !1 : t.getTimer().setTimeout(e, 1e3)
                }!1 !== c.isPlaying && (t.getTimer().clearTimeout(c.st), e())
            }, n
        }), define("game/RollUp", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/pixiResourceLoader/pixiResourceLoader"], function(e, t, n, r, i, o) {
            function a(e, t) {
                this.spriteName = e, this.isPlaying = !1, this.timeCount = 0, this.totalTime = 0, this.startValue = 0, this.stopValue = 0, this.totalChange = 0, this.timeUnit = t || 1500, n.animMap["rollUpAnimation" + e] = this
            }
            return a.prototype.start = function(e, t, n) {
                this.isPlaying = !0, this.timeCount = 0, this.startValue = e, this.stopValue = t, this.totalChange = t - e, this.totalChange <= 1 ? this.totalTime = this.timeUnit : this.totalTime = Math.floor((Math.log(this.totalChange) + 1) * this.timeUnit), n && (n.maxTime && n.maxTime < this.totalTime && (this.totalTime = n.maxTime), this.rollUpTermSound = n.rollUpTermSound,
                    n.rollUpSoundChannel || 0 === n.rollUpSoundChannel ? this.rollUpSoundChannel = n.rollUpSoundChannel : this.rollUpSoundChannel = "rollUpSound", n.rollUpSound && this.totalChange > 0 && r.play(n.rollUpSound, this.rollUpSoundChannel, !0))
            }, a.prototype.stop = function() {
                if (!1 !== this.isPlaying) {
                    var e = this;
                    e.isPlaying = !1;
                    var a = e.stopValue,
                        s = i.formatBalance(a);
                    "_buoyBonusTipValue" === e.spriteName ? n.lib[e.spriteName].setText(s + o.i18n.Game.balankSpace1 + o.i18n.Game.buoyBonus.won) : n.lib[e.spriteName].setText(s), this.rollUpTermSound && this.totalChange > 0 && r.play(this.rollUpTermSound, this.rollUpSoundChannel), t.publish("RollUp.Stopped", {
                        spriteName: e.spriteName,
                        value: a,
                        text: s
                    })
                }
            }, a.prototype.updateStyleIfPlaying = function(e) {
                var r = this;
                if (r.isPlaying) {
                    r.timeCount += e;
                    var a = this.startValue + i.formatFloat(r.timeCount / r.totalTime * r.totalChange);
                    if (a >= r.stopValue) return void r.stop();
                    var s = i.formatBalance(a);
                    "_buoyBonusTipValue" === r.spriteName ? n.lib[r.spriteName].setText(s + o.i18n.Game.balankSpace1 + o.i18n.Game.buoyBonus.won) : n.lib[r.spriteName].setText(s), t.publish("RollUp.Update", {
                        spriteName: r.spriteName,
                        value: a,
                        text: s
                    })
                }
            }, a
        }), define("skbJet/component/phoenixReel/animationLayer", ["com/pixijs/pixi"], function(e) {
            return function(t, n) {
                function r() {
                    var t = new e.extras.AnimatedSprite([e.Texture.EMPTY]);
                    return t.visible = !1, t.zIndex = 1, t
                }

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

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

                function a(e, t) {
                    for (var n = [], r = 0; r < t; r++) n = n.concat(e);
                    return n
                }

                function s(t) {
                    return t ? Array.isArray(t) ? t.map(function(t) {
                        return t ? e.utils.TextureCache[t] : e.Texture.EMPTY
                    }) : [e.utils.TextureCache[t]] : [e.Texture.EMPTY]
                }

                function l(e) {
                    return e.every(function(e) {
                        return e.completed
                    })
                }

                function u(e, t, n, r, i, o, a) {
                    var s = {},
                        l = {};
                    return e instanceof Object ? (s = e, l = t) : (s = {
                        location: e,
                        textures: t,
                        animationSpeed: n,
                        layer: r,
                        position: i,
                        playmode: o
                    }, l = a), c(s, l)
                }

                function c(e, t) {
                    G.push({
                        location: e.location,
                        layer: e.layer
                    });
                    var n;
                    return 0 === e.layer ? n = k[E[e.location]] : 1 === e.layer && (n = O[E[e.location]]), n && (e.textures ? (n.visible = !0, n.textures = s(e.playmode && e.playmode.playCount ? a(e.textures, e.playmode.playCount) : e.textures), n.texture = n.textures[0], n.position.x = n.position.rx, n.position.y = n.position.ry, e.position && (e.position.x && (n.position.x += e.position.x), e.position.y && (n.position.y += e.position.y)), n.animationSpeed = e.animationSpeed, n.loop = !0, e.playmode && (!1 === e.playmode.loop || e.playmode.hasOwnProperty("playCount")) && (n.loop = !1), n.gotoAndStop(0), t && (t.onComplete && (n.onComplete = t.onComplete), t.onFrameChange && (n.onFrameChange = t.onFrameChange))) : n.visible = !1), {
                        gotoAndPlay: function(e) {
                            n.gotoAndPlay(e)
                        },
                        gotoAndStop: function(e) {
                            n.gotoAndStop(e)
                        }
                    }
                }

                function d(e, t) {
                    return e.map(function(n) {
                        return n.completed = !1, u(n, {
                            onComplete: function() {
                                n.completed = !0, l(e) && t && t.onComplete && t.onComplete()
                            }
                        })
                    })
                }

                function h(e) {
                    return 0 === e ? S : 1 === e ? w : void 0
                }

                function p(e, t) {
                    return 0 === t ? k[E[e]] : 1 === t ? O[E[e]] : void 0
                }

                function f() {
                    G.forEach(function(e) {
                        var t;
                        0 === e.layer ? t = k[E[e.location]] : 1 === e.layer && (t = O[E[e.location]]), t.gotoAndPlay(0)
                    })
                }

                function m() {
                    G.forEach(function(e) {
                        var t;
                        0 === e.layer ? t = k[E[e.location]] : 1 === e.layer && (t = O[E[e.location]]), t.gotoAndStop(0), t.loop = !0, t.onFrameChange = void 0, t.onComplete = void 0
                    })
                }

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

                function b() {
                    if (m(), !G || 0 !== G.length) {
                        for (var n = 0; n < t.options.reels.length; n++) {
                            for (var r = 0; r < T[n].length; r++) T[n][r].textures = [e.Texture.EMPTY], T[n][r].texture = e.Texture.EMPTY, T[n][r].gotoAndStop(0), T[n][r].loop = !0, T[n][r].onFrameChange = void 0, T[n][r].onComplete = void 0;
                            for (r = 0; r < C[n].length; r++) C[n][r].textures = [e.Texture.EMPTY], C[n][r].texture = e.Texture.EMPTY, C[n][r].gotoAndStop(0), C[n][r].loop = !0, C[n][r].onFrameChange = void 0, C[n][r].onComplete = void 0
                        }
                        G = []
                    }
                }

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

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

                function v() {
                    return {
                        startAnimating: f,
                        stopAnimating: m,
                        resetAnimations: g,
                        clearAnimations: b,
                        setCellAnimation: u,
                        setCellAnimations: d,
                        getLayerContainer: h,
                        getCellHandle: p,
                        getContainer: function() {
                            return x
                        }
                    }
                }
                var x = new e.Container,
                    S = new e.Container,
                    w = new e.Container;
                x.addChild(S), x.addChild(w);
                var T = [],
                    P = [],
                    C = [],
                    k = [],
                    O = [],
                    E = t.locationsMap.reduce(function(e, t, n) {
                        return e[t] = n, e
                    }, {});
                e.extras.AnimatedSprite || (e.extras.AnimatedSprite = e.extras.MovieClip);
                for (var A = [], M = new e.Graphics, R = !0, I = 0; I < t.options.reels.length; I++) 0 !== t.options.reels[I].y && (R = !1);
                if (t.options.reels.length > 1 && R)
                    for (I = 1; I < t.options.reels.length; I++) t.options.reels[I - 1].symbolCount !== t.options.reels[I].symbolCount && (R = !1);
                var B = !0;
                if (t.options.clip) t.options.clip[0].hasOwnProperty("reels") ? t.options.clip.forEach(function(t) {
                    M = new e.Graphics, M.beginFill(), M.drawRect(t.x, t.y, t.w, t.h), M.endFill(), M.zIndex = 1e3, t.reels.forEach(function(e) {
                        A[e] = M
                    }), x.addChild(M)
                }) : (t.options.clip.forEach(function(e) {
                    M.beginFill(), M.drawRect(e.x, e.y, e.w, e.h), M.endFill()
                }), M.zIndex = 1e3, S.addChild(M), A = [M]);
                else if (R) M.beginFill(), M.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.symbolSpacingH) * t.options.reels[0].symbolCount - t.symbolSpacingH), M.endFill(), M.zIndex = 1e3, S.addChild(M), A = [M];
                else {
                    for (M.beginFill(), I = 0; I < t.options.reels.length; I++) M.drawRect(t.options.pos.x + t.options.reels[I].x, t.options.pos.y + t.options.reels[I].y, t.symbolSlotWidth + t.symbolSpacingW, (t.symbolSlotHeight + t.symbolSpacingH) * t.options.reels[I].symbolCount);
                    M.endFill(), M.zIndex = 1e3, S.addChild(M), A = [M]
                }
                for (A.length > 1 && (B = !1), B && (S.mask = A[0]), I = 0; I < t.options.reels.length; I++) {
                    for (var L = [], D = [], F = -1; F < t.options.reels[I].symbolCount + 1; F++) {
                        var N = r();
                        N.position.x = t.options.pos.x + t.options.reels[I].x, N.position.y = t.options.pos.y + t.options.reels[I].y + (t.symbolSlotHeight + t.symbolSpacingH) * F, N.position.rx = N.position.x, N.position.ry = N.position.y, B || (N.mask = A[I]), L.push(N), F >= 0 && F < t.options.reels[I].symbolCount && (k.push(N), N = r(), N.position.x = t.options.pos.x + t.options.reels[I].x, N.position.y = t.options.pos.y + t.options.reels[I].y + (t.symbolSlotHeight + t.symbolSpacingH) * F, N.position.rx = N.position.x, N.position.ry = N.position.y, O.push(N), D.push(N))
                    }
                    T.push(L), P.push([]), C.push(D)
                }
                for (I = 0; I < t.options.reels.length; I++) T[I].forEach(function(e) {
                    S.addChild(e)
                });
                for (I = 0; I < t.options.reels.length; I++) C[I].forEach(function(e) {
                    w.addChild(e)
                });
                var G = [];
                return {
                    setViewData: i,
                    show: _,
                    hide: y,
                    startAnimating: f,
                    stopAnimating: m,
                    resetAnimations: g,
                    clearAnimations: b,
                    setCellAnimation: u,
                    setCellAnimations: d,
                    getLayerContainer: h,
                    getCellHandle: p,
                    getContainer: function() {
                        return x
                    },
                    getLimitedAccess: v
                }
            }
        }), define("skbJet/component/phoenixReel/winline", ["com/pixijs/pixi", "skbJet/component/phoenixReel/animationLayer"], function(e, t) {
            return function(n, r, i) {
                function o() {}

                function a(e, t, n, r) {
                    if (!ne || !ne[e]) {
                        Q = !0;
                        var i = se[e];
                        W.lineStyle(n, t, r), n = Math.max(Y, q), l(i.x, i.y, i.width, i.height)
                    }
                }

                function s(e, t, n, r) {
                    if (!ne || !ne[e]) {
                        Q = !0;
                        var i = se[e];
                        W.lineStyle(n, t, r), n = Math.max(Y, q), l(i.x, i.y, i.width, i.height)
                    }
                }

                function l(e, t, n, r) {
                    "round" === K ? W.drawRoundedRect(e, t, n, r, Math.max(n, r) / 16) : W.drawRect(e, t, n, r)
                }

                function u() {
                    var e = Math.max(q, Y);
                    $ && (e -= $);
                    var t = [];
                    return r.options.reels.forEach(function(n) {
                        for (var i = 0; i < n.symbolCount; i++) {
                            var o = {};
                            o.x = r.options.pos.x + n.x + e / 2, o.y = r.options.pos.y + n.y + (r.symbolSlotHeight + r.symbolSpacingH) * i + e / 2, o.width = r.symbolSlotWidth - e, o.height = r.symbolSlotHeight - e, t.push(o)
                        }
                    }), t
                }

                function c(e, t, n, r, i, o) {
                    return Math.abs(n - e) <= i / 2 && Math.abs(r - t) <= o / 2
                }

                function d(e) {
                    ue = e.reduce(function(e, t, n) {
                        return e[t] = n, e
                    }, {})
                }

                function h(e) {
                    return ((16711680 & e) / 2 & 16711680) + ((65280 & e) / 2 & 65280) + ((255 & e) / 2 & 255)
                }

                function p(e) {
                    le.winlines.forEach(function(e) {
                        var t, n, i, o, a, s, l, u, d;
                        e.hasOwnProperty("backgroundColour") || (e.backgroundColour = 0), e.hasOwnProperty("start") || (e.start = 0), e.hasOwnProperty("end") || (e.end = 0), e.x = [], e.y = [], e.leftx = [], e.lefty = [], e.rightx = [], e.righty = [], e.leftToRight || (e.locations = e.locations.reverse());
                        for (var h, p = le.leftx + e.start + r.options.pos.x, f = 0; f < e.locations.length; f++) {
                            if (l = se[e.locations[f]], u = l.x + l.width / 2, d = l.y + l.height / 2 + e.yOffset, e.x.push(u), e.y.push(d), h || (h = d), a = p - u, 0 === (s = h - d)) e.leftx.push(l.x), e.lefty.push(d);
                            else if (Math.abs(a) > Math.abs(s)) {
                                for (t = s / a, i = e.x[f], o = e.y[f]; c(i, o, u, d - e.yOffset, l.width, l.height);) i -= 1, o -= t;
                                i += 1, o += t, e.leftx.push(i), e.lefty.push(o)
                            } else {
                                for (t = a / s, i = e.x[f], o = e.y[f], n = s < 0 ? -1 : 1; c(i, o, u, d - e.yOffset, l.width, l.height);) i -= Math.abs(t), o += n;
                                i += Math.abs(t), o -= n, e.leftx.push(i), e.lefty.push(o)
                            }
                            p = u, h = d
                        }
                        for (f = 0; f < e.locations.length - 1; f++)
                            if (a = e.x[f] - e.x[f + 1], s = e.y[f] - e.y[f + 1], l = se[e.locations[f]], 0 === s) e.rightx.push(l.x + l.width), e.righty.push(e.y[f]);
                            else if (Math.abs(a) > Math.abs(s)) {
                            for (t = s / a, i = e.x[f], o = e.y[f]; c(i, o, e.x[f], e.y[f] - e.yOffset, l.width, l.height);) i += 1, o += t;
                            i -= 1, o -= t, e.rightx.push(i), e.righty.push(o)
                        } else {
                            for (t = a / s, i = e.x[f], o = e.y[f], n = s < 0 ? 1 : -1; c(i, o, e.x[f], e.y[f] - e.yOffset, l.width, l.height);) i += Math.abs(t), o += n;
                            i -= Math.abs(t), o -= n, e.rightx.push(i), e.righty.push(o)
                        }
                        e.rightx.push(e.x[e.locations.length - 1] + se[e.locations.length - 1].width / 2), e.righty.push(e.y[e.locations.length - 1]), e.leftToRight || (e.locations = e.locations.reverse(), e.x = e.x.reverse(), e.y = e.y.reverse(), e.leftx = e.leftx.reverse(), e.lefty = e.lefty.reverse(), e.rightx = e.rightx.reverse(), e.righty = e.righty.reverse())
                    }), e || (le.leftx += r.options.pos.x, le.rightx += r.options.pos.x)
                }

                function f(e, t, n, r, i) {
                    Q = !0, W.moveTo(le.leftx + e.start, e.y[0]), m(le.leftx + e.start, e.y[0], n, r, i), W.moveTo(le.leftx + e.start, e.y[0]);
                    for (var o = 0; o < e.locations.length; o++) t > o ? (W.lineTo(e.leftx[o], e.lefty[o]), W.moveTo(e.rightx[o], e.righty[o])) : W.lineTo(e.x[o], e.y[o]);
                    var a = le.shortenright ? le.shortenright : 0;
                    (t < e.locations.length || 0 === a) && (W.lineTo(le.rightx + e.end - a, e.y[e.locations.length - 1]), m(le.rightx + e.end - a, e.y[e.locations.length - 1], n, r, i))
                }

                function m(e, t, n, r, i) {
                    if (Q = !0, "round" === ce) W.lineStyle(n / 2, i, r), W.drawCircle(e, t, 1), W.lineStyle(n, i, r);
                    else {
                        if ("square" !== ce) return;
                        W.moveTo(e, t), W.lineTo(e, t)
                    }
                }

                function g(e, t, n, r, i) {
                    Q = !0, W.moveTo(le.rightx + e.end + (ce ? n / 2 : 0), e.y[0]), m(le.rightx + e.end + (ce ? n / 2 : 0), e.y[0], n, r, i), W.moveTo(le.rightx + e.end + (ce ? n / 2 : 0), e.y[0]);
                    for (var o = 0; o < e.locations.length; o++) t > e.locations.length - 1 - o ? (W.lineTo(e.rightx[o], e.righty[o]), W.moveTo(e.leftx[o], e.lefty[o])) : W.lineTo(e.x[o], e.y[o]);
                    var a = le.shortenleft ? le.shortenleft : 0;
                    0 !== t && 0 !== a || (W.lineTo(le.leftx + e.start + a - (ce ? n / 2 : 0), e.y[e.locations.length - 1]), m(le.leftx + e.start - n / 2 + a, e.y[e.locations.length - 1], n, r, i))
                }

                function b(e, t, n, r, i) {
                    Q = !0;
                    var o = le.winlines[e];
                    W.lineStyle(n, i || o.backgroundColour, r), le.winlines[e].leftToRight ? f(o, t, n, r, i || o.backgroundColour) : g(o, t, n, r, i || o.backgroundColour)
                }

                function _(e, t, n, r, i) {
                    Q = !0;
                    var o = le.winlines[e];
                    W.lineStyle(n, i || o.colour, r), le.winlines[e].leftToRight ? f(o, t, n, r, i || o.colour) : g(o, t, n, r, i || o.colour)
                }

                function y(e) {
                    oe(), Q = !0, e.forEach(function(e) {
                        b(e - 1, 0, q, X), _(e - 1, 0, Y, X)
                    }), ae()
                }

                function v(e, t) {
                    oe(), Q = !0;
                    var n = e - 1;
                    b(n, t, q, X);
                    for (var r, i = 0; i < t; i++) r = le.winlines[n].leftToRight ? i : le.winlines[n].locations.length - 1 - i, a(le.winlines[n].locations[r], le.winlines[n].backgroundColour, q, X);
                    for (_(n, t, Y, X), i = 0; i < t; i++) r = le.winlines[n].leftToRight ? i : le.winlines[n].locations.length - 1 - i, s(le.winlines[n].locations[r], le.winlines[n].colour, Y, X);
                    ae()
                }

                function x(e) {
                    var t = parseInt(e["@name"].substring(5)) - 1,
                        n = e.Cell.map(function(e) {
                            return ue[e["@name"]]
                        });
                    oe(), Q = !0, b(t, n.length, q, X);
                    for (var r = 0; r < n.length; r++) a(n[r], le.winlines[t].backgroundColour, q, X);
                    for (_(t, n.length, Y, X), r = 0; r < n.length; r++) s(n[r], le.winlines[t].colour, Y, X);
                    ae()
                }

                function S(t, n) {
                    var r = parseInt(t["@name"].substring(5)) - 1,
                        i = t.Cell.map(function(e) {
                            return ue[e["@name"]]
                        });
                    n.opacity && (n.opacity = parseFloat(n.opacity)), n.height && (n.height = parseInt(n.height)), oe(), Q = !0;
                    var o, l;
                    b(r, i.length, q, X);
                    for (var u = 0; u < i.length; u++) a(i[u], le.winlines[r].backgroundColour, q, X), n && n.location === t.Cell[u]["@name"] && (o = se[i[u]], l = q, W.moveTo(o.x, o.y + (o.height - n.height)), W.lineTo(o.x + o.width, o.y + (o.height - n.height)), n.hasOwnProperty("backgroundColor") && (W.lineStyle(1, n.backgroundColor, X), W.beginFill(n.backgroundColor, n.hasOwnProperty("opacity") ? n.opacity : X), W.drawRect(o.x + l / 2, o.y + (o.height - parseInt(n.height)), o.width - l, parseInt(n.height) - l / 2), W.endFill()));
                    for (_(r, i.length, Y, X), u = 0; u < i.length; u++) s(i[u], le.winlines[r].colour, Y, X), n && n.location === t.Cell[u]["@name"] && (o = se[i[u]], l = Y, W.moveTo(o.x, o.y + (o.height - n.height)), W.lineTo(o.x + o.width, o.y + (o.height - n.height)), n.displayText && n.textStyle && (z && V.removeChild(z), z = new e.Text(n.displayText, n.textStyle), z.x = o.x + 2 * l, z.y = o.y + (o.height - n.height / 2 - z.height / 2), "center" === n.textStyle.align && (z.x = o.x + o.width / 2 - z.width / 2), V.addChild(z)));
                    ae()
                }

                function w(e, t, n) {
                    Q = !0, e.forEach(function(e) {
                        a(e, n || 0, q, X), s(e, t, Y, X)
                    })
                }

                function T(e, t, n) {
                    Q = !0, e.forEach(function(e) {
                        void 0 !== ue[e] && (a(ue[e], n || 0, q, X), s(ue[e], t, Y, X))
                    })
                }

                function P(t, n, r, i) {
                    Q = !0, t.forEach(function(t) {
                        if (void 0 !== ue[t]) {
                            var o, l = q;
                            a(ue[t], r, l, X), i && i.location === t && (o = se[ue[t]], W.moveTo(o.x, o.y + (o.height - i.height)), W.lineTo(o.x + o.width, o.y + (o.height - i.height)), i.hasOwnProperty("backgroundColor") && (W.lineStyle(1, i.backgroundColor, X), W.beginFill(i.backgroundColor, i.hasOwnProperty("opacity") ? i.opacity : X), W.drawRect(o.x + l / 2, o.y + (o.height - parseInt(i.height)), o.width - l, parseInt(i.height) - l / 2), W.endFill())), l = Y, s(ue[t], n, l, X), i && i.location === t && (o = se[ue[t]], W.moveTo(o.x + l / 2, o.y + (o.height - i.height)), W.lineTo(o.x + l / 2 + (o.width - l), o.y + (o.height - i.height)), i.displayText && i.textStyle && (z && V.removeChild(z), z = new e.Text(i.displayText, i.textStyle), z.x = o.x + 2 * l, z.y = o.y + (o.height - i.height / 2 - z.height / 2), "center" === i.textStyle.align && (z.x = o.x + o.width / 2 - z.width / 2), V.addChild(z)))
                        }
                    }), ae()
                }

                function C(e) {
                    W && (W.visible = e), z && (z.visible = e)
                }

                function k(e) {
                    var t = e - 1,
                        n = {};
                    return n.lineData = le.winlines[t], n.boxData = [], le.winlines[t].locations.forEach(function(e) {
                        n.boxData.push(se[e])
                    }), n.thickness = q, n.leftx = le.leftx + n.lineData.start, n.rightx = le.rightx + n.lineData.end, n
                }

                function O(e) {
                    ce = "round" === e || "square" === e ? e : void 0
                }

                function E(e, t) {
                    var n = e,
                        r = arguments.length > 1 ? t : 2 * e;
                    Y === n && q === r || (Y = n, q = r, se = u(), p(!0))
                }

                function A(e) {
                    J = e
                }

                function M(e) {
                    K = "round" === e ? "round" : "square"
                }

                function R(e) {
                    $ = e, se = u(), p(!0)
                }

                function I() {
                    return te
                }

                function B(e) {
                    e ? de || (de = oe, oe = function() {}) : de && (oe = de, de = void 0)
                }

                function L(e) {
                    e ? he || (he = ae, ae = function() {}) : he && (ae = he, he = void 0)
                }

                function D() {
                    for (var e = JSON.parse(JSON.stringify(le)), t = 0; t < le.winlines.length; t++) delete e.winlines[t].x, delete e.winlines[t].y, delete e.winlines[t].leftx, delete e.winlines[t].lefty, delete e.winlines[t].rightx, delete e.winlines[t].righty
                }

                function F(e) {
                    switch (e.key.toLowerCase()) {
                        case "arrowleft":
                            --fe < 0 && (fe = le.winlines.length - 1);
                            break;
                        case "arrowright":
                            ++fe >= le.winlines.length && (fe = 0);
                            break;
                        case "arrowup":
                            le.winlines[fe].yOffset--;
                            break;
                        case "arrowdown":
                            le.winlines[fe].yOffset++;
                            break;
                        case "g":
                            me = !me, ge = !1;
                            break;
                        case "q":
                            le.winlines[fe].start--;
                            break;
                        case "w":
                            le.winlines[fe].start++;
                            break;
                        case "a":
                            le.winlines[fe].end--;
                            break;
                        case "s":
                            le.winlines[fe].end++;
                            break;
                        case "x":
                            G(!1);
                            break;
                        case "d":
                            D();
                            break;
                        default:
                            return void e.preventDefault()
                    }
                    if (le.winlines[fe].yOffset > r.symbolSlotHeight / 2 && (le.winlines[fe].yOffset = Math.floor(r.symbolSlotHeight / 2)), le.winlines[fe].yOffset < -r.symbolSlotHeight / 2 && (le.winlines[fe].yOffset = -Math.floor(r.symbolSlotHeight / 2)), p(!0), !pe) return void oe();
                    if (de(), me)
                        for (var t = 0; t < le.winlines.length; t++) b(t, 0, q, X, 0), _(t, 0, Y, X, 6710886);
                    v(fe + 1, 0), e.preventDefault()
                }

                function N() {}

                function G(e) {
                    e ? (pe && window.removeEventListener("keydown", F), window.addEventListener("keydown", F, !1), N(), v(fe + 1, 0), pe = !0) : (window.removeEventListener("keydown", F), pe = !1), B(pe)
                }

                function j() {
                    oe(), B(!0), L(!0)
                }

                function U() {
                    L(!1), ae(), B(!1)
                }
                var W, H, z, V = new e.Container,
                    X = 1,
                    J = 1,
                    Y = 4,
                    q = 8,
                    $ = 0,
                    K = "square",
                    Q = !1,
                    Z = t(r, null),
                    ee = Z.getContainer(),
                    te = Z.getLimitedAccess(),
                    ne = {},
                    re = te.clearAnimations;
                te.clearAnimations = function() {
                    ne = {}, re()
                };
                var ie = te.setCellAnimation;
                te.setCellAnimation = function(e, t, n, r, i) {
                    0 === r && void 0 !== ue[e] && (ne[ue[e]] = !0), ie(e, t, n, r, i)
                };
                var oe = function() {
                        W ? Q && (Q = !1, W.cacheAsBitmap = !1, W.clear()) : (W = new e.Graphics, H = new e.Container, H.addChild(W), V.addChild(H), V.addChild(ee)), z && (V.removeChild(z), z = null)
                    },
                    ae = function() {
                        1 !== J && (W.cacheAsBitmap = !0, H.alpha = J)
                    },
                    se = [],
                    le = i,
                    ue = {};
                ! function() {
                    se = u(), p(), d(r.locationsMap)
                }();
                var ce, de, he, pe = !1,
                    fe = 0,
                    me = !1,
                    ge = !1;
                return {
                    drawWinline: v,
                    drawHighlightOutcome: x,
                    drawHighlightOutcomeWithWinBox: S,
                    drawSpaghetti: y,
                    drawBoxes: w,
                    drawBoxesFromLocations: T,
                    drawBoxesFromLocationsWithWinBox: P,
                    setLineCap: O,
                    clear: oe,
                    done: o,
                    show: C,
                    getContainer: function() {
                        return V
                    },
                    getWinline: k,
                    setLineThickness: E,
                    setOpacity: A,
                    setBoxMode: M,
                    setBoxPadding: R,
                    getHalfbrightColour: h,
                    getAnimationLayer: I,
                    editLines: G,
                    drawStart: j,
                    drawEnd: U
                }
            }
        }), define("game/winLinesInfo", [], function() {
            function e() {
                return {
                    winlines: [{
                        id: "Line 0",
                        locations: [1, 5, 9, 13, 17],
                        colour: "0xFF8C8C",
                        leftToRight: 1,
                        yOffset: 0,
                        backgroundColour: "0xDB0000",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 1",
                        locations: [2, 6, 10, 14, 18],
                        colour: "0x6363FC",
                        leftToRight: 1,
                        yOffset: 0,
                        backgroundColour: "0x0000DD",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 2",
                        locations: [0, 4, 8, 12, 16],
                        colour: "0x007FE7",
                        leftToRight: 1,
                        yOffset: 0,
                        backgroundColour: "0x00457C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 3",
                        locations: [3, 7, 11, 15, 19],
                        colour: "0xFFE0E0",
                        leftToRight: 1,
                        yOffset: 0,
                        backgroundColour: "0xEE9090",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 4",
                        locations: [1, 6, 11, 14, 17],
                        colour: "0xFA9CFA",
                        leftToRight: 1,
                        yOffset: -20,
                        backgroundColour: "0xF500F5",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 5",
                        locations: [2, 5, 8, 13, 18],
                        colour: "0xFFE2B1",
                        leftToRight: 1,
                        yOffset: 20,
                        backgroundColour: "0xDF9100",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 6",
                        locations: [0, 4, 9, 14, 19],
                        colour: "0xEC0FB1",
                        leftToRight: 1,
                        yOffset: 20,
                        backgroundColour: "0x7A005A",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 7",
                        locations: [3, 7, 10, 13, 16],
                        colour: "0x28F528",
                        leftToRight: 1,
                        yOffset: -20,
                        backgroundColour: "0x009300",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 8",
                        locations: [1, 4, 8, 12, 17],
                        colour: "0xFFFCE7",
                        leftToRight: 1,
                        yOffset: 20,
                        backgroundColour: "0xDBC500",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 9",
                        locations: [2, 7, 11, 15, 18],
                        colour: "0xF54A4A",
                        leftToRight: 1,
                        yOffset: -20,
                        backgroundColour: "0x950000",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 10",
                        locations: [0, 5, 10, 15, 19],
                        colour: "0xC6FFFF",
                        leftToRight: 1,
                        yOffset: -20,
                        backgroundColour: "0x00E1E1",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 11",
                        locations: [3, 6, 9, 12, 16],
                        colour: "0xD7D719",
                        leftToRight: 1,
                        yOffset: 20,
                        backgroundColour: "0x8A8A00",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 12",
                        locations: [1, 4, 9, 14, 17],
                        colour: "0x62D7FF",
                        leftToRight: 1,
                        yOffset: -40,
                        backgroundColour: "0x0097C9",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 13",
                        locations: [2, 7, 10, 13, 18],
                        colour: "0xE0FFE0",
                        leftToRight: 1,
                        yOffset: 40,
                        backgroundColour: "0x00E000",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 14",
                        locations: [0, 5, 8, 13, 16],
                        colour: "0xEEEEEE",
                        leftToRight: 1,
                        yOffset: -40,
                        backgroundColour: "0xAEAEAE",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 15",
                        locations: [3, 6, 11, 14, 19],
                        colour: "0x6CE2C2",
                        leftToRight: 1,
                        yOffset: -40,
                        backgroundColour: "0x4B8877",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 16",
                        locations: [1, 6, 9, 12, 17],
                        colour: "0xFC88B2",
                        leftToRight: 1,
                        yOffset: 40,
                        backgroundColour: "0xD1004C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 17",
                        locations: [2, 5, 10, 15, 18],
                        colour: "0x5DBDF7",
                        leftToRight: 1,
                        yOffset: -40,
                        backgroundColour: "0x006FB3",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 18",
                        locations: [0, 5, 9, 13, 16],
                        colour: "0xB8FFDB",
                        leftToRight: 1,
                        yOffset: 40,
                        backgroundColour: "0x00C160",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 19",
                        locations: [3, 6, 10, 14, 19],
                        colour: "0xFFFFFF",
                        leftToRight: 1,
                        yOffset: 40,
                        backgroundColour: "0xCCCE81",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 20",
                        locations: [1, 5, 10, 15, 19],
                        colour: "0xCD07D4",
                        leftToRight: 1,
                        yOffset: 51,
                        backgroundColour: "0x6F0073",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 21",
                        locations: [2, 6, 9, 12, 16],
                        colour: "0xFFE4C6",
                        leftToRight: 1,
                        yOffset: -11,
                        backgroundColour: "0xE8AA66",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 22",
                        locations: [1, 5, 8, 13, 17],
                        colour: "0xD495FF",
                        leftToRight: 1,
                        yOffset: -28,
                        backgroundColour: "0x9634D7",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 23",
                        locations: [2, 6, 11, 14, 18],
                        colour: "0xDBD9FF",
                        leftToRight: 1,
                        yOffset: -29,
                        backgroundColour: "0x8987B5",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 24",
                        locations: [1, 6, 10, 14, 19],
                        colour: "0xF0FFC9",
                        leftToRight: 1,
                        yOffset: -8,
                        backgroundColour: "0x9FD700",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 25",
                        locations: [2, 5, 9, 13, 16],
                        colour: "0xECC6FF",
                        leftToRight: 1,
                        yOffset: -50,
                        backgroundColour: "0xC16FE8",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 26",
                        locations: [0, 4, 9, 12, 16],
                        colour: "0xE2CA16",
                        leftToRight: 1,
                        yOffset: 9,
                        backgroundColour: "0x8F7E02",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 27",
                        locations: [3, 7, 10, 15, 19],
                        colour: "0xB4BBF5",
                        leftToRight: 1,
                        yOffset: 13,
                        backgroundColour: "0x7076A6",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 28",
                        locations: [0, 5, 10, 14, 19],
                        colour: "0xAAC6FF",
                        leftToRight: 1,
                        yOffset: -48,
                        backgroundColour: "0x648AD6",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 29",
                        locations: [3, 6, 9, 13, 16],
                        colour: "0x9E2FD0",
                        leftToRight: 1,
                        yOffset: 30,
                        backgroundColour: "0x601880",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 30",
                        locations: [0, 4, 8, 13, 18],
                        colour: "0xF3FCD2",
                        leftToRight: 1,
                        yOffset: 10,
                        backgroundColour: "0xBDCB8E",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 31",
                        locations: [3, 7, 11, 14, 17],
                        colour: "0x56FFE3",
                        leftToRight: 1,
                        yOffset: 12,
                        backgroundColour: "0x1EAD95",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 32",
                        locations: [1, 4, 8, 13, 18],
                        colour: "0xDEFFF5",
                        leftToRight: 1,
                        yOffset: -10,
                        backgroundColour: "0xA8CAC0",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 33",
                        locations: [2, 7, 11, 14, 17],
                        colour: "0xE3FFDE",
                        leftToRight: 1,
                        yOffset: 31,
                        backgroundColour: "0x28E700",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 34",
                        locations: [0, 5, 9, 14, 19],
                        colour: "0xFCF0B9",
                        leftToRight: 1,
                        yOffset: 33,
                        backgroundColour: "0xCFB63C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 35",
                        locations: [3, 6, 10, 13, 16],
                        colour: "0x61FC61",
                        leftToRight: 1,
                        yOffset: -31,
                        backgroundColour: "0x00B600",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 36",
                        locations: [1, 4, 9, 14, 19],
                        colour: "0xFC98FF",
                        leftToRight: 1,
                        yOffset: -28,
                        backgroundColour: "0xC834CB",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 37",
                        locations: [2, 7, 10, 13, 16],
                        colour: "0xFFB0A1",
                        leftToRight: 1,
                        yOffset: 49,
                        backgroundColour: "0xCE614C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 38",
                        locations: [0, 5, 10, 15, 18],
                        colour: "0xC6C5C5",
                        leftToRight: 1,
                        yOffset: 30,
                        backgroundColour: "0x7D7F80",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 39",
                        locations: [3, 6, 9, 12, 17],
                        colour: "0xEEF7FF",
                        leftToRight: 1,
                        yOffset: -8,
                        backgroundColour: "0xA7BCCF",
                        start: 0,
                        end: 0
                    }],
                    rightx: 918,
                    shortenright: 5,
                    leftx: 0
                }
            }

            function t() {
                return {
                    winlines: [{
                        id: "Line 0",
                        locations: [1, 5, 9, 13, 17],
                        colour: "0xFF8C8C",
                        leftToRight: 1,
                        yOffset: -1,
                        backgroundColour: "0xDB0000",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 1",
                        locations: [2, 6, 10, 14, 18],
                        colour: "0x6363FC",
                        leftToRight: 1,
                        yOffset: 2,
                        backgroundColour: "0x0000DD",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 2",
                        locations: [0, 4, 8, 12, 16],
                        colour: "0x007FE7",
                        leftToRight: 1,
                        yOffset: -1,
                        backgroundColour: "0x00457C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 3",
                        locations: [3, 7, 11, 15, 19],
                        colour: "0xFFE0E0",
                        leftToRight: 1,
                        yOffset: -1,
                        backgroundColour: "0xEE9090",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 4",
                        locations: [1, 6, 11, 14, 17],
                        colour: "0xFA9CFA",
                        leftToRight: 1,
                        yOffset: -12,
                        backgroundColour: "0xF500F5",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 5",
                        locations: [2, 5, 8, 13, 18],
                        colour: "0xFFE2B1",
                        leftToRight: 1,
                        yOffset: 11,
                        backgroundColour: "0xDF9100",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 6",
                        locations: [0, 4, 9, 14, 19],
                        colour: "0xEC0FB1",
                        leftToRight: 1,
                        yOffset: 11,
                        backgroundColour: "0x7A005A",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 7",
                        locations: [3, 7, 10, 13, 16],
                        colour: "0x28F528",
                        leftToRight: 1,
                        yOffset: -13,
                        backgroundColour: "0x009300",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 8",
                        locations: [1, 4, 8, 12, 17],
                        colour: "0xFFFCE7",
                        leftToRight: 1,
                        yOffset: 11,
                        backgroundColour: "0xDBC500",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 9",
                        locations: [2, 7, 11, 15, 18],
                        colour: "0xF54A4A",
                        leftToRight: 1,
                        yOffset: -11,
                        backgroundColour: "0x950000",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 10",
                        locations: [0, 5, 10, 15, 19],
                        colour: "0xC6FFFF",
                        leftToRight: 1,
                        yOffset: -13,
                        backgroundColour: "0x00E1E1",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 11",
                        locations: [3, 6, 9, 12, 16],
                        colour: "0xD7D719",
                        leftToRight: 1,
                        yOffset: 11,
                        backgroundColour: "0x8A8A00",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 12",
                        locations: [1, 4, 9, 14, 17],
                        colour: "0x62D7FF",
                        leftToRight: 1,
                        yOffset: -25,
                        backgroundColour: "0x0097C9",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 13",
                        locations: [2, 7, 10, 13, 18],
                        colour: "0xE0FFE0",
                        leftToRight: 1,
                        yOffset: 25,
                        backgroundColour: "0x00E000",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 14",
                        locations: [0, 5, 8, 13, 16],
                        colour: "0xEEEEEE",
                        leftToRight: 1,
                        yOffset: -25,
                        backgroundColour: "0xAEAEAE",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 15",
                        locations: [3, 6, 11, 14, 19],
                        colour: "0x6CE2C2",
                        leftToRight: 1,
                        yOffset: -25,
                        backgroundColour: "0x4B8877",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 16",
                        locations: [1, 6, 9, 12, 17],
                        colour: "0xFC88B2",
                        leftToRight: 1,
                        yOffset: 23,
                        backgroundColour: "0xD1004C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 17",
                        locations: [2, 5, 10, 15, 18],
                        colour: "0x5DBDF7",
                        leftToRight: 1,
                        yOffset: -23,
                        backgroundColour: "0x006FB3",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 18",
                        locations: [0, 5, 9, 13, 16],
                        colour: "0xB8FFDB",
                        leftToRight: 1,
                        yOffset: 23,
                        backgroundColour: "0x00C160",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 19",
                        locations: [3, 6, 10, 14, 19],
                        colour: "0xFFFFFF",
                        leftToRight: 1,
                        yOffset: 24,
                        backgroundColour: "0xCCCE81",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 20",
                        locations: [1, 5, 10, 15, 19],
                        colour: "0xCD07D4",
                        leftToRight: 1,
                        yOffset: 30,
                        backgroundColour: "0x6F0073",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 21",
                        locations: [2, 6, 9, 12, 16],
                        colour: "0xFFE4C6",
                        leftToRight: 1,
                        yOffset: -6,
                        backgroundColour: "0xE8AA66",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 22",
                        locations: [1, 5, 8, 13, 17],
                        colour: "0xD495FF",
                        leftToRight: 1,
                        yOffset: -19,
                        backgroundColour: "0x9634D7",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 23",
                        locations: [2, 6, 11, 14, 18],
                        colour: "0xDBD9FF",
                        leftToRight: 1,
                        yOffset: -19,
                        backgroundColour: "0x8987B5",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 24",
                        locations: [1, 6, 10, 14, 19],
                        colour: "0xF0FFC9",
                        leftToRight: 1,
                        yOffset: -5,
                        backgroundColour: "0x9FD700",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 25",
                        locations: [2, 5, 9, 13, 16],
                        colour: "0xECC6FF",
                        leftToRight: 1,
                        yOffset: -30,
                        backgroundColour: "0xC16FE8",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 26",
                        locations: [0, 4, 9, 12, 16],
                        colour: "0xE2CA16",
                        leftToRight: 1,
                        yOffset: 7,
                        backgroundColour: "0x8F7E02",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 27",
                        locations: [3, 7, 10, 15, 19],
                        colour: "0xB4BBF5",
                        leftToRight: 1,
                        yOffset: 8,
                        backgroundColour: "0x7076A6",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 28",
                        locations: [0, 5, 10, 14, 19],
                        colour: "0xAAC6FF",
                        leftToRight: 1,
                        yOffset: -17,
                        backgroundColour: "0x648AD6",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 29",
                        locations: [3, 6, 9, 13, 16],
                        colour: "0x9E2FD0",
                        leftToRight: 1,
                        yOffset: 19,
                        backgroundColour: "0x601880",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 30",
                        locations: [0, 4, 8, 13, 18],
                        colour: "0xF3FCD2",
                        leftToRight: 1,
                        yOffset: 4,
                        backgroundColour: "0xBDCB8E",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 31",
                        locations: [3, 7, 11, 14, 17],
                        colour: "0x56FFE3",
                        leftToRight: 1,
                        yOffset: 5,
                        backgroundColour: "0x1EAD95",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 32",
                        locations: [1, 4, 8, 13, 18],
                        colour: "0xDEFFF5",
                        leftToRight: 1,
                        yOffset: -7,
                        backgroundColour: "0xA8CAC0",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 33",
                        locations: [2, 7, 11, 14, 17],
                        colour: "0xE3FFDE",
                        leftToRight: 1,
                        yOffset: 17,
                        backgroundColour: "0x28E700",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 34",
                        locations: [0, 5, 9, 14, 19],
                        colour: "0xFCF0B9",
                        leftToRight: 1,
                        yOffset: 19,
                        backgroundColour: "0xCFB63C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 35",
                        locations: [3, 6, 10, 13, 16],
                        colour: "0x61FC61",
                        leftToRight: 1,
                        yOffset: -17,
                        backgroundColour: "0x00B600",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 36",
                        locations: [1, 4, 9, 14, 19],
                        colour: "0xFC98FF",
                        leftToRight: 1,
                        yOffset: -29,
                        backgroundColour: "0xC834CB",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 37",
                        locations: [2, 7, 10, 13, 16],
                        colour: "0xFFB0A1",
                        leftToRight: 1,
                        yOffset: 30,
                        backgroundColour: "0xCE614C",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 38",
                        locations: [0, 5, 10, 15, 18],
                        colour: "0xC6C5C5",
                        leftToRight: 1,
                        yOffset: 17,
                        backgroundColour: "0x7D7F80",
                        start: 0,
                        end: 0
                    }, {
                        id: "Line 39",
                        locations: [3, 6, 9, 12, 17],
                        colour: "0xEEF7FF",
                        leftToRight: 1,
                        yOffset: -7,
                        backgroundColour: "0xA7BCCF",
                        start: 0,
                        end: 0
                    }],
                    rightx: 476,
                    shortenright: 5,
                    leftx: 0
                }
            }
            return {
                winLinesInfoDesktop: e,
                winLinesInfoMobile: t
            }
        }), define("game/globalArray", [], function() {
            function e() {
                Array.prototype.includes || Object.defineProperty(Array.prototype, "includes", {
                    value: function(e, t) {
                        if (null === this) throw new TypeError('"this" is null or not defined');
                        var n = Object(this),
                            r = n.length >>> 0;
                        if (0 === r) return !1;
                        for (var i = 0 | t, o = Math.max(i >= 0 ? i : r - Math.abs(i), 0); o < r;) {
                            if (function(e, t) {
                                    return e === t || "number" == typeof e && "number" == typeof t && isNaN(e) && isNaN(t)
                                }(n[o], e)) return !0;
                            o++
                        }
                        return !1
                    }
                })
            }

            function t() {
                Array.prototype.fill || Object.defineProperty(Array.prototype, "fill", {
                    value: function(e) {
                        if (null === this) throw new TypeError("this is null or not defined");
                        for (var t = Object(this), n = t.length >>> 0, r = arguments[1], i = r >> 0, o = i < 0 ? Math.max(n + i, 0) : Math.min(i, n), a = arguments[2], s = void 0 === a ? n : a >> 0, l = s < 0 ? Math.max(n + s, 0) : Math.min(s, n); o < l;) t[o] = e, o++;
                        return t
                    }
                })
            }

            function n() {
                String.prototype.includes || Object.defineProperty(String.prototype, "includes", {
                    value: function(e, t) {
                        return "number" != typeof t && (t = 0), !(t + e.length > this.length) && -1 !== this.indexOf(e, t)
                    }
                })
            }
            return {
                addArrayInclude: e,
                addArrayFill: t,
                addStringInclude: n
            }
        }), define("game/AGCOHelper", ["require", "skbJet/component/gameMsgBus/GameMsgBus"], function(e) {
            function t() {
                this.gameLogicResponse = null, this.stage = "", this.nextStage = "", this.currentState = "", this.totalBet = 0, this.totalWin = 0, this.currentFreespinWin = 0, this.rgPresentation = !1, this.addListeners()
            }
            var n = e("skbJet/component/gameMsgBus/GameMsgBus");
            return t.prototype.addListeners = function() {
                var e = this;
                n.subscribe("platformMsg/Kernel/System.Init", function(t) {
                    e.onSystemInit(t)
                })
            }, t.prototype.updateData = function(e) {
                e && (this.gameLogicResponse = e, this.updateStage(), this.updateTotalBet(), this.updateWinnings())
            }, t.prototype.updateStage = function() {
                this.stage = this.gameLogicResponse.OutcomeDetail.Stage, this.nextStage = this.gameLogicResponse.OutcomeDetail.NextStage, this.currentState = this.gameLogicResponse.OutcomeDetail.GameStatus, ("FreeSpin" === this.stage && "BaseGame" === this.nextStage && "Initial" === this.currentState || "WheelBonus" === this.stage && "BaseGame" === this.nextStage) && (this.stage = this.nextStage)
            }, t.prototype.updateTotalBet = function() {
                var e = parseInt(this.gameLogicResponse.PatternSliderInput.BetPerPattern),
                    t = parseInt(this.gameLogicResponse.PatternSliderInput.PatternsBet);
                this.totalBet = e * t
            }, t.prototype.updateWinnings = function() {
                var e = null;
                if (this.totalWin = 0, void 0 !== this.gameLogicResponse.PrizeOutcome) {
                    for (var t = 0; t < this.gameLogicResponse.PrizeOutcome.length; t++)
                        if (e = this.gameLogicResponse.PrizeOutcome[t], "Game.Total" === e["@name"]) {
                            this.totalWin = parseInt(e["@totalPay"]);
                            break
                        }
                    this.currentFreespinWin = this.getPerWinInBonusGame({
                        response: this.gameLogicResponse
                    })
                }
            }, t.prototype.isPerWinGreaterThanStake = function(e) {
                if (this.updateData(e), this.gameLogicResponse) return "FreeSpin" === this.stage ? this.currentFreespinWin > this.totalBet : "BaseGame" === this.stage && this.totalWin > this.totalBet;
                throw new Error("no valid game response found, please update data before checking!")
            }, t.prototype.isTotalWinGreaterThanStake = function(e) {
                if (this.updateData(e), this.gameLogicResponse) return this.totalWin > this.totalBet;
                throw new Error("no valid game response found, please update data before checking!")
            }, t.prototype.getPerWinInBonusGame = function() {
                for (var e = 0, t = this.gameLogicResponse.PrizeOutcome, n = 0; n < t.length; n++) "FreeSpin.Lines" !== t[n]["@name"] && "FreeSpin.LinesAny" !== t[n]["@name"] && "FreeSpin.Scatter" !== t[n]["@name"] || (e += Number(t[n]["@totalPay"]));
                return e
            }, t.prototype.onSystemInit = function(e) {
                e && e.gameConfig && (this.rgPresentation = !!e.gameConfig.rgPresentation)
            }, t.prototype.isUKGCActive = function() {
                return this.rgPresentation
            }, t.prototype.isBasegameAnimationAllowed = function() {
                if (null === this.gameLogicResponse) throw new Error("no valid game response found, please update data before checking!");
                return !0 !== this.isUKGCActive() || this.isTotalWinGreaterThanStake()
            }, t.prototype.isFreespinAnimationAllowed = function() {
                if (null === this.gameLogicResponse) throw new Error("no valid game response found, please update data before checking!");
                return !0 !== this.isUKGCActive() || this.isPerWinGreaterThanStake()
            }, t
        }), define("game/WinlineAnimController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/phoenixReel/winline", "skbJet/component/gladPixiRenderer/Sprite", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "game/BetController", "game/AutoSpinController", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "game/winLinesInfo", "game/globalArray", "game/AGCOHelper"], function(e, t, n, r, i, o, a, s, l, u, c, d, h) {
            function p(e) {
                Oe = e.serverConfig.presenttype, Ee = e.serverConfig.channel
            }

            function f() {
                return ke = window.location.search.match(/&?assetPack=([^&]+)&?/)[1], "mobile" === ke ? g() : "desktop" === ke || "tablet" === ke ? m() : void 0
            }

            function m() {
                return c.winLinesInfoDesktop()
            }

            function g() {
                return c.winLinesInfoMobile()
            }

            function b(e) {
                Se = f(), we = Se, Se.leftx = e.basegame.config.options.reels[0].x, we.leftx = e.freespin.config.options.reels[0].x, Se.rightx = e.basegame.config.options.reels[e.basegame.config.options.reels.length - 1].x + e.basegame.config.symbolSlotWidth, we.rightx = e.freespin.config.options.reels[e.freespin.config.options.reels.length - 1].x + e.freespin.config.symbolSlotWidth, We = r(n.getPixiRenderer(), e.basegame.config, Se), He = r(n.getPixiRenderer(), e.freespin.config, we), We.setOpacity(1), He.setOpacity(1), Xe = We.getContainer(), Je = He.getContainer(), n.lib._reelShadeSetBGWinline.pixiContainer.addChild(Xe), n.lib._reelShadeSetBGWinline.pixiContainer.addChild(Je), De = e.currentStage, B(e.currentStage), ze = e.basegame.winPresentation, Ve = e.freespin.winPresentation
            }

            function _(e) {
                for (var t = "Line " + (e.slice(5) - 1), n = "FreeSpin" === De ? we : Se, r = 0; r < n.winlines.length; r++)
                    if (t === n.winlines[r].id) return r + 1
            }

            function y() {
                return "FreeSpin" === Le.OutcomeDetail.NextStage ? He : We
            }

            function v() {
                return "FreeSpin" === Le.OutcomeDetail.NextStage ? Ve : ze
            }

            function x(e, t) {
                e = e || Le.PopulationOutcome, t = t || De, St = {};
                for (var n = 0; n < e.length; n++)
                    if (e[n]["@name"] === t + ".Reels")
                        for (var r = e[n].Entry, i = 0; i < r.length; i++)
                            for (var o = r[i].Cell, a = 0; a < o.length; a++) {
                                var s = o[a];
                                St[s["@name"]] = s["#text"]
                            }
            }

            function S() {
                return St
            }

            function w() {
                var e = Le.HighlightOutcome;
                wt = [];
                var t = [],
                    n = null;
                if (!Le.AwardCapOutcome || "true" !== Le.AwardCapOutcome.AwardCapExceeded) {
                    for (var r = 0; r < e.length; r++)
                        if (e[r].Highlight && 0 === e[r]["@name"].indexOf(De))
                            if (e[r]["@name"].match(/Lines$/)) {
                                var i = e[r].Highlight;
                                Array.isArray(i) || (i = [i]);
                                for (var o = 0; o < i.length; o++) {
                                    for (var a = new Array(i[o].Cell.length), s = 0; s < i[o].Cell.length; s++) a[s] = i[o].Cell[s]["@name"];
                                    t.push({
                                        mode: "line",
                                        line: _(i[o]["@name"]),
                                        boxLocations: a
                                    })
                                }
                            } else if (e[r]["@name"].match(/Jackpot$/))
                        if (n = {
                                mode: "jack",
                                boxLocations: []
                            }, Array.isArray(e[r].Highlight.Cell))
                            for (var l = 0; l < e[r].Highlight.Cell.length; l++) n.boxLocations.push(e[r].Highlight.Cell[l]["@name"]);
                        else n.boxLocations.push(e[r].Highlight.Cell["@name"]);
                    if (t.length > 0) {
                        for (var u = {
                                mode: "spag",
                                lines: []
                            }, c = 0; c < t.length; c++) u.lines.push(t[c].line);
                        wt.push(u)
                    }
                    if (dt = !1, n && (wt.push(n), dt = !0), t.length > 0) {
                        t = t.sort(function(e, t) {
                            var n = Number(e.line),
                                r = Number(t.line),
                                i = Number(Ge[De + ".Lines"].totalPay["Line " + n]);
                            return Number(Ge[De + ".Lines"].totalPay["Line " + r]) - i
                        });
                        for (var d = 0; d < t.length; d++) wt.push(t[d])
                    }
                }
            }

            function T() {
                return w(), wt
            }

            function P() {
                Pe.getAnimationLayer().stopAnimating(), Pe.getAnimationLayer().clearAnimations(), Pe.show(!1), Pe.clear(), $()
            }

            function C(e, t) {
                Ce.resetAnimations();
                for (var n = 0; n < e.length; n++) {
                    var r = e[n],
                        o = St[r].toLowerCase();
                    switch (o) {
                        case "s18":
                            o = "s01";
                            break;
                        case "s19":
                            o = "s02";
                            break;
                        case "s20":
                            o = "s03";
                            break;
                        case "s21":
                            o = "s04";
                            break;
                        case "s22":
                            o = "s05";
                            break;
                        case "s23":
                            o = "s06";
                            break;
                        case "s24":
                            o = "s07";
                            break;
                        case "s25":
                            o = "s08";
                            break;
                        case "s26":
                            o = "s09";
                            break;
                        case "s27":
                            o = "s10";
                            break;
                        case "w03":
                            o = "w01";
                            break;
                        case "w04":
                            o = "w02"
                    }
                    var a = "BaseGame",
                        s = {},
                        l = 0,
                        u = {
                            loop: !1
                        };
                    switch (t) {
                        case "b01Lands":
                            a = "Lands", s.x = et, s.y = et, l = 1, u = {
                                loop: !1
                            };
                            break;
                        case "b01BaseGame":
                        case "b01BaseLow":
                            a = "BaseGame", s.x = et, s.y = et, l = 0, u = {
                                loop: !1
                            };
                            break;
                        case "high_symbol":
                        case "low_wildSymbol":
                            a = De, s.x = et, s.y = et, l = 0, u = {
                                loop: !0
                            }
                    }
                    var c = o + a;
                    "b01" !== o || pt || (c = "b01BaseLow");
                    var d = i.getSpriteSheetAnimationFrameArray(c);
                    "low_wildSymbol" === t ? Ce.setCellAnimation(r, d[18], .25, l, s, u) : Ce.setCellAnimation(r, d, .25, l, s, u)
                }
                Ce.startAnimating()
            }

            function k(e) {
                e.setLineCap("round"), e.setBoxMode("square"), "STD" === Oe && ("INT" !== Ee ? "mobile" === ke ? e.setLineThickness(3, 8) : e.setLineThickness(5, 12) : e.setLineThickness(3, 9))
            }

            function O(e, t) {
                if (Pe.clear(), k(Pe), wt && wt.length > 0) {
                    if (++Tt > 0 && 0 === (Tt %= wt.length) && (he(t), l.currentAutoSpinState())) return void q();
                    Pe.show(!0), Ue = n.getTimer().setTimeout(P, Fe);
                    var r;
                    if (Tt > -1) switch (wt[Tt].mode) {
                        case "spag":
                            Ae < 1 * s.calculateTotalBet() && Ce.resetAnimations(), Ce.stopAnimating(), $(), Pe.drawSpaghetti(wt[Tt].lines);
                            break;
                        case "line":
                            r = wt[Tt].boxLocations;
                            for (var i = Number(wt[Tt].line), o = 0; o < r.length; o++) {
                                var a = r[o];
                                "w" === St[a].toLowerCase().slice(0, 1) && Ae < 1 * s.calculateTotalBet() && C(r, "low_wildSymbol")
                            }
                            M(i, Pe), Ae >= 1 * s.calculateTotalBet() && C(r, "high_symbol"), bt = gt.rgPresentation, Ae < 1 * s.calculateTotalBet() && bt && $();
                            break;
                        case "jack":
                            r = wt[Tt].boxLocations, A(r, Pe), ht && U(r)
                    }
                }
            }

            function E() {
                for (var e in ct) a.stopChannel(ct[e])
            }

            function A(e, t) {
                $(), t.drawBoxesFromLocationsWithWinBox(e, "0XFF2300", "0X000000")
            }

            function M(e, t) {
                $();
                var r = {};
                "mobile" === ke ? r = {
                    height: 33,
                    fontSize: "22px"
                } : "tablet" === ke ? r = {
                    height: 50,
                    fontSize: "33px"
                } : "desktop" === ke && (r = {
                    height: 50,
                    fontSize: "33px"
                });
                var i = I(e),
                    a = i.Cell[i.Cell.length - 1]["@name"],
                    l = Ge[De + ".Lines"].totalPay["Line " + e] * s.getCurDenomamount(),
                    u = {
                        location: a,
                        height: r.height,
                        backgroundColor: "0X000000",
                        opacity: "0.7",
                        textStyle: {
                            fontWeight: "bold",
                            fontFamily: "Futura Cdnsd BoldEuro LocCur",
                            fontSize: r.fontSize,
                            fill: "#FFFFFF",
                            align: "center",
                            lineHeight: "16"
                        },
                        displayText: o.formatBalance(l)
                    };
                R(u), l > 0 ? t.drawHighlightOutcomeWithWinBox(i, u) : t.drawHighlightOutcome(i), n.lib["_pip" + (e - 1)].gotoAndPlay("pips" + (e - 1), .1, !0)
            }

            function R(t) {
                for (var r = parseInt(t.textStyle.fontSize), i = .85 * Number(n.lib._reels_0_0._currentStyle._width), o = new e.Text(t.displayText, t.textStyle), a = Number(o.width); a > i && !((r = parseInt(r) - 1) < 3);) t.textStyle.fontSize = r, o = new e.Text(t.displayText, t.textStyle), a = Number(o.width)
            }

            function I(e) {
                var t;
                Array.isArray(Le.HighlightOutcome) ? (t = "FreeSpin" === De ? Le.HighlightOutcome.filter(function(e) {
                    return "FreeSpin.Lines" === e["@name"]
                }) : Le.HighlightOutcome.filter(function(e) {
                    return "BaseGame.Lines" === e["@name"]
                }), t = t[0]) : t = Le.HighlightOutcome;
                var n = [],
                    r = t["@name"];
                if (0 === r.indexOf(De) && r.match(/Lines$/)) {
                    n = t.Highlight, Array.isArray(n) || (n = [n]);
                    for (var i = 0; i < n.length; i++)
                        if (n[i]["@name"] === "Line " + e) return n[i]
                }
            }

            function B(e) {
                "FreeSpin" === e ? (Xe.visible = !1, Je.visible = !0) : (Xe.visible = !0, Je.visible = !1)
            }

            function L(e) {
                Ge = {}, je = {};
                for (var t, n = e.response.PrizeOutcome, r = 0, i = 0, o = 0; o < n.length; o++)
                    if (-1 !== n[o]["@name"].indexOf("Lines") && n[o].Prize)
                        if (Array.isArray(n[o].Prize))
                            for (var a = 0; a < n[o].Prize.length; a++) {
                                var l = n[o].Prize[a]["@payName"];
                                "3 b01" !== l && "4 b01" !== l && "5 b01" !== l || r++
                            } else {
                                var l = n[o].Prize["@payName"];
                                "3 b01" !== l && "4 b01" !== l && "5 b01" !== l || r++
                            }
                if ("BaseGame" !== e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (t = "FreeSpin" === e.response.OutcomeDetail.Stage ? "FreeSpin" : "BuoyBonus", Number(r) > 0)) {
                    i = s.getTotalPayByStage(e, t) / r
                }
                for (var u = 0; u < n.length; u++) {
                    var c, d, h = n[u]["@name"];
                    if (-1 !== h.indexOf("Lines"))
                        if (n[u].Prize) {
                            if (c = {
                                    totalPay: {}
                                }, d = {
                                    symbolTypeName: {}
                                }, Array.isArray(n[u].Prize))
                                for (var p = 0; p < n[u].Prize.length; p++) c.totalPay[n[u].Prize[p]["@name"]] = Number(n[u].Prize[p]["@totalPay"]), d.symbolTypeName[n[u].Prize[p]["@name"]] = n[u].Prize[p]["@payName"], mt && ("3 b01" !== d.symbolTypeName[n[u].Prize[p]["@name"]] && "4 b01" !== d.symbolTypeName[n[u].Prize[p]["@name"]] && "5 b01" !== d.symbolTypeName[n[u].Prize[p]["@name"]] || (c.totalPay[n[u].Prize[p]["@name"]] = i));
                            else c.totalPay[n[u].Prize["@name"]] = Number(n[u].Prize["@totalPay"]), d.symbolTypeName[n[u].Prize["@name"]] = n[u].Prize["@payName"], mt && ("3 b01" !== d.symbolTypeName[n[u].Prize["@name"]] && "4 b01" !== d.symbolTypeName[n[u].Prize["@name"]] && "5 b01" !== d.symbolTypeName[n[u].Prize["@name"]] || (c.totalPay[n[u].Prize["@name"]] = i));
                            Ge[h] = c, je[h] = d
                        } else c = {
                            totalPay: 0
                        }, d = {
                            symbolTypeName: null
                        }, Ge[h] = c, je[h] = d
                }
            }

            function D(e, r) {
                if (vt = [], xt = [], Ne = e, st = !1, "FreeSpin" === r.response.OutcomeDetail.Stage && "BaseGame" === r.response.OutcomeDetail.NextStage && x(), w(), "BaseGame" === De) {
                    if (0 === wt.length) return
                } else if ("FreeSpin" === De && ("true" === r.response.FreeSpinOutcome.IncrementTriggered && (st = !0), 0 === s.getPerWinInBonusGame(r) || "true" === r.response.AwardCapOutcome.AwardCapExceeded)) return he(r), void(st && t.publish("showRetriggerDialogFreeSpin", r));
                Pt && n.getTimer().clearTimeout(Pt);
                for (var i = 0; i < wt.length; i++) "line" !== wt[i].mode && "jack" !== wt[i].mode || (vt = vt.concat(wt[i].boxLocations));
                for (var o = 0; o < vt.length; o++) xt.indexOf(vt[o]) < 0 && xt.push(vt[o]);
                var l = J(St, !0);
                xt.length > 0 && ("BaseGame" === r.response.OutcomeDetail.Stage && "BonusPicker" === r.response.OutcomeDetail.NextStage ? (pt = !0, ot ? (W(r), n.getTimer().setTimeout(function() {
                    a.play("Bonus", 4, !1), C(l, "b01BaseGame")
                }, 2900)) : (a.play("Bonus", 4, !1), C(l, "b01BaseGame"))) : "FreeSpin" === r.response.OutcomeDetail.Stage && "BaseGame" === r.response.OutcomeDetail.NextStage && 0 === s.getAllLinePayOnBaseGame(r) || ("BaseGame" !== r.response.OutcomeDetail.Stage && "BaseGame" === r.response.OutcomeDetail.NextStage && (pt = !1), st ? (ft = 3e3, t.publish("showRetriggerDialogFreeSpin", r)) : ft = 0, n.getTimer().setTimeout(function() {
                    if (Y(xt, r), G(r), Ae >= 1 * s.calculateTotalBet()) {
                        if ("onEnterNextStage" === r.state && "FreeSpin" === r.response.OutcomeDetail.Stage && "BaseGame" === r.response.OutcomeDetail.NextStage) return;
                        F()
                    }
                }, ft)))
            }

            function F() {
                var e, t, n = {};
                for (var r in wt)
                    if ("line" === wt[r].mode) {
                        if (function(e) {
                                for (var t = !0, n = 0; n < e.length; n++) {
                                    var r = St[e[n]];
                                    if (!("s" === r.charAt(0) && Number(r.substring(1)) >= 5 && Number(r.substring(1)) <= 10)) {
                                        t = !1;
                                        break
                                    }
                                }
                                return t
                            }(wt[r].boxLocations)) continue;
                        var i = Number(wt[r].line);
                        e = Ge[De + ".Lines"].totalPay["Line " + i] * s.getCurDenomamount(), n[r] = e
                    }
                var o = [];
                if (n) {
                    var l = function(e) {
                            var t = 0,
                                n = [];
                            for (var r in e) e[r] >= t && (t = e[r], n.push(r));
                            return n
                        }(n),
                        u = [];
                    l.forEach(function(e) {
                        u = u.concat(wt[e].boxLocations)
                    });
                    for (var c = 0; c < u.length; c++) {
                        var d = St[u[c]]; - 1 === o.indexOf(d) && o.push(d)
                    }
                }
                var h;
                (o.includes("w02") || o.includes("w04") || o.includes("w03") || o.includes("w01")) && (t = "Wild_v4"), o.includes("s01") || o.includes("s11") || o.includes("s12") || o.includes("s18") ? h = "Bouy" : o.includes("s02") || o.includes("s13") || o.includes("s19") ? h = "Boat" : o.includes("s03") ? h = "Lighthouse" : (o.includes("s04") || o.includes("s16") || o.includes("s17") || o.includes("s21")) && (h = "House");
                var p;
                t && h ? p = Math.floor(2 * Math.random()) > 0 ? t : h : t ? p = t : h && (p = h), a.play(p, ct[p], !1)
            }

            function N() {
                bt = gt.rgPresentation, _t = "FreeSpin" === Le.OutcomeDetail.Stage && "BaseGame" === Le.OutcomeDetail.NextStage || "AcceptReject" === Le.OutcomeDetail.Stage && "BaseGame" === Le.OutcomeDetail.NextStage, Be = _t && !yt ? gt.isTotalWinGreaterThanStake(Le) : gt.isPerWinGreaterThanStake(Le)
            }

            function G(e) {
                N(), "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage || ("BaseGame" === De ? s.getAllLinePayOnBaseGame(e) > 0 ? (t.publish("rollUpWinValueStart", e), n.getTimer().setTimeout(function() {
                    !bt || Be ? t.publish("showButton", "_skipButton") : t.publish("showButton", "_spinButton")
                }, 300)) : t.publish("nextState") : "FreeSpin" === De && (s.getPerWinInBonusGame(e) > 0 ? (t.publish("rollUpBonusWinValueStart", e), !bt || Be ? t.publish("showButton", "_skipButton") : t.publish("showButton", "_spinButton")) : wt.length > 0 ? n.getTimer().setTimeout(function() {
                    t.publish("nextState")
                }, tt) : t.publish("nextState")))
            }

            function j() {
                return ot
            }

            function U(e) {
                for (var t = 0; t < e.length; t++) {
                    var r = "_reelsShade2_" + e[t].substring(5, 6) + "_" + e[t].substring(3, 4);
                    n.lib[r].gotoAndPlay("jackpotAnim", .2)
                }
            }

            function W(e) {
                for (var t = [], r = [], i = Ie.Highlight.Cell, o = 0; o < i.length; o++) {
                    var s = "_reelsShade2_" + i[o]["@name"].slice(5, 6) + "_" + i[o]["@name"].slice(3, 4);
                    t.push(s), r.push(i[o]["@name"].slice(3, 4))
                }
                H(t, e), "true" !== e.response.AwardCapOutcome.AwardCapExceeded && (a.play("HandPayMusic", 7), at = n.getTimer().setTimeout(function() {
                    a.fadeOut(7, 1e3)
                }, 1e4))
            }

            function H(e, t) {
                for (var r = t, i = e, o = 0; o < e.length; o++) {
                    switch (e[o].slice(e[o].length - 1)) {
                        case "0":
                            it[0] = !0;
                            break;
                        case "1":
                            it[1] = !0;
                            break;
                        case "2":
                            it[2] = !0;
                            break;
                        case "3":
                            it[3] = !0;
                            break;
                        case "4":
                            it[4] = !0
                    }
                }
                n.lib._reelFrameLayer.show(!1);
                for (var a = 0; a < it.length; a++) it[a] && n.lib["_jackpotAnimFullAnim_" + a].gotoAndPlay("jackpotAnimFull", .2, !1);
                if ("true" === r.response.AwardCapOutcome.AwardCapExceeded) return void V();
                var s, u, c, d = it.filter(function(e) {
                    return !0 === e
                });
                3 === d.length ? (s = "_jackpotMeterRight_Anim", u = "_jackpotMeterRightAnim", c = "_jackpotMeterRightValue_Anim") : 4 === d.length ? (s = "_jackpotMeterLeft_Anim", u = "_jackpotMeterLeftAnim", c = "_jackpotMeterLeftValue_Anim") : 5 === d.length && (s = "_jackpotMeterMiddle_Anim", u = "_jackpotMeterMiddleAnim", c = "_jackpotMeterMiddleValue_Anim"), s && (n.animMap[s]._onComplete = function() {
                    for (var e = 0; e < i.length; e++) n.lib[i[e]].gotoAndPlay("jackpotAnim", .2, !0);
                    V(), "BaseGame" === t.response.OutcomeDetail.Stage && "BonusPicker" === t.response.OutcomeDetail.NextStage || (l.currentAutoSpinState() ? D(!1, r) : D(!0, r))
                }, z(), n.animMap[s].play(1), n.animMap[c].play(), n.getTimer().setTimeout(function() {
                    n.lib[u].onComplete = function() {
                        n.lib[u].show(!1)
                    }, n.lib[u].show(!0), n.lib[u].gotoAndPlay("topMeter2Anim", .6, !1)
                }, 900))
            }

            function z() {
                for (var e = 0; e < it.length; e++) it[e] && n.lib["_jackpotSignAnim_" + e].setImage("jackpotSign_0000")
            }

            function V() {
                for (var e = 0; e < it.length; e++) it[e] && n.lib["_jackpotSignAnim_" + e].gotoAndPlay("jackpotSign", .2, !0)
            }

            function X() {
                for (var e in n.lib._reelShadeSetBG2.sprites) n.lib._reelShadeSetBG2.sprites[e].stopPlay(), n.lib._reelShadeSetBG2.sprites[e].setImage("symbolMarkEmpty");
                for (var t = 0; t < it.length; t++) it[t] && (n.lib["_jackpotSignAnim_" + t].stopPlay(), n.lib["_jackpotSignAnim_" + t].setImage("jackpotSign_Non"), n.lib["_jackpotAnimFullAnim_" + t].setImage("jackpotAnimFull_Non"));
                n.lib._reelFrameLayer.show(!0)
            }

            function J(e, t) {
                var n = [];
                for (var r in e) "b01" === e[r] && (t ? xt.indexOf(r) >= 0 && n.push(r) : n.push(r));
                return n
            }

            function Y(e, t) {
                O(e, t), Pt = n.getTimer().setTimeout(function() {
                    Y(e, t)
                }, Fe)
            }

            function q() {
                Pe.getAnimationLayer().stopAnimating(), Pe.getAnimationLayer().clearAnimations(), Pe.clear(), Pe.show(!1), wt = null, Tt = -1, n.getTimer().clearTimeout(Ue), n.getTimer().clearTimeout(Pt), Ce.stopAnimating(), $()
            }

            function $() {
                for (var e = Object.keys(n.lib._pips.sprites), t = 0; t < e.length; t++) void 0 !== n.lib[e[t]].pixiContainer.$sprite.playing && !0 === n.lib[e[t]].pixiContainer.$sprite.playing && n.lib[e[t]].stopPlay(), n.lib[e[t]].setImage("pips" + t + "_0001")
            }

            function K(e) {
                ht = !1, X(), "BaseGame" !== e.response.OutcomeDetail.NextStage && "FreeSpin" !== e.response.OutcomeDetail.NextStage || (q(), qe = !1, $e = !1, Ke = !1, Qe = !1, Ae = 0, E(), at && (n.getTimer().clearTimeout(at), at = null, a.stopChannel(7)))
            }

            function Q(e) {
                "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && D(!1, e)
            }

            function Z(e) {
                Le = e.response, Pe = y(), Ce = v()
            }

            function ee(e) {
                if (Re = e, Le = e.response, De = Le.OutcomeDetail.Stage, rt = [], it = [!1, !1, !1, !1, !1], ot = !1, Ie = void 0, mt = !1, "BaseGame" !== Le.OutcomeDetail.Stage && "BaseGame" === Le.OutcomeDetail.NextStage && (mt = !0), "BonusPicker" !== De && "CountryPicker" !== De && "BuoyBonus" !== De && "SubPicker2" !== De && "SubPicker3" !== De && "SubPicker1" !== De && "AcceptReject" !== De && (L(e), x()), "BaseGame" === e.response.OutcomeDetail.Stage || "FreeSpin" === e.response.OutcomeDetail.Stage) {
                    Ae = "true" === e.response.AwardCapOutcome.AwardCapExceeded ? Te : "FreeSpin" === De ? s.getPerWinInBonusGame(e) : s.getAllLinePayOnBaseGame(e);
                    for (var t, n = 0; n < Le.PopulationOutcome.length; n++)
                        if (Le.PopulationOutcome[n]["@name"] === De + ".JackpotReels") {
                            t = Le.PopulationOutcome[n];
                            break
                        }
                    if (t && t.Entry)
                        for (var r = t.Entry, i = 0; i < r.length; i++)
                            for (var o = 0; o < r[i].Cell.length; o++) "j01" === r[i].Cell[o]["#text"] && rt.push(r[i].Cell[o]["@name"]);
                    for (var a = 0; a < Le.HighlightOutcome.length; a++)
                        if (Le.HighlightOutcome[a]["@name"] === De + ".Jackpot") {
                            Ie = Le.HighlightOutcome[a], Ie && Ie.Highlight && (ot = !0);
                            break
                        }
                }
            }

            function te(e) {
                re(e), ot ? W(e) : l.currentAutoSpinState() ? D(!1, e) : D(!0, e)
            }

            function ne(e) {
                yt = !0, "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && D(!1, e), "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && D(!0, e)
            }

            function re(e) {
                if ("true" === e.response.AwardCapOutcome.AwardCapExceeded) Me = "maxwin";
                else if ("BaseGame" === e.response.OutcomeDetail.NextStage) {
                    var t = s.getCurBasePay(e),
                        n = s.calculateTotalBet();
                    Me = t / n >= 50 ? "bigwin" : t <= 0 ? "nowin" : "win"
                }
            }

            function ie() {
                t.publish("nextState")
            }

            function oe(e) {
                yt = !1, De = e.response.OutcomeDetail.NextStage, "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && ot && (X(), t.publish("stopReelsShade3Anim")), ("BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage || "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage) && (B(e.response.OutcomeDetail.NextStage), Pe = y(), Ce = v()), "BaseGame" !== e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (re(e), Ae = s.getAllLinePayOnBaseGame(e), ht = !0, L(e), x())
            }

            function ae(e) {
                Le = e.response, De = e.response.OutcomeDetail.NextStage, ("BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage || "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage) && (B(e.response.OutcomeDetail.NextStage), Pe = y(), Ce = v()), "BonusPicker" !== De && "CountryPicker" !== De && "BuoyBonus" !== De && "SubPicker2" !== De && "SubPicker3" !== De && "SubPicker1" !== De && "AcceptReject" !== De && (L(e), x())
            }

            function se(e) {
                e && "_winValue" === e.spriteName && (qe = !0), e && "_bonusWinValue" === e.spriteName && ($e = !0)
            }

            function le() {
                return Ke
            }

            function ue() {
                return Qe
            }

            function ce() {
                return qe
            }

            function de() {
                return $e
            }

            function he(e) {
                "BaseGame" === De && l.currentAutoSpinState() && (Ke = !0, qe && (n.lib._bigWinLayer.pixiContainer.visible ? (t.publish("showButton", "_inactiveButton"), n.getTimer().setTimeout(function() {
                    t.publish("nextState")
                }, 300)) : (t.publish("showButton", "_inactiveButton"), t.publish("nextState"))), q()), "FreeSpin" === De && (Qe = !0, s.getPerWinInBonusGame(e) > 0 && "true" !== e.response.AwardCapOutcome.AwardCapExceeded ? $e && ("FreeSpin" === e.response.OutcomeDetail.NextStage && (q(), t.publish("showButton", "_inactiveButton"), ut = !1, st ? lt ? t.publish("nextState") : ut = !0 : t.publish("nextState")), "BaseGame" === e.response.OutcomeDetail.NextStage && (Ye = !0, q(), t.publish("showButton", "_inactiveButton"), "true" === e.response.AwardCapOutcome.AwardCapExceeded ? n.getTimer().setTimeout(function() {
                    t.publish("showMaxAwardDialog", {
                        maxWinNum: Te,
                        stage: De,
                        data: e
                    }), n.lib._bonusWinValue.setText(o.formatBalance(Te))
                }, 2e3) : n.getTimer().setTimeout(function() {
                    t.publish("showFreeSpinResultDialog", e)
                }, 2e3))) : ("FreeSpin" === e.response.OutcomeDetail.NextStage && (t.publish("showButton", "_inactiveButton"), st ? n.getTimer().setTimeout(function() {
                    t.publish("nextState")
                }, tt) : n.getTimer().setTimeout(function() {
                    t.publish("nextState")
                }, nt)), "BaseGame" === e.response.OutcomeDetail.NextStage && (Ye = !0, t.publish("showButton", "_inactiveButton"), "true" === e.response.AwardCapOutcome.AwardCapExceeded ? n.getTimer().setTimeout(function() {
                    t.publish("showMaxAwardDialog", {
                        maxWinNum: Te,
                        stage: De,
                        data: e
                    }), n.lib._bonusWinValue.setText(o.formatBalance(Te))
                }, 2e3) : n.getTimer().setTimeout(function() {
                    t.publish("showFreeSpinResultDialog", e)
                }, 2e3))))
            }

            function pe() {
                Ye = !0, q(), t.publish("showButton", "_inactiveButton"), "true" === Re.response.AwardCapOutcome.AwardCapExceeded ? n.getTimer().setTimeout(function() {
                    t.publish("showMaxAwardDialog", {
                        maxWinNum: Te,
                        stage: De,
                        data: Re
                    }), n.lib._bonusWinValue.setText(o.formatBalance(Te))
                }, 2e3) : n.getTimer().setTimeout(function() {
                    t.publish("showFreeSpinResultDialog", Re)
                }, 2e3)
            }

            function fe() {
                X(), a.stopChannel(7), E()
            }

            function me() {
                q(), fe()
            }

            function ge(e) {
                Te = e.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap, n.lib._jackpotMeterLeftAnim.show(!1), n.lib._jackpotMeterMiddleAnim.show(!1), n.lib._jackpotMeterRightAnim.show(!1)
            }

            function be() {
                return Me
            }

            function _e() {
                return st
            }

            function ye() {
                lt = !0, ut && t.publish("nextState")
            }

            function ve() {
                Ze = !0
            }

            function xe() {
                Ze = !1
            }
            var Se, we, Te, Pe, Ce, ke, Oe, Ee, Ae, Me, Re, Ie, Be, Le = null,
                De = null,
                Fe = 2400,
                Ne = !0,
                Ge = {},
                je = {},
                Ue = null,
                We = null,
                He = null,
                ze = null,
                Ve = null,
                Xe = null,
                Je = null,
                Ye = !1,
                qe = !1,
                $e = !1,
                Ke = !1,
                Qe = !1,
                Ze = !1,
                et = 0,
                tt = 2500,
                nt = 500,
                rt = [],
                it = [!1, !1, !1, !1, !1],
                ot = !1,
                at = null,
                st = !1,
                lt = !1,
                ut = !1,
                ct = {
                    Wild_v4: 8,
                    Wild_v3: 8,
                    Wild: 17,
                    Bouy: 18,
                    Boat: 19,
                    Lighthouse: 20,
                    House: 21
                },
                dt = !1,
                ht = !1,
                pt = !1,
                ft = 0,
                mt = !1,
                gt = new h,
                bt = !1,
                _t = !1,
                yt = !1;
            d.addArrayInclude();
            var vt, xt, St = null,
                wt = null,
                Tt = -1,
                Pt = null;
            return t.subscribe("onResolveStage", ee), t.subscribe("onInProgressStage", Q), t.subscribe("onBeforeRequest", K), t.subscribe("onExitStage", ne), t.subscribe("onEnterNextStage", oe), t.subscribe("onBeforeShowStage", Z), t.subscribe("onWinilneAnimComplete", he), t.subscribe("onBetControlButtonClicked", me), t.subscribe("platformMsg/ClientService/Game.Init", ge), t.subscribe("platformMsg/Kernel/System.Init", p), t.subscribe("onEndGame", ie), t.subscribe("onStartGameInProgressNextStage", ae), t.subscribe("RollUp.Stopped", se), t.subscribe("beginLines", te), t.subscribe("showFreeSpinResult", pe), t.subscribe("freeSpinRetrigerDialogShowComplete", ye), t.subscribe("stopSymbolAudio", E), t.subscribe("showBonusResultDialog", ve), t.subscribe("showFreeSpinResultDialog", xe), {
                init: b,
                start: D,
                stop: q,
                setWinlineStyle: k,
                getCurWinline: y,
                getFlagWinlineComplete: le,
                getFlagWinlineCompleteBonus: ue,
                getFlagWinValueRollStop: ce,
                getFlagWinValueRollStopBonus: de,
                getLocationPopulationMapping: S,
                _getLocationPopulationMappingFromOutcome: x,
                getScrappyWinSequence: T,
                getWinType: be,
                getIfJackpot: j,
                getRetigerF: _e
            }
        }), define("game/BigWinController", ["com/pixijs/pixi", "skbJet/component/gladPixiRenderer/Sprite", "game/PixiCoinShower", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "game/BetController", "game/RollUp", "game/BackgroundController", "game/WinlineAnimController"], function(e, t, n, r, i, o, a, s, l, u, c, d) {
            function h(e) {
                M = e.serverConfig.presenttype, R = e.serverConfig.channel, A = e.serverConfig.paramGame.assetPack
            }

            function p(r) {
                i.lib._bigWinLayer.show(!1), x(), k = r.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap;
                for (var o = [], a = 0; a < t.getSpriteSheetAnimationFrameArray("coinAnim").length; a++) o.push(e.Texture.fromFrame(t.getSpriteSheetAnimationFrameArray("coinAnim")[a] + ".png"));
                I = new n({
                    parentContain: i.lib._bigWinCoinsContainer.pixiContainer,
                    frames: o,
                    ticker: i.getTicker(),
                    visibleRange: [0, i.lib._bigWinDim._currentStyle._width, 0, i.lib._bigWinDim._currentStyle._height],
                    initScale: .2
                })
            }

            function f(e) {
                if ("true" === e.response.AwardCapOutcome.AwardCapExceeded) O = "maxwin";
                else if ("BaseGame" === e.response.OutcomeDetail.NextStage) {
                    var t = l.getCurBasePay(e),
                        n = l.calculateTotalBet();
                    O = t / n >= 50 ? "bigwin" : t <= 0 ? "nowin" : "win"
                }
            }

            function m(e) {
                i.lib._bigWinValue.setText("");
                var t = e;
                i.lib._bigWinLayer.show(!0), i.lib._bigWinImg.show(!1), i.lib._bigWinImgFlare0.show(!1), i.lib._bigWinImgFlare1.show(!1), i.lib._bigWinImgLarryBG.updateCurrentStyle({
                    _opacity: 0
                }), i.animMap._bigWinShow._onComplete = function() {
                    g(), I.start()
                }, o.play("HandPayMusic", 7, !0), i.animMap._bigWinMeter_AnimIn._onComplete = function() {
                    i.lib._bigWinImg.show(!0), i.animMap._bigWinShow.play()
                }, i.animMap._bigWinMeter_AnimIn.play(), i.lib._winMeter.show(!1), L.start(0, t)
            }

            function g() {
                i.lib._bigWinImgFlare0.show(!0), i.lib._bigWinImgFlare1.show(!0), i.animMap._bigWinImgFlare0Anim.play(1e3), i.animMap._bigWinImgFlare1Anim.play(1e3), i.lib._bigWinImgLarry.gotoAndPlay("larryAnim", .2, !0), b(), D = i.getTimer().setInterval(function() {
                    b()
                }, 3100)
            }

            function b() {
                i.animMap._bigWinTextAnim.play(1), i.animMap._star00Anim.play(1), i.getTimer().setTimeout(function() {
                    i.animMap._bigWinImgFlare0Anim.isPlaying() && i.animMap._star01Anim.play(1)
                }, 200), i.getTimer().setTimeout(function() {
                    i.animMap._bigWinImgFlare0Anim.isPlaying() && i.animMap._star02Anim.play(1)
                }, 400), i.getTimer().setTimeout(function() {
                    i.animMap._bigWinImgFlare0Anim.isPlaying() && i.animMap._star03Anim.play(1)
                }, 600), i.getTimer().setTimeout(function() {
                    i.animMap._bigWinImgFlare0Anim.isPlaying() && i.animMap._star04Anim.play(1)
                }, 800)
            }

            function _() {
                D && i.getTimer().clearInterval(D), i.animMap._star00Anim.isPlaying() && i.animMap._star00Anim.stop(), i.animMap._star01Anim.isPlaying() && i.animMap._star01Anim.stop(), i.animMap._star02Anim.isPlaying() && i.animMap._star02Anim.stop(), i.animMap._star03Anim.isPlaying() && i.animMap._star03Anim.stop(), i.animMap._star04Anim.isPlaying() && i.animMap._star04Anim.stop(), i.animMap._star00Anim.updateStyleToTime(0), i.animMap._star01Anim.updateStyleToTime(0), i.animMap._star02Anim.updateStyleToTime(0), i.animMap._star03Anim.updateStyleToTime(0), i.animMap._star04Anim.updateStyleToTime(0)
            }

            function y() {
                _(), i.lib._bigWinImgFlare0.show(!1), i.lib._bigWinImgFlare1.show(!1), i.animMap._bigWinImgFlare0Anim.stop(), i.animMap._bigWinImgFlare1Anim.stop(), i.animMap._bigWinShow.stop(), i.animMap._bigWinMeter_AnimIn.stop(), i.lib._bigWinImgLarry.stopPlay()
            }

            function v() {
                y(), I.stop(), i.animMap._bigWinMeter_AnimOut._onComplete = function() {
                    i.lib._winMeter.show(!0), i.lib._bigWinLayer.show(!1)
                }, i.animMap._bigWinHide._onComplete = function() {
                    i.animMap._bigWinMeter_AnimOut.play(), i.lib._bigWinImg.show(!1), i.animMap._bigWinHide.updateStyleToTime(0)
                }, o.play("HandPayTerminator", 7, !1), i.animMap._bigWinHide.play()
            }

            function x() {
                var t = 1,
                    n = 1;
                "STD" === M && ("INT" !== R && "mobile" === A ? (t = 2 / 3, n = 2 / 3) : (t = 1, n = 1));
                var r = {
                        fontFamily: "cooperblackloccur",
                        fontSize: 60,
                        fontWeight: 500,
                        fill: "#FF00FF"
                    },
                    o = new e.Text;
                o.text = s.i18n.Game.bigWin, o.style = r;
                for (var l = i.lib._bigWinText.data._style._width, u = Number(r.fontSize); o.width > l && !(--u < 12);) o.style.fontSize = u;
                o.scale.x = t, o.scale.y = n, o.x = a.formatFloat((a.formatFloat(i.lib._bigWinText._currentStyle._width) - a.formatFloat(o.width)) / 2), o.y = a.formatFloat((a.formatFloat(i.lib._bigWinText._currentStyle._height) - a.formatFloat(o.height)) / 2), i.lib._bigWinText.setText(""), i.lib._bigWinText.pixiContainer.removeChildren(), i.lib._bigWinText.pixiContainer.addChild(o)
            }

            function S(e) {
                E = !1, f(e);
                var t = l.getCurBasePay(e);
                switch (O) {
                    case "nowin":
                        r.publish("nextState");
                        break;
                    case "win":
                        break;
                    case "bigwin":
                        d.getIfJackpot() || m(t);
                        break;
                    case "maxwin":
                        r.publish("showMaxAwardDialog", {
                            maxWinNum: k,
                            stage: e.nextStage,
                            data: e
                        }), i.lib._winValue.setText(a.formatBalance(k))
                }
            }

            function w() {
                E || ("bigwin" === O && v(), E = !0)
            }

            function T() {}

            function P(e) {
                B = e
            }

            function C() {
                return O
            }
            var k, O, E, A, M, R, I, B, L = new u("_bigWinValue"),
                D = null;
            return r.subscribe("platformMsg/Kernel/System.Init", h), r.subscribe("beginBig", S), r.subscribe("onResolveStage", P), r.subscribe("platformMsg/ClientService/Game.Init", p), r.subscribe("RollUp.Stopped", w), r.subscribe("onBetControlButtonClicked", T), {
                bigwinRollUp: L,
                getWinType: C
            }
        }), define("game/ActionButtonController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "game/BetController", "game/AutoSpinController", "game/BigWinController", "game/WinlineAnimController", "skbJet/componentCRDC/gladRenderer/gladButton", "game/AGCOHelper"], function(e, t, n, r, i, o, a, s, l, u, c, d) {
            function h(e) {
                L = e.serverConfig.paramGame.assetPack, "INT" !== e.serverConfig.channel && "MIN" !== e.serverConfig.presenttype && (N = !0)
            }

            function p(e) {
                F = !1;
                var t = new c(n.lib._spinButton, "spinButton", {
                    avoidMultiTouch: !0
                });
                t.click(function() {
                    M()
                }), t.enable(!0);
                var r = new c(n.lib._betControlButton ? n.lib._startButton : n.lib._startAnim, "startButton", {
                    avoidMultiTouch: !0
                });
                r.click(function() {
                    A()
                }), r.enable(!0);
                var i = new c(n.lib._skipButton, "skipButton", {
                    avoidMultiTouch: !0
                });
                i.click(function() {
                    O()
                }), i.enable(!0), I = e.GameLogicResponse.OutcomeDetail.NextStage
            }

            function f(e) {
                "sound" === e.option && (X = "1" === e.value)
            }

            function m(e) {
                V = !0, r.muteAll(!e || X), "BaseGame" === B.response.OutcomeDetail.Stage && "BaseGame" === B.response.OutcomeDetail.NextStage ? (r.play("Intro", 17, !1), D = n.getTimer().setTimeout(function() {
                    D = null, r.play("Intro_End", 17, !1)
                }, 9466)) : "FreeSpin" === B.response.OutcomeDetail.NextStage && "desktop" !== L && r.play("BonusGame_RockLobsterLoop", 4, !0)
            }

            function g(e) {
                U = e.response, B = e, "desktop" !== L && n.getTimer().setTimeout(function() {
                    r.muteAll(!0)
                }, 20), P("BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage ? "_inactiveButton" : "_spinButton"), n.lib._networkActivity.show(!1), G = a.getMaxCountSquareArray4Lines()
            }

            function b() {
                R(), r.stopChannel(17), W = !0, H = !0, P("_inactiveButton"), C()
            }

            function _(e) {
                B = e, U = e.response, k()
            }

            function y() {
                s.currentAutoSpinState() || P("_spinButton"), s.currentAutoSpinState() && "BaseGame" === I && ("nowin" === l.getWinType() ? n.getTimer().setTimeout(function() {
                    s.currentAutoSpinState() ? t.publish("nextState") : t.publish("autoCancelAndShowInfoButtons")
                }, 800) : "maxwin" === l.getWinType() ? (P("_spinButton"), z = !0, n.getTimer().setTimeout(function() {
                    z && (s.currentAutoSpinState() ? t.publish("nextState") : t.publish("autoCancelAndShowInfoButtons"))
                }, 3e3)) : u.getFlagWinlineComplete() && n.getTimer().setTimeout(function() {
                    s.currentAutoSpinState() ? t.publish("nextState") : t.publish("autoCancelAndShowInfoButtons")
                }, 800)), F = !1
            }

            function v(e) {
                "FreeSpin" !== e.response.OutcomeDetail.Stage || "FreeSpin" !== e.response.OutcomeDetail.NextStage && "BaseGame" !== e.response.OutcomeDetail.NextStage || (F = !1)
            }

            function x(e) {
                I = e.response.OutcomeDetail.NextStage, "BaseGame" !== e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (H = !0)
            }

            function S(e) {
                B = e, I = e.response.OutcomeDetail.NextStage, "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage ? (P("_startButton"), V && r.play("BonusGame_RockLobsterLoop", 4, !0)) : "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && (P("_startButton"), V && r.play("BonusGame_RockLobsterLoop", 4, !0))
            }

            function w() {
                P("_inactiveButton"), k(), t.publish("nextState")
            }

            function T(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && P("_spinButton"), "FreeSpin" === e.response.OutcomeDetail.NextStage && (P("_startButton"), r.play("BonusGame_RockLobsterLoop", 4, !0)), F = !1
            }

            function P(e) {
                e && n.lib._actionButtonSet.show(!0);
                var t = n.lib._actionButtonSet.sprites;
                for (var r in t) t[r].show(r === e)
            }

            function C() {
                n.lib._networkActivity.show(!0), n.lib._networkActivity.gotoAndPlay("networkActivity", .2, !0)
            }

            function k() {
                n.lib._networkActivity.stopPlay(), n.lib._networkActivity.show(!1)
            }

            function O() {
                H && (H = !1, r.play("SpinButton_rev1", 2, !1), "BaseGame" === I && l.bigwinRollUp.stop(), "FreeSpin" === I && (u.getFlagWinValueRollStopBonus() ? "BaseGame" === B.response.OutcomeDetail.NextStage && (t.publish("stopSymbolAudio"), t.publish("onWinilneAnimComplete", B)) : (P("_inactiveButton"), t.publish("rollUpBonusWinValueStop"))), "BaseGame" === I && (s.currentAutoSpinState(), u.getFlagWinValueRollStop() || (P("_inactiveButton"), t.publish("rollUpWinValueStop"))))
            }

            function E() {
                H = !0
            }

            function A() {
                W && (W = !1, r.play("SpinButton_rev1", 2, !1), P("_inactiveButton"), B && "BaseGame" === B.response.OutcomeDetail.Stage && B.response.OutcomeDetail.NextStage, t.publish("nextState"))
            }

            function M() {
                var e = j.rgPresentation,
                    i = j.isPerWinGreaterThanStake(U);
                e && !i && "FreeSpin" === I && "BaseGame" === B.response.OutcomeDetail.NextStage && (t.publish("onWinilneAnimComplete", B), t.publish("stopSymbolAudio")), r.stopChannel(17), F || (R(), z = !1, N && (N = !1, t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.Fullscreen"
                })), n.lib._betPrompt && n.lib._betPrompt.show(!1), n.lib._betControlDialog && n.lib._betControlDialog.show(!1), t.publish("nextState"), r.play("SpinButton_rev1", 2, !1), F = !0)
            }

            function R() {
                D && (n.getTimer().clearTimeout(D), D = null)
            }
            var I, B, L, D, F = !0,
                N = !1,
                G = 40,
                j = new d,
                U = null,
                W = !0,
                H = !0,
                z = !0,
                V = !1,
                X = !1;
            return t.subscribe("platformMsg/Kernel/System.Init", h), t.subscribe("platformMsg/ClientService/Game.Init", p), t.subscribe("onBeforeShowStage", g),
                t.subscribe("audioPlayer.playerSelectedWhenGameLaunch", m), t.subscribe("onBeforeRequest", b), t.subscribe("onResolveStage", _), t.subscribe("onBeginNewGame", y), t.subscribe("onInProgressStage", v), t.subscribe("onEnterNextStage", x), t.subscribe("onStartGameInProgressStage", S), t.subscribe("onAbortNextStage", w), t.subscribe("onResetNextStage", T), t.subscribe("showButton", P), t.subscribe("setSkipButtonCanClick", E), t.subscribe("platformMsg/ConsoleService/Game.Control", f), {}
        }), define("game/Sub1", ["com/pixijs/pixi", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/BetController", "skbJet/component/currencyHelper/currencyHelper", "game/RollUp", "skbJet/componentCRDC/gladRenderer/gladButton", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer"], function(e, t, n, r, i, o, a, s, l) {
            function u(e) {
                ue = e.serverConfig.paramGame.assetPack
            }

            function c(e) {
                r.lib._mainePickerBG.show(!1), r.lib._maineBoat.show(!1), r.lib._maineTips.show(!1), r.lib._choosePlaque.show(!1), r.lib._mainePickerMeter.show(!1), r.lib._maineCellNetwork.show(!1), r.lib._maineTips2.show(!1), r.lib._fishWinValue.autoFontFitText = !0, r.lib._fishWinValue.pixiContainer.$text.style.padding = 20, r.lib._mainePickerMeterPickLableUp.autoFontFitText = !0, r.lib._mainePickerMeterPickLableDown.autoFontFitText = !0, r.lib._mainePickerMeterPickLableUp.setText(t.i18n.Game.sub1.offers), r.lib._mainePickerMeterPickLableDown.setText(t.i18n.Game.buoyBonus.left), r.lib._acceptBtnText.autoFontFitText = !0, r.lib._tryAgainBtnText.autoFontFitText = !0, r.lib._acceptBtnText.setText(t.i18n.Game.sub1.accept), r.lib._tryAgainBtnText.setText(t.i18n.Game.sub1.reject), be.forEach(function(e) {
                    r.lib[e + "_value"].autoFontFitText = !0, r.lib[e + "_value"].pixiContainer.$text.style.padding = 20
                }), d(), "InProgress" === e.GameLogicResponse.OutcomeDetail.GameStatus && "SubPicker1" === e.GameLogicResponse.OutcomeDetail.Stage && n.publish("displayOrHideBasePage", !1)
            }

            function d() {
                ["_maineTips", "_maineTips2Value", "_mainePickerMeterBetLable", "_mainePickerMeterWinLable", "_title", "_orText"].forEach(function(e) {
                    r.lib[e].autoFontFitText = !0;
                    var n = "  ",
                        i = !1;
                    switch (e) {
                        case "_mainePickerMeterBetLable":
                            n = t.i18n.Game.consoleBet2;
                            break;
                        case "_mainePickerMeterWinLable":
                            n = t.i18n.Game.consoleWin;
                            break;
                        case "_title":
                            n = t.i18n.Game.sub1.title, i = !0;
                            break;
                        case "_orText":
                            n = t.i18n.Game.sub1.or, i = !0
                    }
                    r.lib[e].setText(n), r.lib[e].pixiContainer.$text.style.dropShadow = !0, r.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", r.lib[e].pixiContainer.$text.style.dropShadowDistance = Be, r.lib[e].pixiContainer.$text.style.dropShadowBlur = Ie, i && (r.lib[e].pixiContainer.$text.style.padding = 20)
                })
            }

            function h(e) {
                f(!Pe), g(), y(), Pe ? Re = 10 : (r.lib._maineTips.setText(t.i18n.Game.sub1.tips), Re = 1500), be.forEach(function(e) {
                    r.lib[e + "_fish"].show(!1), r.lib[e + "_value"].setText(""), r.lib[e + "_value"].show(!1), r.lib[e].setImage("pelicanLanding_00000"), r.lib[e + "_click"].over = !1, r.lib[e + "_click"].clicked = !!Pe
                }), S(), J(e, "BuoyBonus.Total"), Ce && Oe && (l.play(10 * Math.random() >= 5 ? "LarryMaineIntro01" : "LarryMaineIntro02", 6, !1), Oe = !1)
            }

            function p(e) {
                Re = 10, f(!1), g(), v(e), J(e, "BuoyBonus.Total")
            }

            function f(e) {
                _e = e, _e && (_e = !1, r.getTimer().setTimeout(function() {
                    _e = !0
                }, Re)), ye = null, ve = null
            }

            function m() {
                r.lib._mainePickerBG.stopPlay(), r.lib._mainePickerBG.show(!1), r.lib._maineBoat.show(!1), _(), r.lib._maineTips2.show(!1), r.lib._maineTips.show(!1), r.lib._mainePickerMeter.show(!1), r.animMap._wheelAnim.stop(), r.animMap._maineBoatAnim.stop()
            }

            function g() {
                r.lib._mainePickerBG.show(!0), r.lib._mainePickerBG.gotoAndPlay("waterAnim", .2, !0), r.lib._maineBoat.show(!0), r.lib._maineTips.show(!0), r.lib._mainePickerMeter.show(!0), r.lib._maineTips2.show(!1)
            }

            function b() {
                var e = !1;
                ve = r.getTimer().setTimeout(function() {
                    ye = r.getTimer().setInterval(function() {
                        r.lib._maineTips2.show(e), e = !e
                    }, 1e3)
                }, 5e3)
            }

            function _() {
                r.getTimer().clearTimeout(ve), r.getTimer().clearInterval(ye), ve = null, ye = null
            }

            function y() {
                r.animMap._wheelAnim.isPlaying() || r.animMap._wheelAnim.play(1e7), r.animMap._maineBoatAnim.isPlaying() || r.animMap._maineBoatAnim.play(1e7)
            }

            function v(e) {
                y(), x(e)
            }

            function x(e) {
                O(e.response.PickerOutcome.Layer.Pick), be.forEach(function(e) {
                    r.lib[e + "_fish"].show(!0), r.lib[e + "_value"].show(!0), r.lib[e].setImage("pelicanLanding_00013")
                }), r.animMap._fishLoopAnim.play(1e7)
            }

            function S() {
                Pe || (re(), oe()), r.lib._pelicanIdle_1.gotoAndPlay("pelicanLanding", .2, !1), r.lib._pelicanIdle_3.gotoAndPlay("pelicanLanding", .2, !1), r.getTimer().setTimeout(function() {
                    r.lib._pelicanIdle_0.gotoAndPlay("pelicanLanding", .2, !1), r.lib._pelicanIdle_4.gotoAndPlay("pelicanLanding", .2, !1)
                }, 500), r.getTimer().setTimeout(function() {
                    r.lib._pelicanIdle_2.onComplete = function() {
                        r.lib._pelicanIdle_2.onComplete = null, Pe || w(), Ee = !1
                    }, r.lib._pelicanIdle_2.gotoAndPlay("pelicanLanding", .2, !1)
                }, 1e3), Ee = !0, l.play("PelicanLand", 5, !1)
            }

            function w() {
                r.lib._pelicanIdle_1.gotoAndPlay("pelicanIdle2", .1, !0), r.lib._pelicanIdle_4.gotoAndPlay("pelicanIdle2", .1, !0), r.lib._pelicanIdle_0.gotoAndPlay("pelicanIdle3", .1, !0), r.lib._pelicanIdle_3.gotoAndPlay("pelicanIdle3", .1, !0), r.lib._pelicanIdle_2.gotoAndPlay("pelicanIdle1", .1, !0);
                for (var e = 0; e < be.length; e++) r.lib[be[e] + "_click"].pixiContainer.$sprite.interactive = !0, r.lib[be[e] + "_click"].pixiContainer.$sprite.cursor = "pointer", "desktop" === ue && (P(r.lib[be[e] + "_click"]), C(r.lib[be[e] + "_click"])), T(r.lib[be[e] + "_click"])
            }

            function T(e) {
                e.on("click", function() {
                    _e && (k(e), e.clicked = !0)
                })
            }

            function P(e) {
                e.on("mouseover", function() {
                    _e && (e.over = !0, e.parent.stopPlay(), e.parent.setImage("pelicanOver"))
                })
            }

            function C(e) {
                e.on("mouseout", function() {
                    if (_e) {
                        e.parent.setImage("pelicanIdle1_00000"), e.over = !1;
                        var t = "pelicanIdle1";
                        switch (e.parent.data._name) {
                            case "_pelicanIdle_1":
                            case "_pelicanIdle_4":
                                t = "pelicanIdle2";
                                break;
                            case "_pelicanIdle_0":
                            case "_pelicanIdle_3":
                                t = "pelicanIdle3";
                                break;
                            case "_pelicanIdle_2":
                                t = "pelicanIdle1"
                        }
                        e.parent.gotoAndPlay(t, .1, !0)
                    }
                })
            }

            function k(e) {
                _e = !1, Me = !0, ce = e.parent.data._name.slice(13), Y();
                for (var t = 0; t < be.length; t++) r.lib[be[t]].stopPlay(), r.lib[be[t]].setImage("pelicanIdle1_00000");
                V(), n.publish("nextState"), r.lib._maineTips.show(!1), ie(), ae(), l.stopChannel(6)
            }

            function O(e) {
                for (var t = ["fish0", "fish1", "fish2", "fish3", "lobster"], n = ["fish0Mask", "fish1Mask", "fish2Mask", "fish3Mask", "lobsterMask"], a = [], s = {}, u = 0; u < e.length; u++) {
                    var c, d, h, p, f = 0;
                    c = e[u].Feature, d = e[u]["@name"].slice(3, 4), p = e[u]["@picked"];
                    for (var m = 0; m < c.length; m++) "credits" === c[m]["@type"] ? f = Number(c[m]["@value"]) * i.getCurBetPerPattern() : "trigger" === c[m]["@type"] && (h = c[m]["@value"]);
                    a.push(f), s[d] = {
                        value: f,
                        picked: p
                    }, "GoldenLobster" === h ? "true" === p ? (de = "accept", Ce && l.play("PelicanLobster", 2, !1)) : de = "reject" : "true" === p && Ce && !Pe && l.play("FishReveal", 2, !1);
                    var g;
                    g = "true" === p ? ["fffaa4", "fff200"] : ["babc13", "babc14"], r.lib["_pelicanIdle_" + d + "_value"].updateCurrentStyle({
                        _text: {
                            _gradient: {
                                _color: g
                            }
                        }
                    }), r.lib["_pelicanIdle_" + d + "_value"].setText(o.formatBalance(f * i.getCurDenomamount()))
                }
                a.sort(function(e, t) {
                    return e - t
                });
                for (var b in s) {
                    "true" === s[b].picked && (me = t[a.indexOf(s[b].value)]);
                    var _ = "true" === s[b].picked ? t[a.indexOf(s[b].value)] : n[a.indexOf(s[b].value)];
                    r.lib["_pelicanIdle_" + b + "_fish"].setImage(_)
                }
            }

            function E(e) {
                if ("SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage) {
                    q();
                    var t = e.response.PickerOutcome.Layer.Pick;
                    X(e), O(t), r.lib["_pelicanIdle_" + ce].onComplete = function() {
                        r.lib["_pelicanIdle_" + ce].onComplete = null, r.animMap._fishLoopAnim.play(1e7), r.lib["_pelicanIdle_" + ce + "_value"].show(!0), r.getTimer().setTimeout(function() {
                            for (var e = 0; e < be.length; e++) r.lib[be[e] + "_fish"].show(!0), r.lib[be[e] + "_value"].show(!0);
                            n.publish("nextState")
                        }, 1e3)
                    }, r.lib["_pelicanIdle_" + ce].gotoAndPlay("pelicanReveal", .2, !1), r.lib["_pelicanIdle_" + ce + "_fish"].show(!0), r.animMap._fish2Anim.play(1)
                } else if ("AcceptReject" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage) {
                    q(), r.lib._choosePlaque.pixiContainer.visible && (G(), r.lib._maineTips.show(!1)), xe.start(i.getWinValue(e, "BuoyBonus.Total") - i.getWinValue(e, "SubPicker1.Prizes"), i.getWinValue(e, "BuoyBonus.Total"), ke);
                    for (var o, a, s, t = e.response.PickerOutcome.Layer.Pick, u = 0; u < t.length; u++)
                        if ("true" === t[u]["@picked"]) {
                            o = t[u].Feature;
                            break
                        }
                    for (var c = 0; c < o.length; c++) "trigger" === o[c]["@type"] ? a = o[c]["@value"] : "credits" === o[c]["@type"] && (s = Number(o[c]["@value"]) * i.getCurBetPerPattern());
                    "GoldenLobster" === a ? Ce && l.play("LarryMaineEndLobster", 12, !1) : s >= 500 * i.getCurBetPerPattern() ? Ce && l.play(10 * Math.random() >= 5 ? "LarryMaineEndLarge01" : "LarryMaineEndLarge02", 12, !1) : Ce && l.play((Math.random(), "LarryMaineEndSmall01"), 12, !1), A(e)
                } else "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage && (q(), G(), r.lib._maineTips.show(!1), R())
            }

            function A(e) {
                var n = e.response.PickerOutcome.Layer.Pick;
                r.lib._maineTips2Value.pixiContainer.$text.style.padding = 20, r.lib._maineTips2Value.setText(t.i18n.Game.sub1.tips2 + t.i18n.Game.balankSpace1 + o.formatBalance(i.getWinValue(e, "SubPicker1.Prizes"))), b(), r.lib._maineTips2.show(!0);
                for (var a = 0; a < n.length; a++)
                    if ("true" === n[a]["@picked"]) {
                        var s, l;
                        s = n[a].Feature;
                        for (var u = 0; u < s.length; u++)
                            if ("trigger" === s[u]["@type"]) {
                                l = s[u]["@value"], "GoldenLobster" === l && (r.lib._maineTips.setText(t.i18n.Game.sub1.tips3), r.lib._maineTips.show(!0));
                                break
                            }
                        break
                    }
            }

            function M(e) {
                "_mainePickerMeterWinValue" === e.spriteName && R()
            }

            function R() {
                r.animMap._fishLoopAnim.stop();
                for (var e = 0; e < be.length; e++) r.lib[be[e] + "_fish"].show(!1), r.lib[be[e] + "_value"].setText("");
                I()
            }

            function I() {
                r.lib._pelicanIdle_0.gotoAndPlay("pelicanTakeOff", .2, !1), r.getTimer().setTimeout(function() {
                    r.lib._pelicanIdle_3.gotoAndPlay("pelicanTakeOff", .2, !1)
                }, 500), r.getTimer().setTimeout(function() {
                    r.lib._pelicanIdle_4.gotoAndPlay("pelicanTakeOff", .2, !1)
                }, 700), r.getTimer().setTimeout(function() {
                    r.lib._pelicanIdle_2.gotoAndPlay("pelicanTakeOff", .2, !1)
                }, 900), r.getTimer().setTimeout(function() {
                    r.lib._pelicanIdle_1.onComplete = function() {
                        r.lib._pelicanIdle_1.onComplete = null, n.publish("nextState")
                    }, r.lib._pelicanIdle_1.gotoAndPlay("pelicanTakeOff", .2, !1)
                }, 1100), Ce && l.play("PelicanFlyAway", 5, !1)
            }

            function B(e) {
                "SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage ? n.publish("nextState") : "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage ? n.publish("nextState") : "AcceptReject" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && r.getTimer().setTimeout(function() {
                    n.publish("showBonusResultDialog", e)
                }, 2e3)
            }

            function L() {
                Pe = !1
            }

            function D() {
                return Pe
            }

            function F(e) {
                Pe = !1, Me = !1, ie(), ae(), l.stopChannel(6), "BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage ? (Oe = !0, h(e)) : "SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage ? "reject" === de ? fe > 0 ? N(e) : n.publish("nextState") : "accept" === de && n.publish("nextState") : "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage && (Oe = !1, h(e))
            }

            function N(e) {
                re();
                for (var n = 0, a = e.response.PickerOutcome.Layer.Pick, s = 0; s < a.length; s++)
                    if ("true" === a[s]["@picked"]) {
                        var u;
                        u = a[s].Feature;
                        for (var c = 0; c < u.length; c++) "credits" === u[c]["@type"] && (n = Number(u[c]["@value"]) * i.getCurBetPerPattern());
                        r.lib._fishWinValue.setText(o.formatBalance(n * i.getCurDenomamount())), r.lib._fishAccept.setImage(me);
                        break
                    }
                var d, h = "maineLarryReject";
                Ae = !0, 2 === fe ? n >= 500 * i.getCurBetPerPattern() ? (d = "maineText3", h = "maineLarryPrompt", l.play("LarryMaineAccept0" + ne(4), 12, !1)) : (d = "maineText2", h = "maineLarryReject", l.play("LarryMaineTryAgain0" + ne(4), 12, !1)) : 1 === fe && (n >= 395 * i.getCurBetPerPattern() ? (d = "maineText3", h = "maineLarryPrompt", l.play("LarryMaineAccept0" + ne(4), 12, !1)) : (d = "maineText2", h = "maineLarryReject", l.play("LarryMaineTryAgain0" + ne(4), 12, !1))), "maineText2" === d ? r.lib._maineTips.setText(t.i18n.Game.sub1.tips4) : "maineText3" === d && r.lib._maineTips.setText(t.i18n.Game.sub1.tips5), r.lib._maineTips.show(!0), r.lib._choosePlaque.show(!0), r.lib._larryAnim.gotoAndPlay(h, .2, !0), j()
            }

            function G() {
                r.lib._choosePlaque.show(!1), r.lib._larryAnim.gotoAndStop(0), ie()
            }

            function j() {
                he = new s(r.lib._acceptBtn, "acceptBtn", {
                    avoidMultiTouch: !0
                }), he.click(function() {
                    U()
                }), pe = new s(r.lib._tryAgainBtn, "acceptBtn", {
                    avoidMultiTouch: !0
                }), pe.click(function() {
                    W()
                }), H(!0)
            }

            function U() {
                Se && (Ae = !1, Y(), H(!1), de = "accept", n.publish("nextState"))
            }

            function W() {
                Se && (Ae = !1, Y(), H(!1), de = "reject", n.publish("nextState"))
            }

            function H(e) {
                he.enable(e), pe.enable(e), Se = !!e
            }

            function z(e) {
                "BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage ? (n.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.PlayData",
                    data: {
                        ActionInput: {
                            Action: "play"
                        },
                        PatternSliderInput: {
                            BetPerPattern: i.getCurBetPerPattern(),
                            PatternsBet: i.getCurPatternsBet()
                        },
                        PickerInput: {
                            Pick: {
                                "@name": "L0C" + ce + "R0"
                            }
                        }
                    }
                }), n.publish("nextState")) : "SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage ? (n.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.PlayData",
                    data: {
                        ActionInput: {
                            Action: de
                        },
                        PatternSliderInput: {
                            BetPerPattern: i.getCurBetPerPattern(),
                            PatternsBet: i.getCurPatternsBet()
                        }
                    }
                }), n.publish("nextState")) : "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage && (n.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.PlayData",
                    data: {
                        ActionInput: {
                            Action: "play"
                        },
                        PatternSliderInput: {
                            BetPerPattern: i.getCurBetPerPattern(),
                            PatternsBet: i.getCurPatternsBet()
                        },
                        PickerInput: {
                            Pick: {
                                "@name": "L0C" + ce + "R0"
                            }
                        }
                    }
                }), n.publish("nextState"))
            }

            function V() {
                for (var e = 0; e < be.length; e++) r.lib[be[e] + "_click"].pixiContainer.$sprite.interactive = !1, r.lib[be[e] + "_click"].pixiContainer.$sprite.cursor = "default", r.lib[be[e] + "_click"].off("click"), r.lib[be[e] + "_click"].off("mouseover"), r.lib[be[e] + "_click"].off("mouseout")
            }

            function X(e) {
                var t = e.response.PickerSummaryOutcome;
                if (Array.isArray(t))
                    for (var n = 0; n < t.length; n++)
                        if ("SubPicker" === t[n]["@name"]) {
                            fe = Number(t[n].PicksRemaining), r.lib._mainePickerMeterPickValue.setText(t[n].PicksRemaining);
                            break
                        }
            }

            function J(e, t) {
                X(e), r.lib._mainePickerMeterWinValue.setText(o.formatBalance(i.getWinValue(e, t))), r.lib._mainePickerMeterBetValue.setText(o.formatBalance(i.calculateTotalBet()))
            }

            function Y() {
                r.lib._maineCellNetwork.show(!0), r.lib._maineCellNetwork.gotoAndPlay("networkActivity", .2, !0)
            }

            function q() {
                r.lib._maineCellNetwork.stopPlay(), r.lib._maineCellNetwork.show(!1)
            }

            function $(e) {
                "BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage ? (n.publish("displayOrHideBasePage", !1), Oe = !0, h(e), n.publish("nextState")) : "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage ? (n.publish("displayOrHideBasePage", !1), Oe = !1, h(e), n.publish("nextState")) : "SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage && (K(e.response.PickerOutcome.Layer.Pick), n.publish("nextState"))
            }

            function K(e) {
                for (var t = 0; t < e.length; t++) {
                    var n, r, i;
                    n = e[t].Feature, i = e[t]["@picked"];
                    for (var o = 0; o < n.length; o++) "trigger" === n[o]["@type"] && (r = n[o]["@value"]);
                    "GoldenLobster" === r && (de = "true" === i ? "accept" : "reject")
                }
            }

            function Q(e) {
                "SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage && (Pe = !0, Oe = !1, h(e), r.getTimer().setTimeout(function() {
                    x(e)
                }, 2e3), "accept" === de || 0 === fe ? r.getTimer().setTimeout(function() {
                    n.publish("nextState")
                }, 2100) : r.getTimer().setTimeout(function() {
                    N(e)
                }, 2100))
            }

            function Z(e) {
                "SubPicker1" === e.response.OutcomeDetail.Stage && e.response.OutcomeDetail.NextStage
            }

            function ee(e) {
                ie(), ae(), "BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage || "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage || "SubPicker1" === e.response.OutcomeDetail.Stage && e.response.OutcomeDetail.NextStage
            }

            function te(e) {
                q(), "BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage ? (Oe = !0, h(e)) : "AcceptReject" === e.response.OutcomeDetail.Stage && "SubPicker1" === e.response.OutcomeDetail.NextStage ? h(e) : "SubPicker1" === e.response.OutcomeDetail.Stage && "AcceptReject" === e.response.OutcomeDetail.NextStage && (K(e.response.PickerOutcome.Layer.Pick), Pe = !0, "accept" === de ? n.publish("nextState") : "reject" === de && (p(e), N(e)))
            }

            function ne(e) {
                return parseInt(Math.random() * e + 1)
            }

            function re() {
                Ce && null === we && (we = r.getTimer().setInterval(function() {
                    l.play("LarryMainePrompt0" + ne(4), 6, !1)
                }, 1e4))
            }

            function ie() {
                r.getTimer().clearInterval(we), we = null
            }

            function oe() {
                Ce && null === Te && (Te = r.getTimer().setInterval(function() {
                    l.play("SeaGull0" + ne(5), 2, !1)
                }, 8e3))
            }

            function ae() {
                r.getTimer().clearInterval(Te), Te = null
            }

            function se() {
                Ce = !0, "SubPicker1" === ge.response.OutcomeDetail.NextStage ? ("desktop" !== ue && (Oe && (Me || l.play(10 * Math.random() >= 5 ? "LarryMaineIntro01" : "LarryMaineIntro02", 6, !1), Oe = !1), Me || (re(), oe())), l.play("BonusGame_RockLobsterLoop", 4, !0)) : "AcceptReject" === ge.response.OutcomeDetail.NextStage && l.play("BonusGame_RockLobsterLoop", 4, !0)
            }

            function le(e) {
                ge = e
            }
            var ue, ce, de, he, pe, fe, me, ge, be = ["_pelicanIdle_0", "_pelicanIdle_1", "_pelicanIdle_2", "_pelicanIdle_3", "_pelicanIdle_4"],
                _e = !0,
                ye = null,
                ve = null,
                xe = new a("_mainePickerMeterWinValue"),
                Se = !1,
                we = null,
                Te = null,
                Pe = !1,
                Ce = !1,
                ke = {
                    rollUpSound: "BonusR",
                    rollUpTermSound: "Term",
                    rollUpSoundChannel: 10
                },
                Oe = !1,
                Ee = !1,
                Ae = !1,
                Me = !1,
                Re = 1500,
                Ie = 1,
                Be = 2;
            return n.subscribe("onBeforeShowStage", le), n.subscribe("audioPlayer.playerSelectedWhenGameLaunch", se), n.subscribe("platformMsg/ClientService/Game.Init", c), n.subscribe("platformMsg/Kernel/System.Init", u), n.subscribe("onEnterNextStage", F), n.subscribe("onBeforeRequest", Z), n.subscribe("onMakeRequest", z), n.subscribe("onResolveStage", E), n.subscribe("onExitStage", B), n.subscribe("hideMaineUI", m), n.subscribe("onStartGameInProgressStage", $), n.subscribe("onStartGameInProgressNextStage", Q), n.subscribe("onResetNextStage", te), n.subscribe("onAbortNextStage", ee), n.subscribe("RollUp.Stopped", M), {
                changeGIPValue: L,
                getGIPValue: D
            }
        }), define("game/FreeSpinDialog", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/BetController", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "game/WinlineAnimController", "game/Sub1", "game/AGCOHelper"], function(e, t, n, r, i, o, a, s, l, u) {
            function c(e) {
                O = e.serverConfig.presenttype, E = e.serverConfig.channel, C = e.serverConfig.paramGame.assetPack
            }

            function d(e) {
                k = e.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap, n.lib._freespinResultPlaque.show(!1), n.lib._freespinResultLine1.show(!1), n.lib._freespinResultLine2.show(!1), n.lib._freespinResultPlaqueLogo.show(!1), n.lib._capDialog.show(!1), n.lib._capDialogFreeSpin.show(!1), P()
            }

            function h(e) {
                ["_capLine1", "_capLine2", "_capLine3"].forEach(function(e) {
                    n.lib[e].show(!0)
                }), n.lib._capLine3.setText(o.i18n.Game.balankSpace1 + a.formatBalance(e.maxWinNum) + o.i18n.Game.balankSpace1), "BaseGame" === e.stage ? (n.lib._capLine4.show(!1), n.lib._capDialog.show(!0), t.publish("nextState")) : (n.lib._capLine4.show(!0), n.lib._capDialog.show(!0), n.getTimer().setTimeout(function() {
                    n.lib._capDialog.show(!1), n.lib._capLine4.show(!1), n.getTimer().setTimeout(function() {
                        g(e.data)
                    }, 1e3)
                }, 3e3))
            }

            function p(e) {
                n.lib._capDialogFreeSpin.show(!0), "true" === e.response.FreeSpinOutcome.MaxAwarded ? (n.lib._capLine1_0.setText(o.i18n.Game.retrigger.line3 + e.response.FreeSpinOutcome.TotalAwarded + o.i18n.Game.balankSpace1), "0" === e.response.FreeSpinOutcome.Awarded ? (n.lib._capLine2_1.pixiContainer.$text.style.fill = ["#ff0000", "#ff8400", "#ffff00"], n.lib._capLine2_1.setText(o.i18n.Game.retrigger.line4), n.lib._capLine4_3.setText(o.i18n.Game.retrigger.line5)) : (n.lib._capLine2_1.pixiContainer.$text.style.fill = ["#ffcc00"], n.lib._capLine2_1.setText(o.i18n.Game.balankSpace1 + e.response.FreeSpinOutcome.Awarded + o.i18n.Game.balankSpace1), n.lib._capLine4_3.setText(o.i18n.Game.retrigger.line6))) : (n.lib._capLine1_0.setText(o.i18n.Game.retrigger.line1), n.lib._capLine2_1.pixiContainer.$text.style.fill = ["#ffcc00"], n.lib._capLine2_1.setText(o.i18n.Game.balankSpace1 + e.response.FreeSpinOutcome.Awarded + o.i18n.Game.balankSpace1), n.lib._capLine4_3.setText(o.i18n.Game.retrigger.line2)), M = n.getTimer().setTimeout(function() {
                    ["_capLine1_0", "_capLine2_1", "_capLine4_3"].forEach(function(e) {
                        n.lib[e].setText(o.i18n.Game.balankSpace1)
                    }), n.lib._capDialogFreeSpin.show(!1), t.publish("freeSpinRetrigerDialogShowComplete"), M = null
                }, R)
            }

            function f(e) {
                b(e, !0)
            }

            function m(e, t) {
                A = n.getTimer().setInterval(function() {
                    e.show(t), t = !t
                }, 400)
            }

            function g(e) {
                b(e, !1)
            }

            function b(e, s) {
                var l = e.response,
                    u = L.rgPresentation,
                    c = L.isTotalWinGreaterThanStake(l);
                n.lib._freespinResultPlaque.show(!0), n.animMap._freespinResultPlaqueIn_Anim._onComplete = function() {
                    s && ("BuoyBonus" === e.response.OutcomeDetail.Stage ? t.publish("hideBuoyPage") : "SubPicker2" === e.response.OutcomeDetail.Stage ? t.publish("hideKangUI") : "SubPicker3" === e.response.OutcomeDetail.Stage ? t.publish("hideOctopusUI") : "AcceptReject" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && t.publish("hideMaineUI"));
                    var l, d, h;
                    s ? (l = r.getWinValue(e, "BuoyBonus.Total", !0), d = r.getWinValue(e, "BuoyBonus.Total"), h = r.getMul(e, "BuoyBonus.Total")) : (l = r.getFreeSpinTotal(e.response.PrizeOutcome, !0), d = r.getFreeSpinTotal(e.response.PrizeOutcome), h = r.getMul(e, "FreeSpin.Total")), l >= k ? (n.lib._freespinResultLine3_1.setText(a.formatBalance(k)), n.getTimer().setTimeout(function() {
                        n.lib._freespinResultLine3_1.show(!0), m(n.lib._freespinResultLine3_1, !1)
                    }, 1500)) : h > 1 ? (n.lib._freespinResultLine3.setText(a.formatBalance(d) + o.i18n.Game.xSign + h + o.i18n.Game.equalSign), n.lib._freespinResultLine33.setText(a.formatBalance(l)), n.getTimer().setTimeout(function() {
                        n.lib._freespinResultLine33.show(!0), u && !c || m(n.lib._freespinResultLine33, !1)
                    }, 1500)) : (n.lib._freespinResultLine3_1.setText(a.formatBalance(l)), n.getTimer().setTimeout(function() {
                        n.lib._freespinResultLine3_1.show(!0), u && !c || m(n.lib._freespinResultLine3_1, !1)
                    }, 1500)), n.lib._freespinResultLine1.show(!0), n.lib._freespinResultLine2.show(!0), n.lib._freespinResultPlaqueLogo.show(!0), n.getTimer().setTimeout(function() {
                        n.getTimer().clearInterval(A), n.lib._freespinResultLine1.show(!1), n.lib._freespinResultLine2.show(!1), n.lib._freespinResultPlaqueLogo.show(!1), n.lib._freespinResultLine3.setText(o.i18n.Game.balankSpace1), n.lib._freespinResultLine33.setText(o.i18n.Game.balankSpace1), n.lib._freespinResultLine3_1.setText(o.i18n.Game.balankSpace1), n.animMap._freespinResultPlaqueOut_Anim._onComplete = function() {
                            n.lib._freespinResultPlaque.show(!1)
                        }, t.publish("nextState"), n.animMap._freespinResultPlaqueOut_Anim.play(1), i.play("SummaryOut", 5, !1)
                    }, 5e3)
                }, n.animMap._freespinResultPlaqueIn_Anim.play(1), i.play("SummaryIn", 5, !1)
            }

            function _(e) {
                p(e)
            }

            function y(e) {
                n.lib._reelFrameLayer.show(e), n.lib._uiLayer.show(e), n.lib._meterLayer.show(e), n.lib._reelsBGLayer.show(e), n.lib._jackpotLayer.show(e)
            }

            function v() {
                n.lib._capLine1.show(!1), n.lib._capLine2.show(!1), n.lib._capLine3.show(!1), n.lib._capLine4.show(!1), n.lib._capDialog.show(!1)
            }

            function x() {
                n.lib._capDialog.pixiContainer.visible && v(), n.lib._capDialogFreeSpin.pixiContainer.visible && (n.lib._capDialogFreeSpin.show(!1), ["_capLine1_0", "_capLine2_1", "_capLine4_3"].forEach(function(e) {
                    n.lib[e].setText(o.i18n.Game.balankSpace1)
                })), M && (n.getTimer().clearTimeout(M), M = null)
            }

            function S() {
                n.lib._capDialog.pixiContainer.visible && v()
            }

            function w(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && n.getTimer().setTimeout(function() {
                    t.publish("nextState")
                }, s.getIfJackpot() ? 5900 : 3e3)
            }

            function T(e) {
                "BuoyBonus" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? (y(!0), t.publish("beginLines", e), t.publish("beginBig", e)) : "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage ? n.getTimer().setTimeout(function() {
                    t.publish("nextState")
                }, 3e3) : "SubPicker2" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? (y(!0), t.publish("beginLines", e), t.publish("beginBig", e)) : "SubPicker3" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? (y(!0), t.publish("beginLines", e), t.publish("beginBig", e)) : "AcceptReject" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? (y(!0), t.publish("beginLines", e), t.publish("beginBig", e), l.changeGIPValue()) : "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (t.publish("beginLines", e), t.publish("beginBig", e))
            }

            function P() {
                ["_freespinResultLine1", "_freespinResultLine2", "_freespinResultLine3", "_freespinResultLine33", "_freespinResultLine3_1", "_capLine1", "_capLine2", "_capLine3", "_capLine4", "_capLine1_0", "_capLine2_1", "_capLine4_3"].forEach(function(e) {
                    var t = " ";
                    switch (e) {
                        case "_freespinResultLine1":
                            t = o.i18n.Game.Dialog["BONUS COMPLETE"];
                            break;
                        case "_freespinResultLine2":
                            t = o.i18n.Game.Dialog["TOTAL BONUS WIN"];
                            break;
                        case "_capLine1":
                            t = o.i18n.Game.Dialog.CONGRATULATIONS;
                            break;
                        case "_capLine2":
                            t = o.i18n.Game.Dialog.MAXAWARDFREE;
                            break;
                        case "_capLine4":
                            t = o.i18n.Game.Dialog.MAXWARDCOMPLETE
                    }
                    n.lib[e].autoFontFitText = !0, n.lib[e].setText(t), n.lib[e].pixiContainer.$text.style.dropShadow = !0, n.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", n.lib[e].pixiContainer.$text.style.dropShadowDistance = B, n.lib[e].pixiContainer.$text.style.dropShadowBlur = I, n.lib[e].pixiContainer.$text.style.padding = 20
                })
            }
            var C, k, O, E, A, M = null,
                R = 3e3,
                I = 2,
                B = 5,
                L = new u;
            return t.subscribe("onBetControlButtonClicked", S), t.subscribe("showFreeSpinResultDialog", g), t.subscribe("showBonusResultDialog", f), t.subscribe("showMaxAwardDialog", h), t.subscribe("platformMsg/Kernel/System.Init", c), t.subscribe("platformMsg/ClientService/Game.Init", d), t.subscribe("onBeforeRequest", x), t.subscribe("onExitStage", w), t.subscribe("onEnterNextStage", T), t.subscribe("displayOrHideBasePage", y), t.subscribe("showRetriggerDialogFreeSpin", _), {}
        }), define("game/MetersController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "game/BetController", "game/RollUp", "game/WinlineAnimController", "game/AutoSpinController", "game/AGCOHelper"], function(e, t, n, r, i, o, a, s, l, u, c) {
            function d(e) {
                X = e.serverConfig.paramGame.assetPack, "freespin" === e.serverConfig.paramGame.playMode && (q = !0, G = Number(e.serverConfig.freespin_bet), j = Number(e.serverConfig.freespin_lines))
            }

            function h(e) {
                W = e.PaytableResponse.AwardCapInfo.CurrencyCap.AwardCap
            }

            function p(e) {
                if (Y = e.response, f(), m(), g(), b(), _(e.response.OutcomeDetail.NextStage), v(e), !1 === q) n.lib._pfsMeter.show(!1), n.lib._betValue.setText(i.formatBalance(a.calculateTotalBet()));
                else {
                    n.lib._balanceMeter.show(!1);
                    var t = i.formatBalance(j * G);
                    n.lib._betValue.setText(t), U <= 0 && (U = 0), F(e)
                }
            }

            function f() {
                n.lib._balanceLabel.autoFontFitText = !0, n.lib._pfsLabel.autoFontFitText = !0, n.lib._winLabel.autoFontFitText = !0, n.lib._linesBetLabel.autoFontFitText = !0, n.lib._totalBetLabel.autoFontFitText = !0, n.lib._linesLabel.autoFontFitText = !0, n.lib._linesLabel2 && (n.lib._linesLabel2.autoFontFitText = !0), n.lib._freeSpinCountLabel.autoFontFitText = !0, n.lib._bonusWinLabel.autoFontFitText = !0, n.lib._betLabel.autoFontFitText = !0, n.lib._balanceValue.autoFontFitText = !0, n.lib._pfsValue.autoFontFitText = !0, n.lib._winValue.autoFontFitText = !0, n.lib._lineBetValue.autoFontFitText = !0, n.lib._totalBetValue.autoFontFitText = !0, n.lib._linesValue.autoFontFitText = !0, n.lib._freeSpinCountValue.autoFontFitText = !0, n.lib._bonusWinValue.autoFontFitText = !0, n.lib._betValue.autoFontFitText = !0
            }

            function m() {
                ["_linesLabel", "_linesBetLabel", "_balanceLabel", "_winLabel", "_betLabel", "_freeSpinCountLabel", "_pfsLabel", "_bonusWinLabel", "_totalBetLabel"].forEach(function(e) {
                    n.lib[e].setText(o.i18n.Game.balankSpace1), n.lib[e].pixiContainer.$text.style.dropShadow = !0, n.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", n.lib[e].pixiContainer.$text.style.dropShadowDistance = ie, n.lib[e].pixiContainer.$text.style.dropShadowBlur = re
                })
            }

            function g() {
                n.lib._balanceLabel.setText(o.i18n.Game.consoleBalance), n.lib._winLabel.setText(o.i18n.Game.consoleWin), n.lib._betLabel.setText(o.i18n.Game.consoleBet), n.lib._freeSpinCountLabel.setText(o.i18n.Game.consoleBonusCount), n.lib._bonusWinLabel.setText(o.i18n.Game.consoleBonus), n.lib._pfsLabel.setText(o.i18n.Game.consoleBonusCount), n.lib._linesLabel.setText(o.i18n.Game.selectorConis), n.lib._linesBetLabel.setText(o.i18n.Game.selectorBetPerPattern), n.lib._totalBetLabel.setText(o.i18n.Game.consoleBet)
            }

            function b() {
                n.lib._balanceValue.setText(""), n.lib._winValue.setText(""), n.lib._betValue.setText(""), n.lib._pfsValue.setText(""), n.lib._freeSpinCountValue.setText(""), n.lib._bonusWinValue.setText("")
            }

            function _(e) {
                "FreeSpin" === e ? (n.lib._meterSet.show(!1), n.lib._bonusMeterSet.show(!0)) : (n.lib._bonusMeterSet.show(!1), n.lib._meterSet.show(!0))
            }

            function y(e) {
                n.lib._balanceValue.setText(e.balance)
            }

            function v(e) {
                n.lib._balanceValue.setText(i.formatBalance(e.response.Balances["@totalBalance"]))
            }

            function x() {
                ae = oe.rgPresentation, se = "FreeSpin" === Y.OutcomeDetail.Stage && "BaseGame" === Y.OutcomeDetail.NextStage || "AcceptReject" === Y.OutcomeDetail.Stage && "BaseGame" === Y.OutcomeDetail.NextStage, J = se && !le ? oe.isTotalWinGreaterThanStake(Y) : oe.isPerWinGreaterThanStake(Y)
            }

            function S(e) {
                x();
                var o = a.getFreeSpinTotal(e.response.PrizeOutcome);
                !ae || J ? K.start(Z, o, {
                    rollUpSound: "BonusR",
                    rollUpTermSound: "Term",
                    rollUpSoundChannel: 10
                }) : (t.publish("RollUp.Stopped", {
                    spriteName: "_bonusWinValue"
                }), n.lib._bonusWinValue.setText(i.formatBalance(o)), r.play("WinDing", 23, !1)), Z = o
            }

            function w() {
                K.stop()
            }

            function T(e) {
                var o = a.getCurBasePay(e);
                x(), !ae || J ? n.getTimer().setTimeout(function() {
                    o > 0 && o < 10 * a.calculateTotalBet() ? $.start(Q, o, {
                        rollUpSound: "RollupLoop",
                        rollUpTermSound: "RollupTerminate",
                        rollUpSoundChannel: 10
                    }) : o >= 10 * a.calculateTotalBet() && $.start(Q, o, {
                        rollUpSound: "RollupLoop",
                        rollUpTermSound: "RollupTerminate",
                        rollUpSoundChannel: 10
                    }), Q = o
                }, (l.getWinType(), 0)) : (t.publish("RollUp.Stopped", {
                    spriteName: "_winValue"
                }), n.lib._winValue.setText(i.formatBalance(o)), r.play("WinDing", 23, !1))
            }

            function P() {
                $.stop()
            }

            function C(e) {
                if (e && "_winValue" === e.spriteName) {
                    ee ? l.getFlagWinlineComplete() ? n.lib._bigWinLayer.pixiContainer.visible ? n.getTimer().setTimeout(function() {
                        t.publish("showButton", "_inactiveButton"), t.publish("nextState")
                    }, 300) : (t.publish("showButton", "_inactiveButton"), t.publish("nextState")) : (t.publish("showButton", "_spinButton"), t.publish("nextState")) : (t.publish("showButton", "_inactiveButton"), t.publish("nextState"));
                    var r = i.formatBalance(H);
                    n.lib._balanceValue.setText(r)
                }
                e && "_bonusWinValue" === e.spriteName && (ne = !0, l.getFlagWinlineCompleteBonus() ? (t.publish("showButton", "_inactiveButton"), "FreeSpin" === V.response.OutcomeDetail.NextStage ? t.publish("nextState") : t.publish("showFreeSpinResult")) : "FreeSpin" === V.response.OutcomeDetail.NextStage ? l.getRetigerF() ? te && t.publish("showButton", "_spinButton") : t.publish("showButton", "_spinButton") : (t.publish("showButton", "_skipButton"), t.publish("setSkipButtonCanClick")))
            }

            function k(e) {
                var t, r;
                e && "_winValue" === e.spriteName && (t = H + e.value - z, r = i.formatBalance(t), n.lib._balanceValue.setText(r))
            }

            function O(e) {
                te = !1, ne = !1, "BaseGame" === e.response.OutcomeDetail.NextStage && n.lib._winValue.setText(""), "FreeSpin" === e.response.OutcomeDetail.NextStage && n.lib._freeSpinCountValue.setText(Number(e.response.FreeSpinOutcome.Count) + 1 + o.i18n.Game.slashSign + e.response.FreeSpinOutcome.TotalAwarded)
            }

            function E(e) {
                V = e, Y = e.response, q && ("BaseGame" !== e.response.OutcomeDetail.Stage || "BaseGame" !== e.response.OutcomeDetail.NextStage && "BonusPicker" !== e.response.OutcomeDetail.NextStage || F(e)), "BaseGame" === e.response.OutcomeDetail.NextStage && (ee = u.currentAutoSpinState(), H = Number(e.response.Balances["@totalBalance"]), z = Number(a.getCurBasePay(e)))
            }

            function A(e) {
                if (le = !1, _(e.response.OutcomeDetail.NextStage),
                    "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage) {
                    n.lib._freeSpinCountValue.setText(e.response.FreeSpinOutcome.Count + o.i18n.Game.slashSign + e.response.FreeSpinOutcome.InitAwarded);
                    var t = a.getBonusPickerWin(e);
                    n.lib._bonusWinValue.setText(i.formatBalance(t)), Z = t
                }
                "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (n.lib._bonusWinValue.setText(""), n.lib._freeSpinCountValue.setText(""))
            }

            function M(e) {
                n.lib._freeSpinCountValue.setText(Number(e.response.FreeSpinOutcome.Count) + o.i18n.Game.slashSign + e.response.FreeSpinOutcome.TotalAwarded), te = !0, ne && t.publish("showButton", "_spinButton")
            }

            function R(e) {
                le = !0, ("FreeSpin" === e.response.OutcomeDetail.NextStage || "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage) && "true" === e.response.FreeSpinOutcome.IncrementTriggered && n.getTimer().setTimeout(function() {
                    n.lib._freeSpinCountValue.setText(Number(e.response.FreeSpinOutcome.Count) + o.i18n.Game.slashSign + e.response.FreeSpinOutcome.TotalAwarded)
                }, 2100)
            }

            function I(e) {
                Q = 0, Z = 0, !1 === q && v(e)
            }

            function B(e) {
                q && (U = Number(e.response.PromotionalFreeSpin["@count"])), "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && (n.lib._freeSpinCountValue.setText(e.response.FreeSpinOutcome.Count + o.i18n.Game.slashSign + e.response.FreeSpinOutcome.TotalAwarded), (Z = a.getBonusPickerWin(e)) >= 0 && n.lib._bonusWinValue.setText(i.formatBalance(Z))), "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && (n.lib._freeSpinCountValue.setText(e.response.FreeSpinOutcome.Count + o.i18n.Game.slashSign + e.response.FreeSpinOutcome.TotalAwarded), (Z = Number(a.getFreeSpinTotal(e.response.PrizeOutcome))) >= 0 && n.lib._bonusWinValue.setText(i.formatBalance(Z)))
            }

            function L(e) {}

            function D() {
                n.lib._winValue.setText("")
            }

            function F(e) {
                U = Number(e.response.PromotionalFreeSpin["@count"]), U <= 0 && (U = 0), n.lib._pfsValue.setText(U + "")
            }

            function N() {
                return U
            }
            var G, j, U, W, H, z, V, X, J, Y = null,
                q = !1,
                $ = new s("_winValue"),
                K = new s("_bonusWinValue"),
                Q = 0,
                Z = 0,
                ee = !1,
                te = !1,
                ne = !1,
                re = 2,
                ie = 5,
                oe = new c,
                ae = !1,
                se = !1,
                le = !1;
            return t.subscribe("platformMsg/Kernel/System.Init", d), t.subscribe("platformMsg/ClientService/Game.Init", h), t.subscribe("onBeforeShowStage", p), t.subscribe("onBeforeRequest", O), t.subscribe("onResolveStage", E), t.subscribe("showRetriggerDialogFreeSpin", M), t.subscribe("onEnterNextStage", A), t.subscribe("onBeginNewGame", I), t.subscribe("platformMsg/ClientService/Account.Balances", y), t.subscribe("onStartGameInProgressStage", B), t.subscribe("onStartGameInProgressNextStage", L), t.subscribe("onBetControlButtonClicked", D), t.subscribe("rollUpWinValueStart", T), t.subscribe("rollUpWinValueStop", P), t.subscribe("RollUp.Stopped", C), t.subscribe("RollUp.Update", k), t.subscribe("rollUpBonusWinValueStart", S), t.subscribe("rollUpBonusWinValueStop", w), t.subscribe("onExitStage", R), t.subscribe("showRetriggerDialogFreeSpin", M), {
                getCurPRSNum: N
            }
        }), define("skbJet/component/phoenixReel/reelspin", ["com/pixijs/pixi", "skbJet/component/phoenixReel/animationLayer"], function(e, t) {
            return function(n, r) {
                function i(t) {
                    var n = new e.extras.AnimatedSprite([e.Texture.EMPTY]);
                    return n.zIndex = 1, n.visible = !1, n
                }

                function o(e) {
                    for (var t = r.StripInfo[re], n = -2; n < r.options.reels[e].symbolCount + 2; n++) {
                        var i = L[e][n + 2],
                            o = (Y[e] + t[e].length + n) % t[e].length,
                            a = Q.populationOutcomeParsed && Q.populationOutcomeParsed[e] && Q.populationOutcomeParsed[e][o] ? Q.populationOutcomeParsed[e][o] : t[e][o];
                        Q.symbolsMap && Q.symbolsMap[a] && (a = Q.symbolsMap[a]), Array.isArray(F[a].textures) ? (i.textures = F[a].textures, i.texture = i.textures[0], i.gotoAndStop(0)) : (i.textures = [F[a].textures], i.texture = i.textures[0], i.gotoAndStop(0)), i.zIndex = F[a].zOffset, i.alpha = F[a].opacity, i.visible = !0, i.position.x = r.options.pos.x + r.options.reels[e].x + F[a].xOffset, i.position.y = r.options.pos.y - J[e] + F[a].yOffset + r.options.reels[e].y + (K.symbolSlotHeight + K.symbolSpacingH) * n
                    }
                }

                function a(e) {
                    for (var t = r.StripInfo[Z.reelset], n = -2; n < r.options.reels[e].symbolCount + 2; n++) {
                        var i = D[e][n + 2],
                            o = t[e][(N[e] + t[e].length + n) % t[e].length];
                        Z.symbolsMap && Z.symbolsMap[o] && (o = Z.symbolsMap[o]), Array.isArray(F[o].textures) ? (i.textures = F[o].textures, i.texture = i.textures[0], i.gotoAndStop(0)) : (i.textures = [F[o].textures], i.texture = i.textures[0], i.gotoAndStop(0)), i.zIndex = F[o].zOffset, i.alpha = F[o].opacity, i.visible = !0, i.position.x = r.options.pos.x + r.options.reels[e].x + F[o].xOffset;
                        var a = z[e] + H[e];
                        q[e] > 0 && (a = -a), i.position.y = r.options.pos.y - a + r.options.reels[e].y + F[o].yOffset + (K.symbolSlotHeight + K.symbolSpacingH) * n
                    }
                }

                function s(e, t) {
                    for (var n = r.StripInfo[t.reelset], i = {
                            spriteRefs: []
                        }, o = -1; o < r.options.reels[e].symbolCount + 1; o++) {
                        var a = n[e][(B[e] + n[e].length + o) % n[e].length];
                        t.symbolsMap && t.symbolsMap[a] && (a = t.symbolsMap[a]), i.spriteRefs.push(a)
                    }
                    ee.show(e), ee.setViewData(e, i)
                }

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

                function u() {
                    for (var e = 0; e < r.options.reels.length; e++)
                        for (var t = -2; t < r.options.reels[e].symbolCount + 2; t++) {
                            var n = L[e][t + 2];
                            n.visible = !1
                        }
                }

                function c(e) {
                    for (var t = -2; t < r.options.reels[e].symbolCount + 2; t++) L[e][t + 2].visible = !1, D[e][t + 2].visible = !1
                }

                function d(e, t) {
                    if (R[t] === O.SPIN_SPINUP || R[t] === O.SPIN_FINDEND || R[t] === O.SPIN_SPINNING || R[t] === O.SPIN_PRESTOP || R[t] === O.SPIN_PRESTOP_EXTRA ? (X[t] = Math.floor((X[t] + q[t] * e + ne[t]) % ne[t]), Y[t] = Math.floor(X[t] / (K.symbolSlotHeight + K.symbolSpacingH)), J[t] = X[t] % (K.symbolSlotHeight + K.symbolSpacingH)) : (Y[t] = Math.floor(X[t] / (K.symbolSlotHeight + K.symbolSpacingH)), J[t] += q[t] * e), Q.populationOutcomeParsed && Q.populationOutcomeParsed[t]) {
                        var n = r.StripInfo[re];
                        Q.populationOutcomeParsed[t] && (q[t] > 0 ? (Y[t] - parseInt(Object.keys(Q.populationOutcomeParsed[t])[0]) + n[t].length) % n[t].length : (parseInt(Object.keys(Q.populationOutcomeParsed[t])[0]) - Y[t] + n[t].length) % n[t].length) > 2 * r.options.reels[t].symbolCount && (Q.populationOutcomeParsed[t] = void 0)
                    }
                    return o(t), !0
                }

                function h(e) {
                    return Math.abs(J[e]) > (K.symbolSlotHeight + K.symbolSpacingH) * (K.options.reels[e].symbolCount + 4)
                }

                function p(e) {
                    return 0 === z[e]
                }

                function f(e) {
                    return 0 === z[e] && (Z.stopBounce && Z.stopBounce.length && H[e] === Z.stopBounce[0] || !(Z.stopBounce && Z.stopBounce.length) && 0 === H[e])
                }

                function m(e, t) {
                    z[t] > 0 ? (z[t] -= Math.abs(q[t] * e), z[t] <= 0 && (H[t] += z[t], z[t] = 0)) : (H[t] -= Math.abs(q[t] * e), Z.stopBounce && Z.stopBounce.length ? H[t] <= Z.stopBounce[0] && (H[t] = Z.stopBounce[0], z[t] = 0) : H[t] <= 0 && (H[t] = 0, z[t] = 0)), a(t)
                }

                function g(e, t) {
                    var n = X[t] % (K.symbolSlotHeight + K.symbolSpacingH);
                    z[t] = n, H[t] = (K.symbolSlotHeight + K.symbolSpacingH) * (K.options.reels[t].symbolCount + 4), q[t] > 0 && (z[t] = K.symbolSlotHeight + K.symbolSpacingH - n, H[t] -= K.symbolSlotHeight + K.symbolSpacingH), N[t] = Z.stopLocations[t]
                }

                function b(e, t) {
                    I[e] = t
                }

                function _() {
                    I[0], R[0];
                    for (var e = 0; e < r.options.reels.length; e++) R[e] = I[e]
                }

                function y() {
                    v(A)
                }

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

                function x(e) {
                    e = Math.min(e, 100);
                    for (var t = 0; t < r.options.reels.length; t++) switch (L[t].sort(function(e, t) {
                        return e.ry > t.ry
                    }), D[t].sort(function(e, t) {
                        return e.ry > t.ry
                    }), R[t]) {
                        case O.INIT_NEEDED:
                            c(t), R[t] = O.SPIN_REST;
                        case O.SPIN_REST:
                            break;
                        case O.SPIN_INIT:
                            ee.hide(t), G[t] = Q.startTimer ? Q.startTimer[t] : 0, j[t] = Q.startTicks ? Q.startTicks[t] : 0, b(t, O.SPIN_WAITSTART);
                        case O.SPIN_WAITSTART:
                            j[t]--, G[t] -= e, Math.max(j[t], G[t]) <= 0 && (b(t, O.SPIN_FAUX_BOUNCE_START), V[t] = 0, ae && ae(t, "STARTED")), d(0, t);
                            break;
                        case O.SPIN_FAUX_BOUNCE_START:
                            Q.startBounce && V[t] < Q.startBounce.length ? (J[t] = q[t] > 0 ? -Q.startBounce[V[t]] : Q.startBounce[V[t]], V[t] += 1) : (J[t] = 0, V[t] = 0, b(t, O.SPIN_SPINUP)), o(t);
                            break;
                        case O.SPIN_SPINUP:
                            d(e, t) && (b(t, O.SPIN_SPINNING), (se += 1) === R.length && (ie && ie.call(), ie = null));
                            break;
                        case O.SPIN_SPINNING:
                            d(e, t), $ && (U[t] = Z.stopTimer[t], W[t] = Z.stopTicks[t], b(t, O.SPIN_PRESTOP));
                            break;
                        case O.SPIN_PRESTOP:
                            d(e, t), W[t]--, U[t] -= e, Math.max(W[t], U[t]) <= 0 && (Z.reelSpeed && Z.reelSpeed[t] && (q[t] = Z.reelSpeed[t] / 1e3), Z.extraStopTimer ? (U[t] = Z.extraStopTimer[t], b(t, O.SPIN_PRESTOP_EXTRA)) : b(t, O.SPIN_FINDEND));
                            break;
                        case O.SPIN_PRESTOP_EXTRA:
                            d(e, t), W[t]--, U[t] -= e, Math.max(W[t], U[t]) <= 0 && b(t, O.SPIN_FINDEND);
                            break;
                        case O.SPIN_FINDEND:
                            d(e, t), g(e, t), m(e, t), b(t, O.SPIN_STITCH);
                            break;
                        case O.SPIN_STITCH:
                            d(e, t), m(e, t), h(t) && b(t, O.SPIN_STOPPING);
                            break;
                        case O.SPIN_STOPPING:
                            m(e, t), p(t) && b(t, O.SPIN_STOPEND);
                            break;
                        case O.SPIN_STOPEND:
                            m(e, t), f(t) && (b(t, O.SPIN_FAUX_BOUNCE), H[t] = 0, V[t] = 0, ae && ae(t, "BOUNCE"));
                            break;
                        case O.SPIN_FAUX_BOUNCE:
                            Z.stopBounce && V[t] < Z.stopBounce.length ? (z[t] = Z.stopBounce[V[t]], V[t] += 1) : (z[t] = 0, V[t] = 0, b(t, O.SPIN_HANDBRAKE)), a(t);
                            break;
                        case O.SPIN_HANDBRAKE:
                            B[t] = N[t], b(t, O.SPIN_REST), s(t, Z), c(t), ae && ae(t, "STOPPED"), se -= 1, 0 === se && oe && (Q = Z, oe.call(), oe = null)
                    }
                    _(), y()
                }

                function S(e, t) {
                    Q = e, Q.reelset && (re = Q.reelset);
                    for (var n = 0; n < r.options.reels.length; n++) J[n] = 0, B[n] = e.stopLocations[n], X[n] = B[n] * (K.symbolSlotHeight + K.symbolSpacingH), b(n, O.SPIN_INIT), q[n] = e.reelSpeed[n] / 1e3;
                    if (Q.populationOutcome) {
                        var i = [];
                        for (n = 0; n < r.options.reels.length; n++) {
                            for (var o = {}, a = 0; a < K.options.reels[n].symbolCount; a++) Q.populationOutcome["L0C" + n + "R" + a] && (o[Q.stopLocations[n] + a] = Q.populationOutcome["L0C" + n + "R" + a]);
                            i.push(o)
                        }
                        Q.populationOutcomeParsed = i
                    } else Q.populationOutcomeParsed = void 0;
                    l(), se = 0, ie = t, $ = !1
                }

                function w(e, t, n) {
                    Z = e, oe = t, ae = n, se = R.length, $ = !0
                }

                function T(e) {
                    if (e.reelSpeed)
                        for (var t = 0; t < r.options.reels.length; t++) Z.reelSpeed[t] = e.reelSpeed[t], q[t] = e.reelSpeed[t] / 1e3
                }

                function P(e) {
                    re = e.reelset;
                    for (var t = 0; t < e.stopLocations.length; t++) B[t] = e.stopLocations[t], R[t] = O.SPIN_REST, I[t] = O.SPIN_REST, J[t] = 0, X[t] = B[t] * (K.symbolSlotHeight + K.symbolSpacingH), Y[t] = Math.floor(X[t] / (K.symbolSlotHeight + K.symbolSpacingH)), s(t, e);
                    l(), u(), y()
                }

                function C(e) {
                    P(Q), e && e()
                }

                function k() {
                    return ee.getLimitedAccess()
                }
                var O = {
                        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_PRESTOP_EXTRA: 22,
                        SPIN_FINDEND: 10,
                        SPIN_STITCH: 12,
                        SPIN_STOPPING: 14,
                        SPIN_STOPEND: 16,
                        SPIN_FAUX_BOUNCE: 18,
                        SPIN_HANDBRAKE: 99
                    },
                    E = new e.Container,
                    A = new e.Container,
                    M = [],
                    R = [],
                    I = [],
                    B = [],
                    L = [],
                    D = [],
                    F = {},
                    N = [],
                    G = [],
                    j = [],
                    U = [],
                    W = [],
                    H = [],
                    z = [],
                    V = [],
                    X = [],
                    J = [],
                    Y = [],
                    q = [],
                    $ = !1,
                    K = r,
                    Q = {},
                    Z = {};
                e.extras.AnimatedSprite || (e.extras.AnimatedSprite = e.extras.MovieClip);
                var ee, te = [],
                    ne = [],
                    re = "BaseGame";
                ! function() {
                    r.spriteOffsets || (r.spriteOffsets = {}), r.symbolNames.forEach(function(t) {
                        if (Array.isArray(r.spriteMap[t])) {
                            var n = [];
                            r.spriteMap[t].forEach(function(t) {
                                n.push(e.Texture.fromFrame(t))
                            }), F[t] = {
                                textures: n
                            }
                        } else F[t] = {
                            textures: e.Texture.fromFrame(r.spriteMap[t])
                        };
                        r.spriteOffsets[t] || (r.spriteOffsets[t] = {
                            x: 0,
                            y: 0,
                            z: 0,
                            o: 1
                        }), F[t].xOffset = r.spriteOffsets[t].x, F[t].yOffset = r.spriteOffsets[t].y, F[t].zOffset = r.spriteOffsets[t].z || 0, F[t].opacity = r.spriteOffsets[t].o || 1
                    }), ee = t(r, F), r.StripInfo && (re = Object.keys(r.StripInfo)[0], Object.keys(r.StripInfo).forEach(function(e) {
                        r.StripInfo[e][0].Stop && r.StripInfo[e].forEach(function(t, n) {
                            var i = [];
                            t.Stop.forEach(function(e, t) {
                                i.push(e["@symbolID"])
                            }), r.StripInfo[e][n] = i
                        })
                    }));
                    for (var n = 0, o = new e.Graphics, a = !0, s = r.options.reels[0].y, l = 0; l < r.options.reels.length; l++) r.options.reels[l].y !== s && (a = !1);
                    if (r.options.reels.length > 1 && a)
                        for (l = 1; l < r.options.reels.length; l++) K.options.reels[l - 1].symbolCount != K.options.reels[l].symbolCount && (a = !1);
                    var u = !0;
                    if (K.options.clip) K.options.clip[0].hasOwnProperty("reels") ? K.options.clip.forEach(function(t) {
                        o = new e.Graphics, o.beginFill(), o.drawRect(t.x, t.y, t.w, t.h), o.endFill(), o.zIndex = 1e3, t.reels.forEach(function(e) {
                            te[e] = o
                        }), E.addChild(o)
                    }) : (K.options.clip.forEach(function(e) {
                        o.beginFill(), o.drawRect(e.x, e.y, e.w, e.h), o.endFill()
                    }), o.zIndex = 1e3, E.addChild(o), te = [o]);
                    else if (a) o.beginFill(), o.drawRect(r.options.pos.x + r.options.reels[0].x, r.options.pos.y + r.options.reels[0].y, (K.symbolSlotWidth + K.symbolSpacingW) * r.options.reels.length - K.symbolSpacingW, (K.symbolSlotHeight + K.symbolSpacingH) * K.options.reels[0].symbolCount - K.symbolSpacingH), o.endFill(), o.zIndex = 1e3, E.addChild(o), te = [o];
                    else {
                        for (o.beginFill(), l = 0; l < r.options.reels.length; l++) o.drawRect(r.options.pos.x + r.options.reels[l].x, r.options.pos.y + r.options.reels[l].y, K.symbolSlotWidth + r.symbolSpacingW, (K.symbolSlotHeight + r.symbolSpacingH) * K.options.reels[l].symbolCount);
                        o.endFill(), o.zIndex = 1e3, E.addChild(o), te = [o]
                    }
                    for (te.length > 1 && (u = !1), l = 0; l < r.options.reels.length; l++) {
                        ne.push(r.StripInfo[re][l].length * (K.symbolSlotHeight + K.symbolSpacingH)), B.push(0), R.push(O.INIT_NEEDED), I.push(O.INIT_NEEDED);
                        for (var c = [i(l), i(l), i(l), i(l)], d = [i(l), i(l), i(l), i(l)], h = [], p = 0; p < r.options.reels[l].symbolCount; p++) c.push(i(l)), d.push(i(l)), M.push(i(l)), h.push(M[n]), n += 1;
                        L.push(c), D.push(d)
                    }
                    for (l = 0; l < r.options.reels.length; l++) L[l].forEach(function(e) {
                        u || (e.mask = te[l]), A.addChild(e)
                    });
                    for (l = 0; l < r.options.reels.length; l++) D[l].forEach(function(e) {
                        u || (e.mask = te[l]), A.addChild(e)
                    });
                    for (u && (A.mask = te[0]), E.addChild(A), l = 0; l < r.options.reels.length; l++) N.push(0), G.push(0), j.push(0), U.push(0), W.push(0), H.push(0), z.push(0), V.push(0), X.push(0), J.push(0), Y.push(0), q.push(-400);
                    E.addChild(ee.getContainer())
                }();
                var ie, oe, ae, se = 0;
                return {
                    spin: S,
                    resolve: w,
                    setReels: P,
                    cancelSpin: C,
                    getContainer: function() {
                        return E
                    },
                    process: x,
                    updateMotion: T,
                    getWinPresentationLayer: k
                }
            }
        }), define("game/ReelController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/phoenixReel/reelspin", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "game/WinlineAnimController", "game/winLinesInfo", "game/globalArray"], function(e, t, n, r, i, o, a, s, l, u) {
            function c() {
                return {
                    options: {
                        pos: {},
                        clip: K,
                        reels: [{
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }]
                    },
                    symbolNames: ["s01", "s02", "s03", "s04", "s05", "s06", "s07", "s08", "s09", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", "b01", "w01", "w02", "w03", "w04"],
                    spriteMap: {},
                    StripInfo: {},
                    locationsMap: be,
                    spriteOffsets: ge
                }
            }

            function d() {
                return {
                    options: {
                        pos: {},
                        clip: K,
                        reels: [{
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }, {
                            symbolCount: 4
                        }]
                    },
                    symbolNames: ["s01", "s02", "s03", "s04", "s05", "s06", "s07", "s08", "s09", "s10", "b01", "w01", "w02"],
                    spriteMap: {},
                    StripInfo: {},
                    locationsMap: be,
                    spriteOffsets: ge
                }
            }

            function h(e, t) {
                for (var n = [], r = e.PopulationOutcome, i = 0; i < r.length; i++)
                    if (r[i]["@name"] === t + ".Reels")
                        for (var o = 0; o < r[i].Entry.length; o++) n.push(parseInt(r[i].Entry[o]["@stripIndex"]));
                return n
            }

            function p(e) {
                var t = "FreeSpin" === e ? Y : J;
                t.symbolSlotWidth = a.formatFloat(n.lib._reels_0_0._currentStyle._width), t.symbolSlotHeight = a.formatFloat(n.lib._reels_0_0._currentStyle._height), t.options.pos.x = a.formatFloat(q), t.options.pos.y = a.formatFloat($);
                var r = a.formatFloat(n.lib._reels_0_1._currentStyle._left) - a.formatFloat(n.lib._reels_0_0._currentStyle._left) - t.symbolSlotWidth;
                t.symbolSpacingW = "mobile" !== V ? r + 1 : r, t.symbolSpacingH = a.formatFloat(n.lib._reels_1_0._currentStyle._top) - a.formatFloat(n.lib._reels_0_0._currentStyle._top) - t.symbolSlotHeight;
                for (var i = 0; i < t.options.reels.length; i++) t.options.reels[i].x = (t.symbolSpacingW + t.symbolSlotWidth) * i, t.options.reels[i].y = 0;
                for (var o = 0; o < t.symbolNames.length; o++) {
                    var s = t.symbolNames[o],
                        l = e;
                    we[s.toLowerCase()] ? t.spriteMap[s] = we[s.toLowerCase()] + l + "_0000" : t.spriteMap[s] = s.toLowerCase() + l + "_0000"
                }
                oe.StripInfo.forEach(function(e) {
                    t.StripInfo[e["@name"]] = e.Strip
                })
            }

            function f() {
                var e = m(),
                    t = "FreeSpin" === ie.OutcomeDetail.NextStage ? "FreeSpin" : "BaseGame";
                ne = t, "FreeSpin" === t ? (he.visible = !1, pe.visible = !0) : (he.visible = !0, pe.visible = !1), e.setReels({
                    reelset: t,
                    stopLocations: h(ie, "FreeSpin" === ie.OutcomeDetail.NextStage ? "FreeSpin" : "BaseGame")
                }), v(y(ne));
                var r = n.getTicker();
                se && (r.remove(se), se = null), se = function() {
                    e.process(r.elapsedMS)
                }, r.add(se)
            }

            function m() {
                return ne = "FreeSpin" === ie.OutcomeDetail.NextStage ? "FreeSpin" : "BaseGame", "FreeSpin" === ie.OutcomeDetail.NextStage ? de : ce
            }

            function g() {
                return ne = "FreeSpin" === ie.OutcomeDetail.NextStage ? "FreeSpin" : "BaseGame", "FreeSpin" === ie.OutcomeDetail.NextStage ? Y : J
            }

            function b(e) {
                V = e.serverConfig.paramGame.assetPack, "mobile" === V ? (K = [{
                    x: 0,
                    y: 0,
                    w: 476,
                    h: 280
                }], q = -.5, $ = 0) : "tablet" === V ? (K = [{
                    x: 0,
                    y: 0,
                    w: 918,
                    h: 536
                }], q = 0, $ = 0) : "desktop" === V && (K = [{
                    x: 0,
                    y: 0,
                    w: 918,
                    h: 536
                }], q = 0, $ = 0)
            }

            function _(e) {
                J = c(), Y = d(), ie = e.GameLogicResponse, oe = e.PaytableResponse, ae = ie.OutcomeDetail.NextStage, p("BaseGame"), p("FreeSpin"), ce = r(n.getPixiRenderer(), J), de = r(n.getPixiRenderer(), Y), he = ce.getContainer(), pe = de.getContainer(), n.lib._reelSetBG.pixiContainer.addChild(he), n.lib._reelSetBG.pixiContainer.addChild(pe);
                for (var i in n.lib._reelSetBG.sprites) n.lib._reelSetBG.sprites[i].show(!1);
                fe = ce.getWinPresentationLayer(), me = de.getWinPresentationLayer(), s.init({
                    basegame: {
                        config: J,
                        winPresentation: fe
                    },
                    freespin: {
                        config: Y,
                        winPresentation: me
                    },
                    currentStage: "FreeSpin" === ie.OutcomeDetail.NextStage ? "FreeSpin" : "BaseGame"
                }), Z = g(), f(), t.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.InitDone",
                    data: {
                        version: {
                            gameVersion: window._cacheFlag.gameVersion,
                            gleVersion: oe.VersionInfo ? oe.VersionInfo.GameLogicVersion : "???"
                        }
                    }
                }), ye = !0
            }

            function y(e) {
                for (var t = ie.PopulationOutcome, n = [], r = [], i = 0; i < t.length; i++)
                    if (t[i]["@name"] === e + ".Reels")
                        for (var o = 0; o < t[i].Entry.length; o++) n.push(t[i].Entry[o].Cell);
                for (var a = 0; a < n.length; a++)
                    for (var s = n[a], l = 0; l < s.length; l++) "s" === s[l]["#text"].charAt(0) && Number(s[l]["#text"].substring(1)) >= 18 && Number(s[l]["#text"].substring(1)) <= 27 && r.push(s[l]["@name"]), "w" === s[l]["#text"].charAt(0) && Number(s[l]["#text"].substring(1)) >= 3 && Number(s[l]["#text"].substring(1)) <= 4 && r.push(s[l]["@name"]);
                return r
            }

            function v(e) {
                for (var t = 0; t < e.length; t++) {
                    var r = "_reelsShade3_" + e[t].substring(5, 6) + "_" + e[t].substring(3, 4);
                    n.lib[r].gotoAndPlay("jackpotIn", .8, !1)
                }
            }

            function x() {
                t.publish("nextState")
            }

            function S(e) {
                if (ie = e.response, "BaseGame" === e.response.OutcomeDetail.NextStage || "FreeSpin" === e.response.OutcomeDetail.NextStage) {
                    ue.length > 0 && C(), Q = m(), Z = g();
                    var n = {
                        startTicks: [0, 0, 0, 0, 0],
                        startTimer: [0, 0, 0, 0, 0],
                        reelSpeed: [-2500, -2500, -2500, -2500, -2500],
                        reelset: ie.OutcomeDetail.NextStage,
                        stopLocations: h(ie, ne)
                    };
                    Q.spin(n, x), w()
                } else "BonusPicker" !== e.response.OutcomeDetail.NextStage && "CountryPicker" !== e.response.OutcomeDetail.NextStage && "BuoyBonus" !== e.response.OutcomeDetail.NextStage && "SubPicker2" !== e.response.OutcomeDetail.NextStage && "SubPicker3" !== e.response.OutcomeDetail.NextStage && "SubPicker1" !== e.response.OutcomeDetail.NextStage && "AcceptReject" !== e.response.OutcomeDetail.NextStage && "SpinToWinWheel" !== e.response.OutcomeDetail.NextStage && "SpinToWinAcceptReject" !== e.response.OutcomeDetail.NextStage || t.publish("nextState");
                "BaseGame" === e.response.OutcomeDetail.NextStage && (ye ? (i.cancelFade(16), i.play("BaseGame_ReelSpinLoop", 16, !0), ye = !1) : i.cancelFade(16)), _e = 0
            }

            function w() {
                for (var e = 0; e < 5; e++)
                    for (var t = 0; t < 4; t++) {
                        var r = "_reelsShade3_" + t + "_" + e,
                            i = "_reelsShade2_" + t + "_" + e;
                        n.lib[r].isPlaying && n.lib[r].stopPlay(), n.lib[i].isPlaying && n.lib[i].stopPlay(), n.lib[r].setImage("jackpotIn_0000"), n.lib[i].setImage("")
                    }
            }

            function T(e) {
                te = e, ie = e.response, "BaseGame" !== (ae = ie.OutcomeDetail.Stage) && "FreeSpin" !== ae || (X = D(ie), A(), Q.resolve({
                    stopTicks: [0, 10, 20, 30, 40],
                    stopTimer: L(Z.options.reels),
                    stopBounce: [-12, -18, -24, -28, -30, -27, -24, -12],
                    reelset: ae,
                    stopLocations: h(ie, ie.OutcomeDetail.Stage)
                }, P, k))
            }

            function P() {
                "FreeSpin" === ae && t.publish("nextState"), "BaseGame" === ae && ("BaseGame" === te.response.OutcomeDetail.NextStage ? (t.publish("beginLines", te), t.publish("beginBig", te)) : "BonusPicker" === te.response.OutcomeDetail.NextStage && t.publish("nextState"))
            }

            function C() {
                for (var e = 0; e < ue.length; e++) n.lib[ue[e]].setImage("wildSparkleEmpty")
            }

            function k(e, t) {
                "STOPPED" === t && (_e++, O(e), 5 === _e && i.fadeOut(16, 500)), "BOUNCE" === t && E(e)
            }

            function O(e) {
                if (ee[e]) {
                    var t = ee[e].indexOf("smrt") > -1 ? 22 : 9;
                    i.play(ee[e], t, !1)
                } else i.play("reelstop01", 9, !1)
            }

            function E(e) {
                if (0 === e) {
                    var t = F(X, 0, 4);
                    if ("false" !== t) {
                        var r = "_reelsShade3_" + t % 4 + "_0";
                        n.lib[r].onComplete = function() {
                            n.lib[r].isPlaying = !1
                        }, n.lib[r].gotoAndPlay("jackpotIn", .8, !1), n.lib[r].isPlaying = !0
                    }
                } else if (1 === e) {
                    var i = F(X, 4, 8);
                    if ("false" !== i) {
                        var o = "_reelsShade3_" + i % 4 + "_1";
                        n.lib[o].onComplete = function() {
                            n.lib[o].isPlaying = !1
                        }, n.lib[o].gotoAndPlay("jackpotIn", .8, !1), n.lib[o].isPlaying = !0
                    }
                } else if (2 === e) {
                    var a = F(X, 8, 12);
                    if ("false" !== a) {
                        var s = "_reelsShade3_" + a % 4 + "_2";
                        n.lib[s].onComplete = function() {
                            n.lib[s].isPlaying = !1
                        }, n.lib[s].gotoAndPlay("jackpotIn", .8, !1), n.lib[s].isPlaying = !0
                    }
                } else if (3 === e) {
                    var l = F(X, 12, 16);
                    if ("false" !== l) {
                        var u = "_reelsShade3_" + l % 4 + "_3";
                        n.lib[u].onComplete = function() {
                            n.lib[u].isPlaying = !1
                        }, n.lib[u].gotoAndPlay("jackpotIn", .8, !1), n.lib[u].isPlaying = !0
                    }
                } else if (4 === e) {
                    var c = F(X, 16, 20);
                    if ("false" !== c) {
                        var d = "_reelsShade3_" + c % 4 + "_4";
                        n.lib[d].onComplete = function() {
                            n.lib[d].isPlaying = !1
                        }, n.lib[d].gotoAndPlay("jackpotIn", .8, !1), n.lib[d].isPlaying = !0
                    }
                }
            }

            function A() {
                ee = [], re = !1, ie.AwardCapOutcome && "true" === ie.AwardCapOutcome.AwardCapExceeded && (re = !0);
                for (var e = 0; e < ie.PopulationOutcome.length; e++) {
                    var t = ie.PopulationOutcome[e];
                    if (t["@name"] === ae + ".Reels") {
                        for (var n = s.getScrappyWinSequence(), r = [], i = [], o = [], a = [], l = 0; l < n.length; l++) "line" === n[l].mode && (r = r.concat(n[l].boxLocations)), "jack" === n[l].mode && (i = i.concat(n[l].boxLocations));
                        for (var u = 0; u < r.length; u++) o.indexOf(r[u]) < 0 && o.push(r[u]);
                        for (var c = 0; c < i.length; c++) a.indexOf(i[c]) < 0 && a.push(i[c]);
                        for (var d = [], h = 0; h < t.Entry.length; h++)
                            for (var p = t.Entry[h].Cell, f = 0; f < p.length; f++) {
                                var m = p[f]["#text"],
                                    g = p[f]["@name"],
                                    b = parseInt(m.substring(1));
                                ("s" === m.charAt(0) && b >= 18 && b <= 27 || "w03" === m || "w04" === m) && (d[h] || d.push(h))
                            }
                        var _ = [],
                            y = !1,
                            v = 0;
                        for (v = 0; v < d.length - 1; v++)
                            if (d[v + 1] - d[v] == 1) _.push(d[v]), y = !0;
                            else {
                                if (y && (_.push(d[v]), y = !1), _.length >= 2) break;
                                _ = []
                            }
                        if (v === d.length - 1 && _.push(d[v]), _.length >= 2 && _[0] <= 2) {
                            ee[_[0]] = void 0;
                            for (var x = 1; x < _.length; x++) ee[_[x]] = "ProgressiveSmart0" + (x + 1)
                        }
                        for (var S = 0, h = 0; h < t.Entry.length; h++) {
                            for (var p = t.Entry[h].Cell, w = 2 === h || 3 === h || 4 === h, T = [], f = 0; f < p.length; f++) {
                                var m = p[f]["#text"],
                                    g = p[f]["@name"],
                                    b = parseInt(m.substring(1));
                                if ("w" === m.charAt(0) && (T.push(g), T.length >= 3)) {
                                    if (w && !re) {
                                        for (var P = !1, C = 0; C < T.length; C++) {
                                            var k = T[C];
                                            if (o.indexOf(k) > 0) {
                                                P = !0;
                                                break
                                            }
                                        }
                                        if (!P) continue
                                    }
                                    ee[h] = "WildSmart0" + (S + 1)
                                }
                            }
                            ee[h] === "WildSmart0" + (S + 1) && S++
                        }
                        if (d.length > 1)
                            for (var O = 0; O < ee.length; O++)
                                if (void 0 !== ee[O] && ee[O].indexOf("ProgressiveSmart") > -1) {
                                    var E = B(O, o, t);
                                    E && (ee[O] = "WildSmart0" + (O + 1));
                                    break
                                }
                        for (var A = [], L = {}, D = {}, F = 0; F < t.Entry.length; F++) {
                            var N = t.Entry[F].Cell;
                            L[F] = [];
                            for (var G = 0; G < N.length; G++) "b01" === N[G]["#text"] && L[F].push(N[G]["@name"])
                        }
                        for (var j in L)
                            if (L[j].length > 0) {
                                A[j] = !0;
                                for (var U = 0; U < L[j].length; U++) D[j] = R(L[j])
                            } else A[j] = !1;
                        var W;
                        for (var H in D) {
                            W = W || xe;
                            var z = D[H],
                                V = [];
                            z.forEach(function(e, t) {
                                V = V.concat(I(W, e, H)), t === z.length - 1 && (W = M(V))
                            }), W.length ? A[H] = !0 : A[H] = !1
                        }
                        A[0] && (ee[0] = "smrt1", A[1] && (ee[1] = "smrt2", A[2] && (ee[2] = "smrt3")))
                    }
                }
            }

            function M(e) {
                for (var t = [], n = 0; n < e.length; n++) t.indexOf(-1 === e[n]) && t.push(e[n]);
                return t
            }

            function R(e) {
                for (var t = [], n = 0; n < e.length; n++) t.push(be.indexOf(e[n]));
                return t
            }

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

            function B(e, t, n) {
                for (var r = !1, i = [], o = 2 === e || 3 === e || 4 === e, a = n.Entry[e].Cell, s = 0; s < a.length; s++) {
                    var l = a[s]["#text"],
                        u = a[s]["@name"];
                    if (("w01" === l || "w02" === l) && (i.push(u), i.length >= 3))
                        if (o)
                            for (var c = 0; c < i.length; c++) {
                                var d = i[c];
                                if (t.indexOf(d) > 0) {
                                    r = !0;
                                    break
                                }
                            } else r = !0
                }
                return r
            }

            function L(e) {
                for (var t = [], n = 300, r = 0; r < e.length; r++) n += le, t.push(n);
                return t
            }

            function D(e) {
                for (var t = [], n = e.PopulationOutcome, r = 0; r < n.length; r++)
                    if (n[r]["@name"] === e.OutcomeDetail.Stage + ".JackpotReels")
                        for (var i = n[r].Entry, o = 0; o < i.length; o++)
                            for (var a = 0; a < i[o].Cell.length; a++) t.push(i[o].Cell[a]["#text"]);
                return t
            }

            function F(e, t, n) {
                for (var r = t; r < n; r++)
                    if ("j01" === e[r]) return r;
                return "false"
            }

            function N(e) {
                "BaseGame" !== e.response.OutcomeDetail.NextStage && "FreeSpin" !== e.response.OutcomeDetail.NextStage || W()
            }

            function G(e) {
                if (i.stopAllChannel(), "BaseGame" === e.response.OutcomeDetail.NextStage || "FreeSpin" === e.response.OutcomeDetail.NextStage) {
                    m().cancelSpin()
                }
                ye = !0
            }

            function j() {
                f()
            }

            function U(e) {
                ae = e.response.OutcomeDetail.NextStage, "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && (f(), W()), "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (f(), W()), "BaseGame" !== e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (i.fadeOut(4, 1e3), n.getTimer().setTimeout(function() {
                    i.stopChannel(4), i.volume(4, 1)
                }, 1e3))
            }

            function W() {
                var e = "FreeSpin" === ie.OutcomeDetail.NextStage ? "FreeSpin" : "BaseGame";
                ne = e;
                var t = "FreeSpin" === e ? "freeSpinsReelFrame" : "basegameReelFrame";
                n.lib._reelSetFrame.updateCurrentStyle({
                    _background: {
                        _imagePlate: t
                    }
                })
            }

            function H(e) {
                U(e), "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && t.publish("nextState"), "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && t.publish("nextState")
            }

            function z() {
                i.stopChannel(16), ye = !0
            }
            for (var V, X, J, Y, q, $, K, Q, Z, ee, te, ne, re, ie = null, oe = null, ae = null, se = null, le = 300, ue = [], ce = null, de = null, he = null, pe = null, fe = null, me = null, ge = {
                    s01: {
                        x: 0,
                        y: 0
                    },
                    s02: {
                        x: 0,
                        y: 0
                    },
                    s03: {
                        x: 0,
                        y: 0
                    },
                    s04: {
                        x: 0,
                        y: 0
                    },
                    s05: {
                        x: 0,
                        y: 0
                    },
                    s06: {
                        x: 0,
                        y: 0
                    },
                    s07: {
                        x: 0,
                        y: 0
                    },
                    s08: {
                        x: 0,
                        y: 0
                    },
                    s09: {
                        x: 0,
                        y: 0
                    },
                    s10: {
                        x: 0,
                        y: 0
                    },
                    s11: {
                        x: 0,
                        y: 0
                    },
                    s12: {
                        x: 0,
                        y: 0
                    },
                    s13: {
                        x: 0,
                        y: 0
                    },
                    s14: {
                        x: 0,
                        y: 0
                    },
                    s15: {
                        x: 0,
                        y: 0
                    },
                    s16: {
                        x: 0,
                        y: 0
                    },
                    s17: {
                        x: 0,
                        y: 0
                    },
                    s18: {
                        x: 0,
                        y: 0
                    },
                    s19: {
                        x: 0,
                        y: 0
                    },
                    s20: {
                        x: 0,
                        y: 0
                    },
                    s21: {
                        x: 0,
                        y: 0
                    },
                    s22: {
                        x: 0,
                        y: 0
                    },
                    s23: {
                        x: 0,
                        y: 0
                    },
                    s24: {
                        x: 0,
                        y: 0
                    },
                    s25: {
                        x: 0,
                        y: 0
                    },
                    s26: {
                        x: 0,
                        y: 0
                    },
                    s27: {
                        x: 0,
                        y: 0
                    },
                    b01: {
                        x: 0,
                        y: 0
                    },
                    w01: {
                        x: 0,
                        y: 0
                    },
                    w02: {
                        x: 0,
                        y: 0
                    },
                    w03: {
                        x: 0,
                        y: 0
                    },
                    w04: {
                        x: 0,
                        y: 0
                    }
                }, be = ["L0C0R0", "L0C0R1", "L0C0R2", "L0C0R3", "L0C1R0", "L0C1R1", "L0C1R2", "L0C1R3", "L0C2R0", "L0C2R1", "L0C2R2", "L0C2R3", "L0C3R0", "L0C3R1", "L0C3R2", "L0C3R3", "L0C4R0", "L0C4R1", "L0C4R2", "L0C4R3"], _e = 0, ye = !1, ve = l.winLinesInfoDesktop().winlines, xe = [], Se = 0; Se < ve.length; Se++) xe.push(ve[Se].locations);
            var we = {
                s18: "s01",
                s19: "s02",
                s20: "s03",
                s21: "s04",
                s22: "s05",
                s23: "s06",
                s24: "s07",
                s25: "s08",
                s26: "s09",
                s27: "s10",
                w03: "w01",
                w04: "w02"
            };
            return u.addArrayInclude(), t.subscribe("onBeforeRequest", S), t.subscribe("onResolveStage", T), t.subscribe("onExitStage", z), t.subscribe("onBeforeShowStage", N), t.subscribe("onAbortNextStage", G), t.subscribe("onResetNextStage", j), t.subscribe("platformMsg/ClientService/Game.Init", _), t.subscribe("platformMsg/Kernel/System.Init", b), t.subscribe("onEnterNextStage", U), t.subscribe("onStartGameInProgressNextStage", H), t.subscribe("cleanAllMysteryWild", C), t.subscribe("stopReelsShade3Anim", w), {}
        }), define("game/PaytableHelpController", ["skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "game/AutoSpinController", "game/globalArray"], function(e, t, n, r, i, o, a) {
            function s(e) {
                for (var t = document.getElementsByTagName("article"), n = 0; n < t.length; n++) t[n].addEventListener("mousedown", l, !1);
                document.addEventListener("mousemove", l, !1), I = e.serverConfig.paramGame.assetPack
            }

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

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

            function c(e) {
                function t(e) {
                    "%" === n[e] ? e - 1 >= 0 && (n[e - 1] = "<no_wrap>" + n[e - 1].concat(" " + n[e]) + "</no_wrap>", n[e] = " ") : n[e] = "<no_wrap>" + n[e] + "</no_wrap>"
                }
                var n = e.split(" "),
                    r = [];
                return n.forEach(function(e, t) {
                    e.includes("%") && r.push(t)
                }), r.length > 0 && r.forEach(function(e) {
                    t(e)
                }), n.forEach(function(e, t) {
                    " " === e && n.splice(t, 1)
                }), n.join(" ")
            }

            function d() {
                v(), x(), w()
            }

            function h(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && y()
            }

            function p() {
                o.currentAutoSpinState() ? y() : _()
            }

            function f() {
                _()
            }

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

            function g() {
                y()
            }

            function b() {
                _()
            }

            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 y() {
                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 v() {
                var e = document.getElementById("gameRules").getElementsByTagName("header")[0],
                    t = document.getElementById("payTable").getElementsByTagName("header")[0];
                e.innerHTML = n.i18n.MenuCommand.howToPlay, t.innerHTML = n.i18n.Game.payTable
            }

            function x() {
                var e = n.i18n.paytableHTML.replace(/\"/g, "'");
                e = e.replace("<winlinediagrams/>", B), e = e.replace("{awardCap}", r.formatBalance(E)), e = e.replace("{RTP}", R), e = S(e), document.getElementById("paytableArticle").innerHTML = e;
                var t = n.i18n.helpHTML.replace(/\"/g, "'"),
                    i = document.getElementById("gameRulesArticle");
                t = S(t), i.innerHTML = t
            }

            function S(e) {
                return e = e.replace(/{w01b}/g, n.getImgObj("w01BaseGame_0000").outerHTML), e = e.replace(/{w02b}/g, n.getImgObj("w02BaseGame_0000").outerHTML), e = e.replace(/{w01f}/g, n.getImgObj("w01FreeSpin_0000").outerHTML), e = e.replace(/{w02f}/g, n.getImgObj("w02FreeSpin_0000").outerHTML), e = e.replace(/{b01}/g, n.getImgObj("b01BaseGame_0000").outerHTML), e = e.replace(/{s01b}/g, n.getImgObj("s01BaseGame_0000").outerHTML), e = e.replace(/{s02b}/g, n.getImgObj("s02BaseGame_0000").outerHTML), e = e.replace(/{s03b}/g, n.getImgObj("s03BaseGame_0000").outerHTML), e = e.replace(/{s04b}/g, n.getImgObj("s04BaseGame_0000").outerHTML), e = e.replace(/{s05b}/g, n.getImgObj("s05BaseGame_0000").outerHTML), e = e.replace(/{s06b}/g, n.getImgObj("s06BaseGame_0000").outerHTML), e = e.replace(/{s07b}/g, n.getImgObj("s07BaseGame_0000").outerHTML), e = e.replace(/{s08b}/g, n.getImgObj("s08BaseGame_0000").outerHTML), e = e.replace(/{s09b}/g, n.getImgObj("s09BaseGame_0000").outerHTML), e = e.replace(/{s10b}/g, n.getImgObj("s10BaseGame_0000").outerHTML), e = e.replace(/{b01}/g, n.getImgObj("b01BaseGame_0000").outerHTML), e = e.replace(/{b01f}/g, n.getImgObj("b01FreeSpin_0000").outerHTML), e = e.replace(/{s01f}/g, n.getImgObj("s01FreeSpin_0000").outerHTML), e = e.replace(/{s02f}/g, n.getImgObj("s02FreeSpin_0000").outerHTML), e = e.replace(/{s03f}/g, n.getImgObj("s03FreeSpin_0000").outerHTML), e = e.replace(/{s04f}/g, n.getImgObj("s04FreeSpin_0000").outerHTML), e = e.replace(/{s05f}/g, n.getImgObj("s05FreeSpin_0000").outerHTML), e = e.replace(/{s06f}/g, n.getImgObj("s06FreeSpin_0000").outerHTML), e = e.replace(/{s07f}/g, n.getImgObj("s07FreeSpin_0000").outerHTML), e = e.replace(/{s08f}/g, n.getImgObj("s08FreeSpin_0000").outerHTML), e = e.replace(/{s09f}/g, n.getImgObj("s09FreeSpin_0000").outerHTML), e = e.replace(/{s10f}/g, n.getImgObj("s10FreeSpin_0000").outerHTML), e = e.replace(/{jp}/g, n.getImgObj("JackpotStatic").outerHTML), e = e.replace(/{5x}/g, n.getImgObj("5xStatic").outerHTML), e = e.replace(/{3x}/g, n.getImgObj("3xStatic").outerHTML)
            }

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

            function T(e) {
                for (var t = document.getElementsByClassName("tab"), n = 0; n < t.length; n++) t[n].style.display = "none";
                "game" === e ? (document.getElementById("searchContainer").style.display = "none", i.play("OptionsClose", 2, !1)) : i.play("OptionsButton", 2, !1),
                    document.getElementById(e).style.display = "block", "payTable" === e ? document.getElementById("payTableTop").scrollIntoView(!1) : "gameRules" === e && document.getElementById("gameRulesTop").scrollIntoView(!1)
            }

            function P() {
                y()
            }

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

            function k(e) {
                "BaseGame" === e.response.OutcomeDetail.NextStage && _()
            }

            function O() {
                y()
            }
            var E, A, M, R, I, B = '<ul class="paylinetables clearfix"><li style="margin-bottom:20px"><div>1</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>2</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>3</div><div><table border="1"><tr><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>4</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>5</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>6</div><div><table border="1"><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>7</div><div><table border="1"><tr><td class="blue"></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>8</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>9</div><div><table border="1"><tr><td></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>10</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>11</div><div><table border="1"><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>12</div><div><table border="1"><tr><td></td><td></td><td></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>13</div><div><table border="1"><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>14</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>15</div><div><table border="1"><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>16</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>17</div><div><table border="1"><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>18</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>19</div><div><table border="1"><tr><td class="blue"></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>20</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>21</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>22</div><div><table border="1"><tr><td></td><td></td><td></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>23</div><div><table border="1"><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>24</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>25</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>26</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>27</div><div><table border="1"><tr><td class="blue"></td><td class="blue"></td><td></td><td class="blue"></td><td class="blue"></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>28</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td></td><td class="blue"></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>29</div><div><table border="1"><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>30</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td class="blue"></td><td class="blue"></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>31</div><div><table border="1"><tr><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>32</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td class="blue"></td><td class="blue"></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>33</div><div><table border="1"><tr><td></td><td class="blue"></td><td class="blue"></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>34</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td class="blue"></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>35</div><div><table border="1"><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>36</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td class="blue"></td><td class="blue"></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>37</div><div><table border="1"><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr></table></div></li><li style="margin-bottom:20px"><div>38</div><div><table border="1"><tr><td></td><td></td><td></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td class="blue"></td><td></td><td class="blue"></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>39</div><div><table border="1"><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr></table></div></li><li style="margin-bottom:20px"><div>40</div><div><table border="1"><tr><td></td><td></td><td></td><td class="blue"></td><td></td></tr><tr><td></td><td></td><td class="blue"></td><td></td><td class="blue"></td></tr><tr><td></td><td class="blue"></td><td></td><td></td><td></td></tr><tr><td class="blue"></td><td></td><td></td><td></td><td></td></tr></table></div></li></ul>';
            return a.addStringInclude(), e.subscribe("onResetNextStage", k), e.subscribe("onAbortNextStage", O), e.subscribe("platformMsg/Kernel/System.Init", s), e.subscribe("platformMsg/ClientService/Game.Init", u), e.subscribe("onBeforeShowStage", d), e.subscribe("onBeforeRequest", h), e.subscribe("onBeginNewGame", p), e.subscribe("AutoSpinController.autoSpinEnd", f), e.subscribe("platformMsg/ConsoleService/Game.Control", C), e.subscribe("onStartGameInProgressStage", P), e.subscribe("disableConsole", y), e.subscribe("enableConsole", _), e.subscribe("autoBtnClicked", g), e.subscribe("autoBtnCancel", b), {
                showOne: T
            }
        }), define("game/StatusBarController", ["com/pixijs/pixi", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/currencyHelper/currencyHelper", "game/BetController", "skbJet/component/pixiResourceLoader/pixiResourceLoader"], function(e, t, n, r, i, o, a) {
            function s(e) {
                y = e.serverConfig.presenttype, v = e.serverConfig.channel, x = e.serverConfig.paramGame.assetPack
            }

            function l() {
                r.lib._logoMessage3.show(!1), r.lib._freegameLogo.show(!1), u(a.i18n.Game.statusInfo._logoMessage3, "_logoMessage3_text")
            }

            function u(t, n) {
                for (var o = {
                        fontFamily: "cooperblackloccur",
                        fontSize: "mobile" === x ? 12 : 18,
                        fontWeight: 600,
                        fill: ["#ffffff"],
                        dropShadow: !0,
                        dropShadowColor: "rgba(0,0,0,1)",
                        dropShadowBlur: w,
                        dropShadowDistance: T,
                        stroke: "#0066ff",
                        strokeThickness: P
                    }, a = {
                        fontFamily: o.fontFamily,
                        fontSize: "_logoMessage3_text" === n ? 1.8 * o.fontSize : o.fontSize,
                        fontWeight: o.fontWeight,
                        fill: o.fill,
                        dropShadow: o.dropShadow,
                        dropShadowColor: o.dropShadowColor,
                        dropShadowBlur: o.dropShadowBlur,
                        dropShadowDistance: o.dropShadowDistance,
                        stroke: o.stroke,
                        strokeThickness: o.strokeThickness
                    }, s = c(t), l = d(s, a, n), u = new e.Container, h = 0; h < l.length; h++) u.addChild(l[h]);
                u.x = i.formatFloat(r.lib[n].data._style._width / 2) - i.formatFloat(u.width / 2), r.lib[n].pixiContainer.removeChildren(), r.lib[n].pixiContainer.addChild(u), r.lib[n].show(!0)
            }

            function c(e) {
                for (var t = [], n = 0, r = 0; r < e.length; r++) {
                    if ("{" === e.charAt(r)) {
                        if (0 === r) {
                            n = r + 1;
                            continue
                        }
                        t.push({
                            type: "text",
                            value: e.substring(n, r)
                        }), n = r + 1
                    }
                    if ("}" === e.charAt(r) && (t.push({
                            type: "image",
                            value: e.substring(n, r)
                        }), n = r + 1, r === e.length - 1)) break;
                    r === e.length - 1 && t.push({
                        type: "text",
                        value: e.substring(n)
                    })
                }
                return t
            }

            function d(t, n, o) {
                for (var a, s = [], l = 0, u = 0; u < t.length; u++) {
                    if ("image" === t[u].type) {
                        var c = "";
                        "b01BaseGame_0000" === t[u].value && (c = "b01BaseGame_0000"), "gameIcons_jackpotAnim_0000" === t[u].value && (c = "gameIcons_jackpotAnim_0000");
                        var d = e.utils.TextureCache[c];
                        a = new e.Sprite(d);
                        var h = .5;
                        "b01BaseGame_0000" === t[u].value ? (a.scale._x = a.scale._y = .4, h = .5) : "gameIcons_jackpotAnim_0000" === t[u].value && (a.scale._x = a.scale._y = .4, h = .05), a.y = -i.formatFloat(i.formatFloat(r.lib[o].pixiContainer.height) * h)
                    } else a = new e.Text, a.text = t[u].value, a.style = n;
                    a.x = l, l += a.width + 5, s.push(a)
                }
                return s
            }

            function h(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage ? r.lib._logoMessage3.show(!1) : "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage ? (r.lib._freegameLogo.show(!0), r.lib._gameLogo.show(!1)) : "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? (r.lib._freegameLogo.show(!1), r.lib._gameLogo.show(!0)) : "SubPicker2" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? r.lib._gameLogo.show(!0) : "SubPicker3" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? r.lib._gameLogo.show(!0) : "AcceptReject" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage ? r.lib._gameLogo.show(!0) : "BuoyBonus" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && r.lib._gameLogo.show(!0)
            }

            function p(e) {
                S = e, "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage ? (r.lib._freegameLogo.show(!0), r.lib._gameLogo.show(!1)) : "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && (r.lib._freegameLogo.show(!0), r.lib._gameLogo.show(!1))
            }

            function f(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage || "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage || "FreeSpin" === e.response.OutcomeDetail.Stage && e.response.OutcomeDetail.NextStage
            }

            function m(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && (r.lib._gameLogo.show(!1), r.lib._logoMessage3.show(!0))
            }

            function g(e) {
                ("BonusPicker" === e.response.OutcomeDetail.Stage || "FreeSpin" === e.response.OutcomeDetail.Stage) && e.response.OutcomeDetail.NextStage
            }

            function b() {
                "desktop" !== x && S && ("BonusPicker" === S.response.OutcomeDetail.Stage && "FreeSpin" === S.response.OutcomeDetail.NextStage || "FreeSpin" === S.response.OutcomeDetail.Stage && S.response.OutcomeDetail.NextStage)
            }

            function _(e) {
                S = e
            }
            var y, v, x, S, w = 1,
                T = 3,
                P = 3;
            return t.subscribe("platformMsg/ClientService/Game.Init", l), t.subscribe("platformMsg/Kernel/System.Init", s), t.subscribe("onEnterNextStage", h), t.subscribe("onStartGameInProgressStage", p), t.subscribe("onStartGameInProgressNextStage", f), t.subscribe("onResetNextStage", g), t.subscribe("onExitStage", m), t.subscribe("onBeforeShowStage", _), t.subscribe("audioPlayer.playerSelectedWhenGameLaunch", b), {}
        }), define("game/MJPController", ["skbJet/component/gameMsgBus/GameMsgBus", "com/pixijs/pixi", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/pixiResourceLoader/pixiResourceLoader"], function(e, t, n, r, i) {
            function o(e) {
                p = e.serverConfig.paramGame.assetPack
            }

            function a(e) {
                for (var t = e.PaytableResponse.PrizeInfo, n = 0; n < t.length; n++)
                    if ("PrizeInfoJackpot" === t[n]["@name"]) {
                        f = t[n].Prize.PrizePay;
                        break
                    }
                l(i.i18n.Game.jackpot.jackpotMeterLeftLable, "_jackpotMeterLeftLable"), l(i.i18n.Game.jackpot.jackpotMeterMiddleLable, "_jackpotMeterMiddleLable"), l(i.i18n.Game.jackpot.jackpotMeterRightLable, "_jackpotMeterRightLable"), r.lib._jackpotMeterMiddleValue.autoFontFitText = !0, r.lib._jackpotMeterLeftValue.autoFontFitText = !0, r.lib._jackpotMeterRightValue.autoFontFitText = !0
            }

            function s(e) {
                for (var t = 0; t < f.length; t++) switch (f[t]["@count"]) {
                    case "5":
                        r.lib._jackpotMeterMiddleValue.setText(n.formatBalance(e * Number(f[t]["@value"])));
                        break;
                    case "4":
                        r.lib._jackpotMeterLeftValue.setText(n.formatBalance(e * Number(f[t]["@value"])));
                        break;
                    case "3":
                        r.lib._jackpotMeterRightValue.setText(n.formatBalance(e * Number(f[t]["@value"])))
                }
            }

            function l(e, i) {
                var o = {
                    fontFamily: "cooperblackloccur",
                    fontSize: "mobile" === p ? 28 : 45,
                    fontWeight: 500,
                    fill: ["#93ff47", "#81fa28", "#2b7c0c"],
                    dropShadow: !0,
                    dropShadowColor: "rgba(0,0,0,1)",
                    dropShadowBlur: m,
                    dropShadowDistance: g,
                    stroke: "#000000",
                    strokeThickness: b
                };
                switch (i) {
                    case "_jackpotMeterRightLable":
                        o.fill = ["#ffffff", "#a8ff69", "#3cc408"];
                        break;
                    case "_jackpotMeterMiddleLable":
                        o.fill = ["#ffffff", "#fffd69", "#d2d22c"], o.fontSize = "mobile" === p ? 33 : 50;
                        break;
                    case "_jackpotMeterLeftLable":
                        o.fill = ["#ffffff", "#9dfffb", "#00fef5"]
                }
                for (var a = {
                        fontFamily: o.fontFamily,
                        fontSize: o.fontSize,
                        fontWeight: o.fontWeight,
                        fill: o.fill,
                        dropShadow: o.dropShadow,
                        dropShadowColor: o.dropShadowColor,
                        dropShadowBlur: o.dropShadowBlur,
                        dropShadowDistance: o.dropShadowDistance,
                        stroke: o.stroke,
                        strokeThickness: o.strokeThickness
                    }, s = u(e), l = r.lib[i].data._style._width, d = c(l, s, a), h = new t.Container, f = 0; f < d.length; f++) h.addChild(d[f]);
                h.x = n.formatFloat(r.lib[i].data._style._width / 2) - n.formatFloat(h.width / 2) + 3, r.lib[i].pixiContainer.removeChildren(), r.lib[i].pixiContainer.addChild(h), r.lib[i].show(!0)
            }

            function u(e) {
                for (var t = [], n = 0; n < e.length; n++) n === e.length - 1 && t.push({
                    type: "text",
                    value: e.substring(0)
                });
                return t
            }

            function c(e, n, r) {
                for (var i, o = [], a = 0, s = 0; s < n.length; s++) {
                    i = new t.Text, i.text = n[s].value, i.style = r, i.x = a;
                    for (var l = Number(r.fontSize); i.width > e && !(--l < 12);) i.style.fontSize = l;
                    a += i.width, o.push(i)
                }
                return o
            }

            function d(e) {
                "FreeSpin" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && r.lib._jackpotLayer.show(!0)
            }

            function h(e) {
                "BonusPicker" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage ? r.lib._jackpotLayer.show(!1) : "FreeSpin" === e.response.OutcomeDetail.Stage && "FreeSpin" === e.response.OutcomeDetail.NextStage && r.lib._jackpotLayer.show(!1)
            }
            var p, f = [],
                m = 1,
                g = 1,
                b = 3;
            return e.subscribe("onEnterNextStage", d), e.subscribe("platformMsg/ClientService/Game.Init", a), e.subscribe("platformMsg/Kernel/System.Init", o), e.subscribe("onStartGameInProgressStage", h), e.subscribe("updateJackpotMeter", s), {}
        }), define("game/BonusPicker", ["com/pixijs/pixi", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/componentCRDC/gladRenderer/gladButton", "skbJet/component/gladPixiRenderer/Sprite", "game/BetController", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/RollUp"], function(e, t, n, r, i, o, a, s, l, u) {
            function c(e) {
                G = e.serverConfig.paramGame.assetPack, e && e.gameConfig && ($ = !!e.gameConfig.rgPresentation), z = Number(e.serverConfig.denomamount)
            }

            function d(e) {
                l.lib._bonusPickerBG.show(!1), l.lib._bonusPickerLogo.show(!1), l.lib._bonusPickerTitle.show(!1), l.lib._bonusPickerTitle1.show(!1), l.lib._bonusPickerCell.show(!1), l.lib._bonusPickerCellLable.show(!1), l.lib._bonusPickerWinMeter.show(!1), l.lib._bonusPickerCellNetwork.show(!1), l.lib._bonusPickerCellLeftMask.show(!1), l.lib._bonusPickerCellRightMask.show(!1), l.lib._bonusPickerCellLeftResultMask.show(!1), l.lib._bonusPickerCellRightResultMask.show(!1), h()
            }

            function h() {
                ["_bonusPickerTitle", "_freeSpinsAwarded", "_bonusPickerCellLableLeft0", "_bonusPickerCellLableLeft1", "_bonusPickerCellLableRight0", "_bonusPickerCellLableRight1", "_bonusPickerCellLeftResult", "_bonusPickerCellRightResult", "_bonusPickerCellLeftResultMask", "_bonusPickerCellRightResultMask", "_bonusPickerWinLable"].forEach(function(e) {
                    var n = " ";
                    switch (e) {
                        case "_bonusPickerWinLable":
                            n = t.i18n.Game.consoleWin;
                            break;
                        case "_bonusPickerTitle":
                            n = t.i18n.Game.BonusPicker.title;
                            break;
                        case "_freeSpinsAwarded":
                            n = t.i18n.Game.BonusPicker.title1;
                            break;
                        case "_bonusPickerCellLableLeft0":
                            n = t.i18n.Game.BonusPicker.labelLeft0;
                            break;
                        case "_bonusPickerCellLableLeft1":
                            n = t.i18n.Game.BonusPicker.labelLeft1;
                            break;
                        case "_bonusPickerCellLableRight0":
                            n = t.i18n.Game.BonusPicker.labelRight0;
                            break;
                        case "_bonusPickerCellLableRight1":
                            n = t.i18n.Game.BonusPicker.labelRight1
                    }
                    l.lib[e].autoFontFitText = !0, l.lib[e].setText(n), "_bonusPickerWinLable" !== e && (l.lib[e].pixiContainer.$text.style.dropShadow = !0, l.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", l.lib[e].pixiContainer.$text.style.dropShadowDistance = Y, l.lib[e].pixiContainer.$text.style.dropShadowBlur = q, l.lib[e].pixiContainer.$text.style.padding = 20)
                })
            }

            function p() {
                l.lib._bonusPickerCellNetwork.show(!0), l.lib._bonusPickerCellNetwork.gotoAndPlay("networkActivity", .2, !0)
            }

            function f() {
                l.lib._bonusPickerCellNetwork.stopPlay(), l.lib._bonusPickerCellNetwork.show(!1)
            }

            function m() {
                l.animMap._bonusPickerBG_in_Anima._onComplete = function() {
                    r.publish("displayOrHideBasePage", !1), v()
                }, l.lib._bonusPickerBG.show(!0), l.animMap._bonusPickerBG_in_Anima.play(1), n.play("SummaryIn", 5, !1)
            }

            function g(e) {
                X && (X = !1, S(), W = e, p(), _(), r.publish("nextState"), l.lib._bonusPickerTitle.show(!1), l.lib._bonusPickerTitle1.show(!1))
            }

            function b(e) {
                X && (X = !1, S(), W = e, p(), _(), r.publish("nextState"), l.lib._bonusPickerTitle.show(!1), l.lib._bonusPickerTitle1.show(!1))
            }

            function _() {
                j.enable(!1), U.enable(!1)
            }

            function y() {
                X = !0, j = new i(l.lib._bonusPickerCellLeft, "picksBonusBtnLeft", {
                    avoidMultiTouch: !0
                }), j.click(function() {
                    n.play("Picker_PickBonus", 11, !1), g(j.sprite.data._name)
                }), j.enable(!0), U = new i(l.lib._bonusPickerCellRight, "picksBonusBtnRight", {
                    avoidMultiTouch: !0
                }), U.click(function() {
                    n.play("Picker_PickBonus", 11, !1), b(U.sprite.data._name)
                }), U.enable(!0)
            }

            function v() {
                l.lib._bonusPickerCellLeftMask.show(!1), l.lib._bonusPickerCellRightMask.show(!1), l.lib._bonusPickerCellLeftResultMask.show(!1), l.lib._bonusPickerCellRightResultMask.show(!1), l.lib._bonusPickerWinMeter.show(!0), l.lib._bonusPickerWinValue.setText(""), l.lib._bonusPickerLogo.show(!0), l.lib._bonusPickerTitle.show(!0), l.lib._bonusPickerTitle1.show(!1), l.lib._bonusPickerCellLable.show(!0), l.getTimer().setTimeout(function() {
                    l.lib._bonusPickerCell.show(!0), l.animMap._bonusPickerCellLeft_Anim1._onComplete = function() {
                        x(), y()
                    }, l.animMap._bonusPickerCellLeft_Anim1.play(1), l.animMap._bonusPickerCellRight_Anim1.play(1), J && (n.volume(4, .3), n.play("BonusGame_RockLobsterLoop", 4, !0))
                }, 200)
            }

            function x() {
                l.animMap._bonusPickerCellLeft_Anim2._onComplete = function() {
                    l.animMap._bonusPickerCellRight_Anim2._onComplete = function() {
                        x()
                    }, l.animMap._bonusPickerCellRight_Anim2.play(1)
                }, l.animMap._bonusPickerCellLeft_Anim2.play(1)
            }

            function S() {
                l.animMap._bonusPickerCellLeft_Anim2.stop(), l.animMap._bonusPickerCellRight_Anim2.stop(), l.animMap._bonusPickerCellLeft_Anim2._onComplete = null, l.animMap._bonusPickerCellRight_Anim2._onComplete = null, l.animMap._bonusPickerCellLeft_Anim2.updateStyleToTime(0), l.animMap._bonusPickerCellRight_Anim2.updateStyleToTime(0)
            }

            function w(e) {
                H = e, "BonusPicker" !== e.response.OutcomeDetail.Stage || "FreeSpin" !== e.response.OutcomeDetail.NextStage && "CountryPicker" !== e.response.OutcomeDetail.NextStage || (f(), "FreeSpin" === e.response.OutcomeDetail.NextStage && (l.lib._5.setText(e.response.FreeSpinOutcome.Awarded), l.lib._bonusPickerTitle1.show(!0), l.animMap._bonusPickerTitle1_Anim.play(1)), T(), C(e), l.lib[W + "Result"].show(!0), n.stopChannel(11), n.play("Picker_Reward", 11, !1), "_bonusPickerCellLeft" === W ? l.lib._bonusPickerCellRightMask.show(!0) : "_bonusPickerCellRight" === W && l.lib._bonusPickerCellLeftMask.show(!0), P(W), O(e))
            }

            function T() {
                l.lib._bonusPickerCellLeftResult.show(!1), l.lib._bonusPickerCellRightResult.show(!1), l.lib._bonusPickerCellLeftResultMask.show(!1), l.lib._bonusPickerCellRightResultMask.show(!1)
            }

            function P(e) {
                l.lib._bonusPickerCellLeftResult.show(!0), l.lib._bonusPickerCellRightResult.show(!0), "_bonusPickerCellLeft" === e ? l.lib._bonusPickerCellRightResultMask.show(!0) : "_bonusPickerCellRight" === e && l.lib._bonusPickerCellLeftResultMask.show(!0)
            }

            function C(e) {
                for (var n = e.response.PickerOutcome.Layer.Pick, r = 0; r < n.length; r++)
                    if ("L0C0R0" === n[r]["@name"]) {
                        for (var i = 0; i < n[r].Feature.length; i++)
                            if ("credits" === n[r].Feature[i]["@type"]) {
                                var o = s.formatBalance(Number(n[r].Feature[i]["@value"]) * a.getCurDenomamount() * a.getCurBetPerPattern());
                                l.lib._bonusPickerCellLeftResult.setText(t.i18n.Game.balankSpace1 + o + t.i18n.Game.balankSpace1), l.lib._bonusPickerCellLeftResultMask.setText(t.i18n.Game.balankSpace1 + o + t.i18n.Game.balankSpace1)
                            }
                    } else if ("L0C1R0" === n[r]["@name"])
                    for (var u = 0; u < n[r].Feature.length; u++)
                        if ("credits" === n[r].Feature[u]["@type"]) {
                            var c = s.formatBalance(Number(n[r].Feature[u]["@value"]) * a.getCurDenomamount() * a.getCurBetPerPattern());
                            l.lib._bonusPickerCellRightResult.setText(t.i18n.Game.balankSpace1 + c + t.i18n.Game.balankSpace1), l.lib._bonusPickerCellRightResultMask.setText(t.i18n.Game.balankSpace1 + c + t.i18n.Game.balankSpace1)
                        }
            }

            function k(e) {
                return parseInt(e.response.PatternSliderInput.BetPerPattern) * parseInt(e.response.PatternSliderInput.PatternsBet)
            }

            function O(e) {
                var t = a.getBonusPickerWin(e),
                    n = k(e),
                    i = t / z;
                $ && i / n <= 1 ? (l.lib._bonusPickerWinValue.setText(s.formatBalance(t)), r.publish("RollUp.Stopped", {
                    spriteName: "_bonusPickerWinValue"
                })) : V.start(0, t, {
                    rollUpSound: "BonusR",
                    rollUpTermSound: "Term",
                    rollUpSoundChannel: 10
                })
            }

            function E(e) {
                e && "_bonusPickerWinValue" === e.spriteName && (r.publish("nextState"), l.getTimer().setTimeout(function() {
                    "FreeSpin" === H.response.OutcomeDetail.NextStage ? M() : "CountryPicker" === H.response.OutcomeDetail.NextStage && A()
                }, 2e3))
            }

            function A() {
                l.lib._bonusPickerCellLeftResult.setText(t.i18n.Game.balankSpace2), l.lib._bonusPickerCellRightResult.setText(t.i18n.Game.balankSpace2), l.lib._bonusPickerCellLeftResultMask.setText(t.i18n.Game.balankSpace2), l.lib._bonusPickerCellRightResultMask.setText(t.i18n.Game.balankSpace2), r.publish("nextState"), l.lib._bonusPickerCell.show(!1), l.lib._bonusPickerCellLable.show(!1)
            }

            function M() {
                l.lib._bonusPickerCellLeftResult.setText(t.i18n.Game.balankSpace2), l.lib._bonusPickerCellRightResult.setText(t.i18n.Game.balankSpace2), l.lib._bonusPickerCellLeftResultMask.setText(t.i18n.Game.balankSpace2), l.lib._bonusPickerCellRightResultMask.setText(t.i18n.Game.balankSpace2), l.lib._bonusPickerLogo.show(!1), l.lib._bonusPickerCell.show(!1), l.lib._bonusPickerCellLable.show(!1), l.lib._bonusPickerTitle.show(!1), l.lib._bonusPickerTitle1.show(!1), l.lib._bonusPickerWinMeter.show(!1), l.getTimer().setTimeout(function() {
                    l.animMap._bonusPickerBG_out_Anima._onComplete = function() {
                            l.lib._bonusPickerBG.show(!1)
                        }, l.animMap._bonusPickerBG_out_Anima.play(1),
                        n.play("SummaryOut", 5, !1)
                }, 500), r.publish("nextState"), r.publish("displayOrHideBasePage", !0), l.lib._jackpotLayer.show(!1)
            }

            function R(e) {
                if ("BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage) {
                    var t;
                    "_bonusPickerCellLeft" === W ? t = "L0C0R0" : "_bonusPickerCellRight" === W && (t = "L0C1R0"), r.publish("toPlatform", {
                        channel: "Game",
                        topic: "Game.PlayData",
                        data: {
                            ActionInput: {
                                Action: "play"
                            },
                            PatternSliderInput: {
                                BetPerPattern: a.getCurBetPerPattern(),
                                PatternsBet: a.getCurPatternsBet()
                            },
                            PickerInput: {
                                Pick: {
                                    "@name": t
                                }
                            }
                        }
                    }), r.publish("nextState")
                }
            }

            function I(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && m()
            }

            function B(e) {
                "BaseGame" === e.response.OutcomeDetail.Stage && "BonusPicker" === e.response.OutcomeDetail.NextStage && (l.lib._bonusPickerBG.show(!0), v(), r.publish("displayOrHideBasePage", !1), r.publish("nextState"))
            }

            function L(e) {}

            function D(e) {
                l.lib._bonusPickerCellLeft.setImage("picksBonusBtnLeft"), l.lib._bonusPickerCellRight.setImage("picksBonusBtnRight");
                var t = e.response.OutcomeDetail.Stage,
                    r = e.response.OutcomeDetail.NextStage;
                "BaseGame" === t && "BonusPicker" === r && (f(), x(), y(), l.lib._bonusPickerTitle.show(!0), l.lib._bonusPickerTitle1.show(!1)), "BaseGame" !== r && n.play("BonusGame_RockLobsterLoop", 4, !0)
            }

            function F() {
                J = !0, "desktop" !== G && "BaseGame" === H.response.OutcomeDetail.Stage && "BonusPicker" === H.response.OutcomeDetail.NextStage ? n.play("BonusGame_RockLobsterLoop", 4, !0) : "BonusPicker" === H.response.OutcomeDetail.Stage && "CountryPicker" === H.response.OutcomeDetail.NextStage && n.play("BonusGame_RockLobsterLoop", 4, !0)
            }

            function N(e) {
                H = e
            }
            var G, j, U, W, H, z, V = new u("_bonusPickerWinValue"),
                X = !0,
                J = !1,
                Y = 2,
                q = 6,
                $ = !1;
            return r.subscribe("audioPlayer.playerSelectedWhenGameLaunch", F), r.subscribe("platformMsg/ClientService/Game.Init", d), r.subscribe("platformMsg/Kernel/System.Init", c), r.subscribe("onEnterNextStage", I), r.subscribe("onMakeRequest", R), r.subscribe("onBeforeShowStage", N), r.subscribe("onResolveStage", w), r.subscribe("RollUp.Stopped", E), r.subscribe("onStartGameInProgressStage", B), r.subscribe("onStartGameInProgressNextStage", L), r.subscribe("onResetNextStage", D), {}
        }), define("game/CountryPicker", ["com/pixijs/pixi", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/componentCRDC/gladRenderer/gladButton", "skbJet/component/gladPixiRenderer/Sprite", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/BetController", "skbJet/component/currencyHelper/currencyHelper", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer"], function(e, t, n, r, i, o, a, s, l) {
            function u(e) {
                W = e, F = e.serverConfig.paramGame.assetPack
            }

            function c(e) {
                W = e, o.lib._countryPickerTitle1.show(!1), o.lib._countryPickerTitle2.show(!1), o.lib._countryPickerCell.show(!1), o.lib._countryPickerCellLable.show(!1), o.lib._countryPickerCellNetwork.show(!1), o.lib._countryPickerCellLeftMask.show(!1), o.lib._countryPickerCellMiddleMask.show(!1), o.lib._countryPickerCellRightMask.show(!1), o.lib._countryPickerTip.show(!1), o.lib._countryPickerCellLeftResultDown.show(!1), o.lib._countryPickerCellMiddleResultDown.show(!1), o.lib._countryPickerCellRightResultDown.show(!1), d()
            }

            function d() {
                ["_countryPickerTitle1", "_countryPickerTitle2", "_countryPickerCellLeftResultUp", "_countryPickerCellMiddleResultUp", "_countryPickerCellRightResultUp", "_countryPickerCellLeftResultDown", "_countryPickerCellMiddleResultDown", "_countryPickerCellRightResultDown", "_countryPickerCellLeftResultDownMark", "_countryPickerCellMiddleResultDownMark", "_countryPickerCellRightResultDownMark", "_countryPickerTip", "_countryPickerCellLableLeft", "_countryPickerCellLableMiddle", "_countryPickerCellLableRight"].forEach(function(e) {
                    o.lib[e].autoFontFitText = !0;
                    var n = " ";
                    switch (e) {
                        case "_countryPickerTitle1":
                            n = t.i18n.Game.CountryPicker.title1;
                            break;
                        case "_countryPickerTitle2":
                            n = t.i18n.Game.CountryPicker.title2;
                            break;
                        case "_countryPickerTip":
                            n = t.i18n.Game.CountryPicker.tip;
                            break;
                        case "_countryPickerCellLableLeft":
                            n = t.i18n.Game.CountryPicker.labelLeft;
                            break;
                        case "_countryPickerCellLableMiddle":
                            n = t.i18n.Game.CountryPicker.labelMiddle;
                            break;
                        case "_countryPickerCellLableRight":
                            n = t.i18n.Game.CountryPicker.labelRight;
                            break;
                        case "_countryPickerCellLeftResultDown":
                        case "_countryPickerCellLeftResultDownMark":
                            n = t.i18n.Game.CountryPicker.downLeft;
                            break;
                        case "_countryPickerCellMiddleResultDown":
                        case "_countryPickerCellMiddleResultDownMark":
                            n = t.i18n.Game.CountryPicker.downMiddle;
                            break;
                        case "_countryPickerCellRightResultDown":
                        case "_countryPickerCellRightResultDownMark":
                            n = t.i18n.Game.CountryPicker.downRight
                    }
                    o.lib[e].setText(n), o.lib[e].pixiContainer.$text.style.dropShadow = !0, o.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", o.lib[e].pixiContainer.$text.style.dropShadowDistance = X, o.lib[e].pixiContainer.$text.style.dropShadowBlur = J, o.lib[e].pixiContainer.$text.style.padding = 20
                })
            }

            function h() {
                o.lib._countryPickerTitle1.show(!1), o.lib._countryPickerTitle2.show(!0), o.animMap._countryPickerTitle2_Anim.play(1)
            }

            function p(e) {
                H && (H = !1, h(), v(), U = e, M(), g(), n.publish("nextState"))
            }

            function f(e) {
                H && (H = !1, h(), v(), U = e, M(), g(), n.publish("nextState"))
            }

            function m(e) {
                H && (H = !1, h(), v(), U = e, M(), g(), n.publish("nextState"))
            }

            function g() {
                N.enable(!1), G.enable(!1), j.enable(!1)
            }

            function b() {
                H = !0, N = new r(o.lib._countryPickerCellLeft, "countryPickerCell", {
                    avoidMultiTouch: !0
                }), N.click(function() {
                    l.play("Picker_PickBonus", 11, !1), p(N.sprite.data._name)
                }), N.enable(!0), G = new r(o.lib._countryPickerCellRight, "countryPickerCell", {
                    avoidMultiTouch: !0
                }), G.click(function() {
                    l.play("Picker_PickBonus", 11, !1), f(G.sprite.data._name)
                }), G.enable(!0), j = new r(o.lib._countryPickerCellMiddle, "countryPickerCell", {
                    avoidMultiTouch: !0
                }), j.click(function() {
                    l.play("Picker_PickBonus", 11, !1), m(j.sprite.data._name)
                }), j.enable(!0), "desktop" !== F && (o.lib._countryPickerCellLeft.off("mouseover"), o.lib._countryPickerCellRight.off("mouseover"), o.lib._countryPickerCellMiddle.off("mouseover"), o.lib._countryPickerCellLeft.off("mouseout"), o.lib._countryPickerCellRight.off("mouseout"), o.lib._countryPickerCellMiddle.off("mouseout"))
            }

            function _() {
                o.lib._countryPickerCellLeftResultDown.show(!1), o.lib._countryPickerCellMiddleResultDown.show(!1), o.lib._countryPickerCellRightResultDown.show(!1), o.lib._countryPickerCellLeftResultDownMark.show(!1), o.lib._countryPickerCellMiddleResultDownMark.show(!1), o.lib._countryPickerCellRightResultDownMark.show(!1), o.lib._countryPickerCellLeftMask.show(!1), o.lib._countryPickerCellRightMask.show(!1), o.lib._countryPickerCellMiddleMask.show(!1), o.lib._countryPickerTip.show(!0), o.lib._countryPickerTitle1.show(!0), o.lib._countryPickerTitle2.show(!1), o.lib._countryPickerCellLable.show(!0), o.getTimer().setTimeout(function() {
                    o.lib._countryPickerCell.show(!0), l.stopChannel(11), V && l.play("Subpicker_Reveal3Subpickers", 11, !1), o.animMap._countryPickerCellLeft_Anim1._onComplete = function() {
                        y(), b()
                    }, o.animMap._countryPickerCellLeft_Anim1.play(1), o.animMap._countryPickerCellRight_Anim1.play(1), o.animMap._countryPickerCellMiddle_Anim1.play(1)
                }, 200)
            }

            function y() {
                o.animMap._countryPickerCellLeft_Anim2._onComplete = function() {
                    o.animMap._countryPickerCellMiddle_Anim2._onComplete = function() {
                        o.animMap._countryPickerCellRight_Anim2._onComplete = function() {
                            y()
                        }, o.animMap._countryPickerCellRight_Anim2.play(1)
                    }, o.animMap._countryPickerCellMiddle_Anim2.play(1)
                }, o.animMap._countryPickerCellLeft_Anim2.play(1)
            }

            function v() {
                o.animMap._countryPickerCellLeft_Anim2.stop(), o.animMap._countryPickerCellRight_Anim2.stop(), o.animMap._countryPickerCellMiddle_Anim2.stop(), o.animMap._countryPickerCellLeft_Anim2._onComplete = null, o.animMap._countryPickerCellRight_Anim2._onComplete = null, o.animMap._countryPickerCellMiddle_Anim2._onComplete = null, o.animMap._countryPickerCellLeft_Anim2.updateStyleToTime(0), o.animMap._countryPickerCellRight_Anim2.updateStyleToTime(0), o.animMap._countryPickerCellMiddle_Anim2.updateStyleToTime(0)
            }

            function x(e) {
                W = e, "CountryPicker" === e.response.OutcomeDetail.Stage && "BuoyBonus" === e.response.OutcomeDetail.NextStage && (R(), o.lib._countryPickerTip.show(!1), w(), S(e), o.lib[U + "ResultUp"].show(!0), o.lib[U + "ResultDown"].show(!0), o.lib[U + "ResultDownMark"].show(!1), o.getTimer().setTimeout(function() {
                    "_countryPickerCellLeft" === U ? (o.lib._countryPickerCellRightMask.show(!0), o.lib._countryPickerCellMiddleMask.show(!0), o.lib._countryPickerCellMiddleResultDownMark.show(!0), o.lib._countryPickerCellRightResultDownMark.show(!0)) : "_countryPickerCellRight" === U ? (o.lib._countryPickerCellLeftMask.show(!0), o.lib._countryPickerCellMiddleMask.show(!0), o.lib._countryPickerCellLeftResultDownMark.show(!0), o.lib._countryPickerCellMiddleResultDownMark.show(!0)) : "_countryPickerCellMiddle" === U && (o.lib._countryPickerCellLeftMask.show(!0), o.lib._countryPickerCellRightMask.show(!0), o.lib._countryPickerCellLeftResultDownMark.show(!0), o.lib._countryPickerCellRightResultDownMark.show(!0)), o.getTimer().setTimeout(function() {
                        P(), T(), n.publish("nextState"), o.getTimer().setTimeout(function() {
                            C(e)
                        }, 1e3)
                    }, 500)
                }, 500))
            }

            function S(e) {
                for (var n = e.response.PickerOutcome.Layer.Pick, r = 0; r < n.length; r++)
                    if ("L0C2R0" === n[r]["@name"]) {
                        for (var i = 0; i < n[r].Feature.length; i++)
                            if ("picks" === n[r].Feature[i]["@type"]) {
                                var a = n[r].Feature[i]["@value"];
                                o.lib._countryPickerCellLeftResultUp.setText(t.i18n.Game.balankSpace1 + a + t.i18n.Game.balankSpace1), "_countryPickerCellLeft" === U && (z = Number(a))
                            }
                    } else if ("L0C1R0" === n[r]["@name"]) {
                    for (var s = 0; s < n[r].Feature.length; s++)
                        if ("picks" === n[r].Feature[s]["@type"]) {
                            var l = n[r].Feature[s]["@value"];
                            o.lib._countryPickerCellMiddleResultUp.setText(t.i18n.Game.balankSpace1 + l + t.i18n.Game.balankSpace1), "_countryPickerCellMiddle" === U && (z = Number(l))
                        }
                } else if ("L0C0R0" === n[r]["@name"])
                    for (var u = 0; u < n[r].Feature.length; u++)
                        if ("picks" === n[r].Feature[u]["@type"]) {
                            var c = n[r].Feature[u]["@value"];
                            o.lib._countryPickerCellRightResultUp.setText(t.i18n.Game.balankSpace1 + c + t.i18n.Game.balankSpace1), "_countryPickerCellRight" === U && (z = Number(c))
                        }
            }

            function w() {
                o.lib._countryPickerCellLeftResultUp.show(!1), o.lib._countryPickerCellMiddleResultUp.show(!1), o.lib._countryPickerCellRightResultUp.show(!1)
            }

            function T() {
                o.lib._countryPickerCellLeftResultUp.show(!0), o.lib._countryPickerCellMiddleResultUp.show(!0), o.lib._countryPickerCellRightResultUp.show(!0)
            }

            function P() {
                o.lib._countryPickerCellLeftResultDown.show(!0), o.lib._countryPickerCellMiddleResultDown.show(!0), o.lib._countryPickerCellRightResultDown.show(!0)
            }

            function C(e) {
                o.lib._countryPickerTitle1.show(!1), o.lib._countryPickerTitle2.show(!1), o.lib._countryPickerCellLeftResultDown.show(!1), o.lib._countryPickerCellMiddleResultDown.show(!1), o.lib._countryPickerCellRightResultDown.show(!1), o.lib._countryPickerCellLeftResultUp.setText(""), o.lib._countryPickerCellMiddleResultUp.setText(""), o.lib._countryPickerCellRightResultUp.setText(""), o.lib._bonusPickerLogo.show(!1), o.lib._countryPickerCell.show(!1), o.lib._countryPickerCellLable.show(!1), o.lib._bonusPickerWinMeter.show(!1), o.getTimer().setTimeout(function() {
                    o.animMap._bonusPickerBG_out_Anima._onComplete = function() {
                        o.lib._bonusPickerBG.show(!1)
                    }, o.animMap._bonusPickerBG_out_Anima.play(1), V && (l.play("SummaryOut", 5, !1), l.play("LarryIntro0" + I(5), 6, !1))
                }, 1e3), n.publish("showBuoyBonusUI", {
                    data: e,
                    boatLogo: U,
                    buoyCount: z,
                    GIPFlag: !1
                }), n.publish("nextState")
            }

            function k(e) {
                if (W = e, "BonusPicker" === e.response.OutcomeDetail.Stage && "CountryPicker" === e.response.OutcomeDetail.NextStage) {
                    var t;
                    "_countryPickerCellLeft" === U ? t = "L0C2R0" : "_countryPickerCellRight" === U ? t = "L0C0R0" : "_countryPickerCellMiddle" === U && (t = "L0C1R0"), n.publish("toPlatform", {
                        channel: "Game",
                        topic: "Game.PlayData",
                        data: {
                            ActionInput: {
                                Action: "play"
                            },
                            PatternSliderInput: {
                                BetPerPattern: a.getCurBetPerPattern(),
                                PatternsBet: a.getCurPatternsBet()
                            },
                            PickerInput: {
                                Pick: {
                                    "@name": t
                                }
                            }
                        }
                    }), n.publish("nextState")
                }
            }

            function O(e) {
                W = e, "BonusPicker" === e.response.OutcomeDetail.Stage && "CountryPicker" === e.response.OutcomeDetail.NextStage && _()
            }

            function E(e) {
                W = e, "BonusPicker" === e.response.OutcomeDetail.Stage && "CountryPicker" === e.response.OutcomeDetail.NextStage && (o.lib._bonusPickerLogo.show(!0), o.lib._bonusPickerWinMeter.show(!0), o.lib._bonusPickerWinValue.setText(s.formatBalance(a.getBonusPickerWin(e))), o.lib._bonusPickerBG.show(!0), _(), n.publish("displayOrHideBasePage", !1), n.publish("nextState"))
            }

            function A(e) {
                W = e
            }

            function M() {
                o.lib._countryPickerCellNetwork.show(!0), o.lib._countryPickerCellNetwork.gotoAndPlay("networkActivity", .2, !0)
            }

            function R() {
                o.lib._countryPickerCellNetwork.stopPlay(), o.lib._countryPickerCellNetwork.show(!1)
            }

            function I(e) {
                return parseInt(Math.random() * e + 1)
            }

            function B(e) {
                W = e, o.lib._countryPickerCellLeft.setImage("countryPickerCell"), o.lib._countryPickerCellRight.setImage("countryPickerCell"), o.lib._countryPickerCellMiddle.setImage("countryPickerCell"), "BonusPicker" === e.response.OutcomeDetail.Stage && "CountryPicker" === e.response.OutcomeDetail.NextStage && (R(), y(), b())
            }

            function L(e) {
                W = e
            }

            function D() {
                V = !0, W.response && "BonusPicker" === W.response.OutcomeDetail.Stage && "CountryPicker" === W.response.OutcomeDetail.NextStage && l.play("Subpicker_Reveal3Subpickers", 11, !1)
            }
            var F, N, G, j, U, W, H = !0,
                z = 0,
                V = !1,
                X = 2,
                J = 6;
            return n.subscribe("platformMsg/ClientService/Game.Init", c), n.subscribe("platformMsg/Kernel/System.Init", u), n.subscribe("audioPlayer.playerSelectedWhenGameLaunch", D), n.subscribe("onEnterNextStage", O), n.subscribe("onMakeRequest", k), n.subscribe("onResolveStage", x), n.subscribe("onBeforeShowStage", L), n.subscribe("onStartGameInProgressStage", E), n.subscribe("onStartGameInProgressNextStage", A), n.subscribe("onResetNextStage", B), {}
        }), define("game/BuoyBonus", ["com/pixijs/pixi", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/Sprite", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/BetController", "skbJet/component/currencyHelper/currencyHelper", "game/RollUp", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "game/globalArray"], function(e, t, n, r, i, o, a, s, l, u) {
            function c(e) {
                Y = e.serverConfig.paramGame.assetPack, ve = !!e.gameConfig.rgPresentation && e.gameConfig.rgPresentation
            }

            function d() {
                i.lib._buoyBonusBG.show(!1), i.lib._bouyBonusTopBG.show(!1), i.lib._buoyBonusMeter.show(!1), i.lib._buoyBonusCellNetwork.show(!1), i.lib._buoyBonusTip.show(!1), i.lib._buoyAll.show(!1), i.lib._boat.show(!1), I(), i.lib._buoyBonusTip.autoFontFitText = !0, i.lib._buoyBonusMeterBetLable.autoFontFitText = !0, i.lib._buoyBonusMeterWinLable.autoFontFitText = !0, i.lib._buoyBonusMeterPickLableUp.autoFontFitText = !0, i.lib._buoyBonusMeterPickLableDown.autoFontFitText = !0, i.lib.buoyEveryTimeGetValue.autoFontFitText = !0, i.lib._buoyBonusMeterBetLable.setText(t.i18n.Game.consoleBet2), i.lib._buoyBonusMeterWinLable.setText(t.i18n.Game.consoleWin), i.lib._buoyBonusMeterPickLableUp.setText(t.i18n.Game.buoyBonus.picks), i.lib._buoyBonusMeterPickLableDown.setText(t.i18n.Game.buoyBonus.left)
            }

            function h(e) {
                switch (i.lib._buoyBonusBG.show(!0), i.lib._bouyBonusTopBG.show(!0), i.lib._buoyBonusMeter.show(!0), i.lib._buoyBonusTip.setText(t.i18n.Game.buoyBonus.buoyBonusTip), i.lib._buoyBonusTip.show(!0), i.lib._man.setImage("pickerLarryIn_0000"), i.lib._boat.show(!0), i.animMap._boatAnim.play(1e6), i.lib._buoyBonusBG.gotoAndPlay("waterAnim", .2, !0), 0 === ne.length && (de = i.getTimer().setTimeout(function() {
                    i.animMap._buoyBonusTip_Anim.play(1e6)
                }, 5e3)), i.lib._boatBottom.gotoAndPlay("animBoat", .2, !0), e.boatLogo) {
                    case "_countryPickerCellLeft":
                        i.lib._boatLogo.setImage("boatLocal_0002"), i.lib._bouyBonusTopBG.setImage("bouyTopBrazil"), Q = 3;
                        break;
                    case "_countryPickerCellRight":
                        i.lib._boatLogo.setImage("boatLocal_0001"), i.lib._bouyBonusTopBG.setImage("bouyTopMaine"), Q = 1;
                        break;
                    case "_countryPickerCellMiddle":
                        i.lib._boatLogo.setImage("boatLocal_0003"), i.lib._bouyBonusTopBG.setImage("bouyTopAustralia"), Q = 2
                }
                i.lib._buoyAll.show(!0), pe = e.GIPFlag ? 10 : 1500, S(e), p(e.data), H()
            }

            function p(e) {
                for (var t = e.response.PickerSummaryOutcome, n = 0; n < t.length; n++)
                    if ("BuoyBonus" === t[n]["@name"]) {
                        re = Number(t[n].InitAwarded);
                        break
                    }
                K = void 0, ie = {}, oe = {}, ae = 0, ne = [], te = !1;
                for (var r = i.lib._buoyAll.sprites, o = Object.keys(i.lib._buoyAll.sprites), a = 0; a < o.length; a++) i.lib["_buoy" + a + "_value"].updateCurrentStyle({
                    _text: {
                        _color: "EE0601",
                        _strokeColor: "FAFF0D"
                    }
                }), i.lib["_buoy" + a + "_value"].autoFontFitText = !0, i.lib["_buoy" + a + "_value"].pixiContainer.$text.style.padding = 20, r[o[a]].sprites[o[a] + "_value"].setText(""), r[o[a]].sprites[o[a] + "_helm"].show(!1), r[o[a]].sprites[o[a] + "_mask"].show(!1), r[o[a]].gotoAndPlay("buoyPicker" + a, .2, !0), r[o[a]].sprites[o[a] + "_click"].pixiContainer.$sprite.interactive = !1, r[o[a]].sprites[o[a] + "_click"].pixiContainer.$sprite.cursor = "defalut", "desktop" === Y && (v(r[o[a]].sprites[o[a] + "_click"]), x(r[o[a]].sprites[o[a] + "_click"])), y(r[o[a]].sprites[o[a] + "_click"]), r[o[a]].sprites[o[a] + "_click"].clicked = !1;
                i.getTimer().setTimeout(function() {
                    te = !0, f()
                }, pe)
            }

            function f() {
                for (var e = i.lib._buoyAll.sprites, t = Object.keys(i.lib._buoyAll.sprites), n = 0; n < t.length; n++) e[t[n]].sprites[t[n] + "_click"].pixiContainer.$sprite.interactive = !0, e[t[n]].sprites[t[n] + "_click"].pixiContainer.$sprite.cursor = "pointer"
            }

            function m(e, t, n, r) {
                for (var o = i.lib._buoyAll.sprites, a = Object.keys(i.lib._buoyAll.sprites), s = 0; s < a.length; s++) o[a[s]].gotoAndPlay((a[s] === n || ne.indexOf(a[s]) >= 0 ? t : e) + s, .2, !0), r && ne.indexOf(a[s]) < 0 && (o[a[s]].sprites[a[s] + "_mask"].gotoAndPlay(s % 2 == 0 ? "buoyAnimMask0" : "buoyAnimMask1", .2, !0), o[a[s]].sprites[a[s] + "_mask"].show(!0))
            }

            function g(e) {
                for (var t = i.lib._buoyAll.sprites, n = Object.keys(i.lib._buoyAll.sprites), r = 0; r < n.length; r++) t[n[r]].stopPlay(), e && ne.indexOf(n[r]) < 0 && t[n[r]].sprites[n[r] + "_mask"].stopPlay()
            }

            function b(e) {
                ne.push(e.data._name.slice(0, 6)), e.clicked = !0, ne.length >= re && (te = !1, _(), i.getTimer().setTimeout(function() {
                    n.publish("nextState"), B()
                }, 700), z()), i.lib._buoyBonusMeterPickValue.setText($ - ne.length), l.play("BuoyPick", 2, !1), i.animMap[e.data._name.slice(0, 7) + "Anim"].play(1)
            }

            function _() {
                for (var e = i.lib._buoyAll.sprites, t = Object.keys(i.lib._buoyAll.sprites), n = 0; n < t.length; n++) e[t[n]].sprites[t[n] + "_click"].pixiContainer.$sprite.interactive = !1, e[t[n]].sprites[t[n] + "_click"].pixiContainer.$sprite.cursor = "default", e[t[n]].sprites[t[n] + "_click"].off("click"), e[t[n]].sprites[t[n] + "_click"].off("mouseover"), e[t[n]].sprites[t[n] + "_click"].off("mouseout")
            }

            function y(e) {
                e.on("click", function() {
                    te && !e.clicked && (e.pixiContainer.$sprite.interactive = !1, e.pixiContainer.$sprite.cursor = "default", b(e), g(!1), m("buoyPicker", "buoyAnimGlow", e.data._name.slice(0, 6), ne.length >= re))
                })
            }

            function v(e) {
                e.on("mouseover", function() {
                    te && !e.clicked && (g(!1), m("buoyPicker", "buoyAnimGlow", e.data._name.slice(0, 6), !1))
                })
            }

            function x(e) {
                e.on("mouseout", function() {
                    te && !e.clicked && (g(!1), m("buoyPicker", "buoyAnimGlow", null, !1))
                })
            }

            function S(e) {
                $ = e.buoyCount, i.lib._buoyBonusMeterPickValue.setText($), i.lib._buoyBonusMeterWinValue.setText(a.formatBalance(o.getWinValue(e.data, "BuoyBonus.Total"))), i.lib._buoyBonusMeterBetValue.setText(a.formatBalance(o.calculateTotalBet()))
            }

            function w(e) {
                var t = e.response.PickerOutcome;
                q = null;
                for (var n = [], r = [], o = 0; o < t.length; o++)
                    if ("BuoyBonus.Results" === t[o]["@name"]) {
                        q = t[o].Layer.Pick;
                        break
                    }
                for (var a = 0; a < q.length; a++) "true" === q[a]["@picked"] && n.push(q[a]);
                for (var s = n[0].Feature.length, u = 1; u < n.length; u++) n[u].Feature.length > s && (s = n[u].Feature.length);
                for (var c, d = 0, h = n.length, p = 0; p < h * s; p++) {
                    var f = n[p % h];
                    if (void 0 !== f.Feature[d]) {
                        var m = {};
                        m["@name"] = f["@name"], m["@value"] = f.Feature[d]["@value"], "GoldenLobster" === m["@value"] ? c = m : r.push(m)
                    }
                    p % h == h - 1 && d++
                }
                void 0 !== c && r.push(c), A(n), i.lib._man.onComplete = function() {
                    i.lib._man.onComplete = null, T(r, 0)
                }, i.lib._man.gotoAndPlay("pickerLarryIn", .2, !1), l.play("TrapHaulIn", 5, !1), i.lib._box.gotoAndPlay("trapIntro", .2, !1), i.lib._countryPickerCellNetwork.gotoAndPlay("networkActivity", .2, !0)
            }

            function T(e, n) {
                var r, s = e,
                    u = n,
                    c = s[u]["@name"];
                r = "GoldenLobster" === s[u]["@value"] ? "GoldenLobster" : Number(s[u]["@value"]) * o.getCurBetPerPattern(), i.lib._man.onComplete = function() {
                    i.lib._man.onComplete = null, i.lib.buoyEveryTimeGetValue.setText(""), u < s.length ? T(s, u) : "GoldenLobster" === r ? (C(!0), K = i.lib["_buoy" + c.slice(3, 4) + "_helm"], K.show(!0), K.gotoAndPlay("bonusIcon", .2, !0)) : (i.lib._man.onComplete = function() {
                        i.lib._man.onComplete = null, C(!1)
                    }, i.lib._man.gotoAndPlay("pickerLarryThrowTrapBack", .2, !1), l.play("ThrowTrapBack", 5, !1), i.lib._box.gotoAndPlay("trapBack", .2, !1))
                }, "GoldenLobster" === r ? u++ : i.getTimer().setTimeout(function() {
                    i.lib.buoyEveryTimeGetValue.setText(a.formatBalance(r * o.getCurDenomamount())), ie[c].start(oe[c] * o.getCurDenomamount(), (oe[c] + r) * o.getCurDenomamount(), me), (ae + r) * o.getCurDenomamount() > o.calculateTotalBet() || !ve ? se.start(ae * o.getCurDenomamount(), (ae + r) * o.getCurDenomamount(), ge) : i.lib._buoyBonusTipValue.setText(a.formatBalance((ae + r) * o.getCurDenomamount()) + t.i18n.Game.balankSpace1 + t.i18n.Game.buoyBonus.won), oe[c] += r, ae += r, u++
                }, 1500), "GoldenLobster" === r ? i.lib._man.gotoAndPlay("pickeLarryrReachInTrap", .2, !1) : i.lib._man.gotoAndPlay("pickerLarryPickOut", .2, !1);
                var d, h, p, f = "lobsterAnim0";
                if ("GoldenLobster" === r) f = "lobsterAnim6", d = "LobsterGold", p = j(3, "LarryReactGold"), h = "LarryReactGold0" + p;
                else if (r <= 17 * o.getCurBetPerPattern()) f = P(), "lobsterAnim4" === f ? (d = "JunkBoot", h = "LarryReactJunk06") : "lobsterAnim5" === f && (d = "JunkToiletSeat", h = "LarryReactJunk03");
                else if (r > 17 * o.getCurBetPerPattern() && r <= 40 * o.getCurBetPerPattern()) f = "lobsterAnim3", d = "LobsterSmall", p = j(7, "LarryReactSmall"), h = "LarryReactSmall0" + p;
                else if (r > 40 * o.getCurBetPerPattern() && r <= 135 * o.getCurBetPerPattern()) {
                    f = "lobsterAnim2", d = "LobsterSmall", p = j(10, "LarryReactPinch");
                    var m = "LarryReactPinch0" + p;
                    "LarryReactPinch010" === m && (m = "LarryReactPinch10"), h = m
                } else r > 135 * o.getCurBetPerPattern() && r <= 225 * o.getCurBetPerPattern() ? (f = "lobsterAnim1", d = "LobsterMedium", p = j(8, "LarryReactMedium"), h = "LarryReactMedium0" + p) : (f = "lobsterAnim0", d = "LobsterLarge", p = j(7, "LarryReactLarge"), h = "LarryReactLarge0" + p);
                ue = p, i.lib._lobster.gotoAndPlay(f, .2, !1), i.getTimer().setTimeout(function() {
                    l.play(d, 2, !1), l.play(h, 15, !1)
                }, 1300)
            }

            function P() {
                return Z ? "lobsterAnim4" === Z ? Z = "lobsterAnim5" : "lobsterAnim5" === Z && (Z = "lobsterAnim4") : Z = 10 * Math.random() > 4.5 ? "lobsterAnim4" : "lobsterAnim5", Z
            }

            function C(e) {
                for (var t = 0; t < q.length; t++)
                    if ("false" === q[t]["@picked"]) {
                        for (var n = q[t].Feature, r = 0, s = 0; s < n.length; s++) "credits" === n[s]["@type"] ? r += Number(n[s]["@value"]) : "trigger" === n[s]["@type"] && "GoldenLobster" === n[s]["@value"] && (K = i.lib["_buoy" + q[t]["@name"].slice(3, 4) + "_helm"], K.show(!0), K.gotoAndPlay("bonusIconMask", .2, !0));
                        i.lib["_buoy" + q[t]["@name"].slice(3, 4) + "_value"].updateCurrentStyle({
                            _text: {
                                _color: "950000",
                                _strokeColor: "C5B821"
                            }
                        }), i.lib["_buoy" + q[t]["@name"].slice(3, 4) + "_value"].setText(a.formatBalance(r * o.getCurDenomamount() * o.getCurBetPerPattern()))
                    }
                le.start(o.getWinValue(ee, "BuoyBonus.Prizes"), o.getWinValue(ee, "BuoyBonus.Total"), me);
                var u = o.getWinValue(ee, "BuoyBonus.Total") - o.getWinValue(ee, "BuoyBonus.Prizes");
                if (!e) {
                    var c;
                    c = u < 3.95 ? "LarryEndLow0" : u >= 3.95 && u < 5 ? "LarryEndMedium0" : "LarryEndHigh0", l.play(c + (10 * Math.random() >= 5 ? "1" : "2"), 6, !1)
                }
            }

            function k(e) {
                if ("_buoyBonusMeterWinValue" === e.spriteName) {
                    if ("BaseGame" === ee.response.OutcomeDetail.NextStage) i.lib._man.onComplete = function() {
                        i.lib._man.onComplete = null, n.publish("nextState"), i.getTimer().setTimeout(function() {
                            O(), n.publish("showBonusResultDialog", ee)
                        }, 3e3)
                    }, l.play("LarryClap", 7, !1), i.lib._man.gotoAndPlay("pickerLarryClapping", .2, !1);
                    else {
                        var r, o, a, s, u, c, d;
                        1 === Q ? (r = "_sub1", o = "pelicanSteal", s = 3200, a = "pickerPelicanSteal", u = "PelicanSteal", d = 300, c = "LarryReactStealMaine01") : 2 === Q ? (r = "_sub2", o = "kangaSteal", s = 2e3, a = "pickerKangaSteal", u = "KangaSteal", d = 400, c = "LarryReactStealAustralia01") : 3 === Q && (r = "_sub3", o = "octopusSteal", s = 3300, a = "pickerLarryOctopusSteal", u = "OctoSteal", d = 600, c = "LarryReactStealBrazil01"), i.lib[r].onComplete = function() {
                            i.lib[r].onComplete = null, n.publish("nextState"), i.lib[r].setImage(o + "_0000"), i.getTimer().setTimeout(function() {
                                n.publish("nextState"), O(), E(), i.lib._box.setImage("trapIntro_0000")
                            }, 2e3)
                        }, i.lib._man.gotoAndPlay(a, .2, !1), i.lib[r].gotoAndPlay(o, .2, !1), i.getTimer().setTimeout(function() {
                            i.lib._lobster.setImage("lobsterAnim6_0000")
                        }, s), be = 2 === Q ? 500 : 3e3, i.getTimer().setTimeout(function() {
                            l.play(u, 5, !1), i.getTimer().setTimeout(function() {
                                l.play(c, 6, !1)
                            }, d)
                        }, be)
                    }
                    i.lib._buoyBonusTipValue.setText(""), i.lib._buoyBonusTip.setText(t.i18n.Game.buoyBonus.CONGRATULATIONS), i.lib._buoyBonusTip.updateCurrentStyle({
                        _opacity: 1
                    }), i.lib._buoyBonusTip.show(!0)
                }
            }

            function O() {
                i.lib._countryPickerCellNetwork.stopPlay(), i.lib._boatBottom.stopPlay(), i.lib._buoyBonusBG.stopPlay(), i.animMap._boatAnim.stop(), g(!0), void 0 !== K && K.stopPlay()
            }

            function E() {
                i.lib._buoyBonusBG.show(!1), i.lib._bouyBonusTopBG.show(!1), i.lib._buoyBonusMeter.show(!1), i.lib._buoyBonusTip.show(!1), i.lib._buoyAll.show(!1), i.lib._boat.show(!1), ne = []
            }

            function A(e) {
                for (var t = 0; t < e.length; t++) ie[e[t]["@name"]] = new s("_buoy" + e[t]["@name"].slice(3, 4) + "_value"), oe[e[t]["@name"]] = 0
            }

            function M(e) {
                if (ee = e, "BuoyBonus" === e.response.OutcomeDetail.Stage && ("BaseGame" === e.response.OutcomeDetail.NextStage || "SubPicker1" === e.response.OutcomeDetail.NextStage || "SubPicker2" === e.response.OutcomeDetail.NextStage || "SubPicker3" === e.response.OutcomeDetail.NextStage)) {
                    de && i.getTimer().clearTimeout(de), i.animMap._buoyBonusTip_Anim.stop(), i.lib._buoyBonusTip.show(!1), i.animMap._buoyBonusTip_Anim.updateStyleToTime(0), L();
                    for (var t = 0; t < ne.length; t++) i.lib[ne[t]].onComplete = null, t === ne.length - 1 && (i.lib[ne[t]].onComplete = function() {
                        g(!0), m("buoyPicker", "buoyAnimOut", null, !0), w(e)
                    }), i.lib[ne[t]].gotoAndPlay("buoyInOut" + ne[t].slice(ne[t].length - 1), .2, !1)
                }
            }

            function R(e) {
                if ("CountryPicker" === e.response.OutcomeDetail.Stage && "BuoyBonus" === e.response.OutcomeDetail.NextStage) {
                    for (var t = [], r = 0; r < ne.length; r++) t.push({
                        "@name": "L0C" + ne[r].slice(ne[r].length - 1) + "R0"
                    });
                    n.publish("toPlatform", {
                        channel: "Game",
                        topic: "Game.PlayData",
                        data: {
                            ActionInput: {
                                Action: "play"
                            },
                            PatternSliderInput: {
                                BetPerPattern: o.getCurBetPerPattern(),
                                PatternsBet: o.getCurPatternsBet()
                            },
                            PickerInput: {
                                Pick: t
                            }
                        }
                    }), n.publish("nextState")
                }
            }

            function I() {
                ["_buoyBonusTip", "_buoyBonusMeterBetLable", "_buoyBonusMeterWinLable", "_buoy0_value", "_buoy1_value", "_buoy2_value", "_buoy3_value", "_buoy4_value", "_buoy5_value", "_buoy6_value", "_buoy7_value", "_buoy8_value", "buoyEveryTimeGetValue"].forEach(function(e) {
                    i.lib[e].setText(t.i18n.Game.balankSpace1), i.lib[e].pixiContainer.$text.style.dropShadow = !0, i.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", i.lib[e].pixiContainer.$text.style.dropShadowDistance = _e, i.lib[e].pixiContainer.$text.style.dropShadowBlur = ye
                })
            }

            function B() {
                i.lib._buoyBonusCellNetwork.show(!0), i.lib._buoyBonusCellNetwork.gotoAndPlay("networkActivity", .2, !0)
            }

            function L() {
                i.lib._buoyBonusCellNetwork.stopPlay(), i.lib._buoyBonusCellNetwork.show(!1)
            }

            function D(e) {
                "CountryPicker" === e.response.OutcomeDetail.Stage && "BuoyBonus" === e.response.OutcomeDetail.NextStage && (n.publish("displayOrHideBasePage", !1), N(e), n.publish("nextState"))
            }

            function F(e) {}

            function N(e) {
                var t, n, r, i = e.response.PickerOutcome;
                if (Array.isArray(i)) {
                    for (var o = 0; o < i.length; o++)
                        if ("CountryPicker" === i[o]["@name"]) {
                            t = i[o].Layer.Pick;
                            break
                        }
                } else "CountryPicker" === i["@name"] && (t = i.Layer.Pick);
                for (var a = 0; a < t.length; a++)
                    if ("true" === t[a]["@picked"]) {
                        for (var s = 0; s < t[a].Feature.length; s++)
                            if ("picks" === t[a].Feature[s]["@type"]) {
                                r = Number(t[a].Feature[s]["@value"]);
                                break
                            }
                        "L0C2R0" === t[a]["@name"] ? n = "_countryPickerCellLeft" : "L0C0R0" === t[a]["@name"] ? n = "_countryPickerCellRight" : "L0C1R0" === t[a]["@name"] && (n = "_countryPickerCellMiddle");
                        break
                    }
                h({
                    data: e,
                    boatLogo: n,
                    buoyCount: r,
                    GIPFlag: !0
                }), fe && l.play("LarryIntro0" + G(5), 6, !1)
            }

            function G(e) {
                return parseInt(Math.random() * e + 1)
            }

            function j(e, t) {
                var n = he[t];
                if (!n || n.length < 1)
                    for (n = null, n = U(e); n[0] === ue;) n = U(e);
                return he[t] = n, he[t].pop()
            }

            function U(e) {
                var t = new Array(e);
                return t.fill(1), t = t.map(function(e, t) {
                    return t + 1
                }), t = t.sort(function() {
                    return Math.random() - .5
                })
            }

            function W() {
                var e = ["LarryBuoyPrompt0" + (re - ne.length), "LarryBuoyPrompt05", "LarryBuoyPrompt06", "LarryBuoyPrompt07", "LarryBuoyPrompt08", "LarryBuoyPrompt09", "LarryBuoyPrompt10", "LarryBuoyPrompt11"];
                return e[G(e.length) - 1]
            }

            function H() {
                fe && null === ce && (ce = i.getTimer().setInterval(function() {
                    l.play(W(), 6, !1)
                }, 1e4))
            }

            function z() {
                i.getTimer().clearInterval(ce), ce = null
            }

            function V(e) {
                if ("CountryPicker" === e.response.OutcomeDetail.Stage && "BuoyBonus" === e.response.OutcomeDetail.NextStage) {
                    L(), p(e), H();
                    var t = e.response.PickerSummaryOutcome;
                    if (Array.isArray(t))
                        for (var n = 0; n < t.length; n++) {
                            "BuoyBonus" === t[n]["@name"] && i.lib._buoyBonusMeterPickValue.setText(t[n].PicksRemaining);
                            break
                        }
                }
            }

            function X() {
                fe = !0, "CountryPicker" === ee.response.OutcomeDetail.Stage && "BuoyBonus" === ee.response.OutcomeDetail.NextStage && ("desktop" !== Y && (l.play("LarryIntro0" + G(5), 6, !1), H()), l.play("BonusGame_RockLobsterLoop", 4, !0))
            }

            function J(e) {
                ee = e
            }
            var Y, q, $, K, Q, Z, ee, te = !0,
                ne = [],
                re = 0,
                ie = {},
                oe = {},
                ae = 0,
                se = new s("_buoyBonusTipValue"),
                le = new s("_buoyBonusMeterWinValue"),
                ue = 0,
                ce = null,
                de = null,
                he = {},
                pe = 1500,
                fe = !1,
                me = {
                    rollUpSound: "BonusR",
                    rollUpTermSound: "Term",
                    rollUpSoundChannel: 10,
                    maxTime: 3e3
                },
                ge = {
                    maxTime: 3e3
                },
                be = 3e3,
                _e = 1,
                ye = 1,
                ve = !1;
            return u.addArrayFill(), n.subscribe("audioPlayer.playerSelectedWhenGameLaunch", X), n.subscribe("platformMsg/ClientService/Game.Init", d), n.subscribe("onBeforeShowStage", J), n.subscribe("platformMsg/Kernel/System.Init", c), n.subscribe("showBuoyBonusUI", h), n.subscribe("onMakeRequest", R), n.subscribe("onResolveStage", M), n.subscribe("RollUp.Stopped", k), n.subscribe("hideBuoyPage", E), n.subscribe("onStartGameInProgressStage", D), n.subscribe("onStartGameInProgressNextStage", F), n.subscribe("onResetNextStage", V), {}
        }), define("game/Sub2", ["com/pixijs/pixi", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/BetController", "skbJet/component/currencyHelper/currencyHelper", "game/RollUp", "skbJet/component/gladPixiRenderer/Sprite", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer"], function(e, t, n, r, i, o, a, s, l) {
            function u(e) {
                J = e.serverConfig.paramGame.assetPack
            }

            function c() {
                var e = r.lib._australiaPickerContainer.getChildren();
                for (var n in e) e[n].show(!1);
                r.lib._kangMeterWinTipsValue.show(!0), R(t.i18n.Game.consoleBet2, "_kangMeterBetLable"), R(t.i18n.Game.consoleWin, "_kangMeterWinLable"), d(), h(), r.lib._kangTips2.show(!1), q = s.getSpriteSheetAnimationFrameArray("kangaroo")
            }

            function d() {
                r.lib._kangTips.autoFontFitText = !0, r.lib._kangTips2Value.autoFontFitText = !0, r.lib._kangTips.setText(t.i18n.Game.sub2.tips), r.lib._kangTips2Value.setText(t.i18n.Game.balankSpace1)
            }

            function h() {
                ["_kangTips", "_kangTips2Value"].forEach(function(e) {
                    r.lib[e].pixiContainer.$text.style.dropShadow = !0, r.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", r.lib[e].pixiContainer.$text.style.dropShadowDistance = le, r.lib[e].pixiContainer.$text.style.dropShadowBlur = se
                })
            }

            function p(e) {
                ne = !0, Z = !1, r.getTimer().setTimeout(function() {
                    Z = !0
                }, ue), te = {}, ee = null, m(), b(), r.lib._kangMeterWinValue.setText(o.formatBalance(i.getWinValue(e, "BuoyBonus.Total"))), r.lib._kangMeterBetValue.setText(o.formatBalance(i.calculateTotalBet())), v(), oe && (l.play("KangarooLoop", 1, !0), l.play(10 * Math.random() >= 5 ? "LarryAustraliaIntro01" : "LarryAustraliaIntro02", 13, !1)), H()
            }

            function f() {
                r.lib._australiaPickerBG.show(!1), r.lib._coverBackBG.show(!1), r.lib._coverMidBG.show(!1), r.lib._coverFrontBG.show(!1), r.lib._kangBack.show(!1), r.lib._kangMid.show(!1), r.lib._kangFront.show(!1), r.lib._subman2.show(!1), r.lib._kangMeter.show(!1), r.lib._kangTips2.show(!1)
            }

            function m() {
                r.lib._australiaPickerBG.show(!0), r.lib._coverBackBG.show(!0), r.lib._coverMidBG.show(!0), r.lib._coverFrontBG.show(!0), r.lib._kangBack.show(!0), r.lib._kangMid.show(!0), r.lib._kangFront.show(!0), r.lib._subman2.show(!0), r.lib._kangMeter.show(!0), r.lib._kangTips.show(!0), r.lib._kangTips2.show(!1)
            }

            function g() {
                ee = r.getTimer().setInterval(function() {
                    r.lib._subman2.gotoAndPlay("larryPrompt", .2, !1)
                }, 7e3)
            }

            function b() {
                r.lib._subman2.gotoAndPlay("larryPrompt", .2, !1), g();
                for (var e = 0; e < K.length; e++) r.lib[K[e] + "_gift"].setImage("kangarooPickOut0_00000"), r.lib[K[e]].setImage("kangarooLoop0_00000"), r.lib[K[e] + "_value"].setText(""), r.lib[K[e] + "_value"].autoFontFitText = !0,
                    r.lib[K[e] + "_value"].pixiContainer.$text.style.padding = 20, r.lib[K[e]].over = !1, r.lib[K[e]].clicked = !1, r.lib[K[e]].onComplete = null, te["L0C" + e + "R0"] = new a("_kang" + e + "_value");
                _(K.length)
            }

            function _(e) {
                if (ne) {
                    var t = e,
                        n = Math.floor(Math.random() * t);
                    r.lib[K[n]].over || r.lib[K[n]].clicked ? _(t) : (r.lib[K[n]].onComplete = function() {
                        r.lib[K[n]].onComplete = null, _(t)
                    }, r.lib[K[n]].gotoAndPlay(Q[n], .2, !1))
                }
            }

            function y() {
                for (var e = 0; e < K.length; e++) null !== r.lib[K[e]].onComplete && r.lib[K[e]].gotoAndStop(0)
            }

            function v() {
                for (var e = 0; e < K.length; e++) "desktop" === J && (A(r.lib[K[e]]), M(r.lib[K[e]])), x(r.lib[K[e]])
            }

            function x(e) {
                e.sprites[e.data._name + "_click"].pixiContainer.$sprite.interactive = !0, e.sprites[e.data._name + "_click"].pixiContainer.$sprite.cursor = "pointer", e.sprites[e.data._name + "_click"].on("click", function() {
                    Z && (S(e), e.setImage("kangaroo_00000"), e.clicked = !0)
                })
            }

            function S(e) {
                Z = !1, ae = !0, Y = e.data._name.slice(5), L(), E(e), n.publish("nextState"), r.lib._kangTips.show(!1), r.lib._subman2.stopPlay(), r.getTimer().clearInterval(ee), z(), H(), l.stopChannel(13)
            }

            function w(e) {
                if ("SubPicker2" === e.response.OutcomeDetail.Stage && ("SubPicker2" === e.response.OutcomeDetail.NextStage || "BaseGame" === e.response.OutcomeDetail.NextStage)) {
                    D();
                    var a, u, c, d, h, p = e.response.PickerOutcome.Layer.Pick,
                        f = 0,
                        m = 0;
                    if (Array.isArray(p))
                        for (var g = 0; g < p.length; g++) p[g]["@name"] === "L0C" + Y + "R0" && (a = p[g].Feature, u = p[g]["@name"]), "true" === p[g]["@picked"] && m++;
                    else a = p.Feature, u = p["@name"], m = 1;
                    for (var b = 0; b < a.length; b++) "credits" === a[b]["@type"] && (f = Number(a[b]["@value"]) * i.getCurBetPerPattern()), "trigger" === a[b]["@type"] && (c = a[b]["@value"]);
                    f < 50 * i.getCurBetPerPattern() ? (d = "kangarooPickOut0", h = "BoomerangReveal") : f >= 50 * i.getCurBetPerPattern() && f < 75 * i.getCurBetPerPattern() ? (d = "kangarooPickOut1", h = "BeerReveal") : f >= 75 * i.getCurBetPerPattern() && f < 100 * i.getCurBetPerPattern() ? (d = "kangarooPickOut2", h = "FlagReveal") : f >= 100 * i.getCurBetPerPattern() && f < 125 * i.getCurBetPerPattern() ? (d = "kangarooPickOut3", h = "HatReveal") : f >= 125 * i.getCurBetPerPattern() && f < 250 * i.getCurBetPerPattern() ? (d = "kangarooPickOut4", h = "KnifeReveal") : (d = "kangarooPickOut5", h = "SurfboardReveal"), r.lib._kangMeterWinTipsValue.setText(o.formatBalance(f * i.getCurDenomamount()) + t.i18n.Game.balankSpace1 + t.i18n.Game.buoyBonus.won), r.lib["_kang" + Y + "_value"].updateCurrentStyle({
                        _text: {
                            _color: "fff000"
                        }
                    }), te[u].start(0, f * i.getCurDenomamount(), ie), null !== r.lib["_kang" + Y].onComplete && (r.lib["_kang" + Y].onComplete = null, r.lib["_kang" + Y].stopPlay()), r.lib["_kang" + Y].onComplete = function() {
                        r.lib["_kang" + Y].onComplete = null, n.publish("nextState")
                    }, "GoldenLobster" === c ? (d = "kangarooPickOut6", h = "KangarooLobster", r.lib["_kang" + Y].pixiContainer.$sprite.animName = "kangaroo1", s.addSpriteSheetAnimation("kangaroo", q.slice(0, 35)), l.play(10 * Math.random() >= 5 ? "LarryAustraliaLobster01" : "LarryAustraliaLobster02", 13, !1), z()) : (r.lib["_kang" + Y].pixiContainer.$sprite.animName = "kangaroo2", s.addSpriteSheetAnimation("kangaroo", q.slice(0, 50)), l.play("LarryAustraliaValue0" + m + (10 * Math.random() >= 5 ? "a" : "b"), 13, !1)), r.lib["_kang" + Y].gotoAndPlay("kangaroo", .2, !1), r.lib["_kang" + Y + "_gift"].gotoAndPlay(d, .2, !1), l.play(h, 5, !1);
                    var _ = "larryClap";
                    f <= 100 * i.getCurBetPerPattern() ? (_ = "larryClap", l.play("LarryClap", 7, !1)) : _ = "larryThumbsUp", r.lib._subman2.gotoAndPlay(_, .2, !1)
                }
            }

            function T(e) {
                var t = e.response.PickerOutcome.Layer.Pick,
                    n = 0;
                if (Array.isArray(t))
                    for (var r = 0; r < t.length; r++)
                        if ("true" === t[r]["@picked"])
                            for (var o = t[r].Feature, a = 0; a < o.length; a++) "credits" === o[a]["@type"] && (n += Number(o[a]["@value"]));
                return n * i.getCurDenomamount() * i.getCurBetPerPattern()
            }

            function P(e) {
                "SubPicker2" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && (ne = !1, r.lib._kangMeterWinValue.setText(o.formatBalance(i.getWinValue(e, "BuoyBonus.Total"))), r.lib._kangMeterWinTipsValue.setText(""), r.lib._kangTips2Value.setText(t.i18n.Game.sub2.tips2 + t.i18n.Game.balankSpace1 + o.formatBalance(T(e))), r.lib._kangTips2.show(!0), y(), C(e), r.getTimer().setTimeout(function() {
                    n.publish("showBonusResultDialog", e)
                }, 6e3), l.play(10 * Math.random() >= 5 ? "LarryAustraliaEnd01" : "LarryAustraliaEnd02", 13, !1), l.stopChannel(1))
            }

            function C(e) {
                for (var t = e.response.PickerOutcome.Layer.Pick, n = 0; n < t.length; n++)
                    if ("false" === t[n]["@picked"]) {
                        for (var a = 0, s = 0; s < t[n].Feature.length; s++)
                            if ("credits" === t[n].Feature[s]["@type"]) {
                                a = Number(t[n].Feature[s]["@value"]) * i.getCurBetPerPattern() * i.getCurDenomamount();
                                break
                            }
                        var l = t[n]["@name"].slice(3, 4);
                        r.lib["_kang" + l + "_value"].updateCurrentStyle({
                            _text: {
                                _color: "aeaeaa"
                            }
                        }), r.lib["_kang" + l + "_value"].setText(o.formatBalance(a)), r.lib["_kang" + l].setImage("kangarooInactive"), E(r.lib["_kang" + l])
                    }
            }

            function k(e) {
                "SubPicker2" === e.response.OutcomeDetail.Stage && "SubPicker2" === e.response.OutcomeDetail.NextStage && (Z = !0, _(K.length), r.lib._kangMeterWinValue.setText(o.formatBalance(i.getWinValue(e, "BuoyBonus.Total"))), r.lib._kangMeterWinTipsValue.setText(""), r.lib._kangTips.show(!0), g())
            }

            function O(e) {
                "BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker2" !== e.response.OutcomeDetail.Stage || "SubPicker2" !== e.response.OutcomeDetail.NextStage || (n.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.PlayData",
                    data: {
                        ActionInput: {
                            Action: "play"
                        },
                        PatternSliderInput: {
                            BetPerPattern: i.getCurBetPerPattern(),
                            PatternsBet: i.getCurPatternsBet()
                        },
                        PickerInput: {
                            Pick: {
                                "@name": "L0C" + Y + "R0"
                            }
                        }
                    }
                }), n.publish("nextState"))
            }

            function E(e) {
                e.sprites[e.data._name + "_click"].pixiContainer.$sprite.interactive = !1, e.sprites[e.data._name + "_click"].pixiContainer.$sprite.cursor = "default", e.sprites[e.data._name + "_click"].off("click"), e.sprites[e.data._name + "_click"].off("mouseover"), e.sprites[e.data._name + "_click"].off("mouseout")
            }

            function A(e) {
                e.sprites[e.data._name + "_click"].on("mouseover", function() {
                    Z && (e.over = !0, null !== e.onComplete && (e.onComplete = null, e.stopPlay(), _(K.length)), e.setImage("kangarooOver"))
                })
            }

            function M(e) {
                e.sprites[e.data._name + "_click"].on("mouseout", function() {
                    Z && (e.setImage("kangarooLoop0_00000"), e.over = !1)
                })
            }

            function R(t, n) {
                var i = {
                    textBaseline: "textBaseline",
                    fontFamily: "cooperblackloccur",
                    fontSize: "mobile" === J ? 28 : 27,
                    fontWeight: 500,
                    fill: "#FF00FF"
                };
                switch (n) {
                    case "_kangMeterBetLable":
                        i.fill = "#FF0000"
                }
                for (var a = {
                        fontFamily: i.fontFamily,
                        fontSize: i.fontSize,
                        fontWeight: i.fontWeight,
                        fill: i.fill,
                        textBaseline: i.textBaseline
                    }, s = I(t), l = B(s, a), u = new e.Container, c = 0; c < l.length; c++) u.addChild(l[c]);
                u.x = o.formatFloat(r.lib[n].data._style._width / 2) - o.formatFloat(u.width / 2), r.lib[n].pixiContainer.removeChildren(), r.lib[n].pixiContainer.addChild(u), r.lib[n].show(!0)
            }

            function I(e) {
                for (var t = [], n = 0; n < e.length; n++) n === e.length - 1 && t.push({
                    type: "text",
                    value: e.substring(0)
                });
                return t
            }

            function B(t, n) {
                for (var r, i = [], o = 0, a = 0; a < t.length; a++) r = new e.Text, r.text = t[a].value, r.style = n, r.x = o, o += r.width, i.push(r);
                return i
            }

            function L() {
                r.lib._kangCellNetwork.show(!0), r.lib._kangCellNetwork.gotoAndPlay("networkActivity", .2, !0)
            }

            function D() {
                r.lib._kangCellNetwork.stopPlay(), r.lib._kangCellNetwork.show(!1)
            }

            function F(e) {
                z(), ae = !1, "BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker2" === e.response.OutcomeDetail.NextStage && (ue = 1500, p(e))
            }

            function N(e) {
                "BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker2" !== e.response.OutcomeDetail.Stage || "SubPicker2" !== e.response.OutcomeDetail.NextStage || (n.publish("displayOrHideBasePage", !1), ue = 10, p(e), n.publish("nextState"))
            }

            function G(e) {
                "SubPicker2" === e.response.OutcomeDetail.Stage && "SubPicker2" === e.response.OutcomeDetail.NextStage && U(e)
            }

            function j(e) {
                "BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker2" !== e.response.OutcomeDetail.Stage || "SubPicker2" !== e.response.OutcomeDetail.NextStage || (D(), ue = 10, p(e), "SubPicker2" === e.response.OutcomeDetail.Stage && U(e))
            }

            function U(e) {
                var t = e.response.PickerOutcome.Layer.Pick;
                if (Array.isArray(t)) {
                    for (var n = 0; n < t.length; n++)
                        if ("true" === t[n]["@picked"]) {
                            var a = t[n]["@name"].slice(3, 4);
                            r.lib["_kang" + a].clicked = !0, null !== r.lib["_kang" + a].onComplete && (r.lib["_kang" + a].onComplete = null, r.lib["_kang" + a].stopPlay(), _(K.length)), r.lib["_kang" + a].setImage("kangaroo_00000"), E(r.lib["_kang" + a]);
                            for (var s = t[n].Feature, l = 0; l < s.length; l++) "credits" === s[l]["@type"] && r.lib["_kang" + a + "_value"].setText(o.formatBalance(Number(s[l]["@value"]) * i.getCurBetPerPattern() * i.getCurDenomamount()))
                        }
                } else if ("true" === t["@picked"]) {
                    var a = t["@name"].slice(3, 4);
                    r.lib["_kang" + a].clicked = !0, null !== r.lib["_kang" + a].onComplete && (r.lib["_kang" + a].onComplete = null, r.lib["_kang" + a].stopPlay(), _(K.length)), r.lib["_kang" + a].setImage("kangaroo_00000"), E(r.lib["_kang" + a]);
                    for (var s = t.Feature, l = 0; l < s.length; l++) "credits" === s[l]["@type"] && r.lib["_kang" + a + "_value"].setText(o.formatBalance(Number(s[l]["@value"]) * i.getCurBetPerPattern() * i.getCurDenomamount()))
                }
            }

            function W(e) {
                return parseInt(Math.random() * e + 1)
            }

            function H() {
                oe && null === re && (re = r.getTimer().setInterval(function() {
                    l.play("LarryAustraliaPrompt0" + W(4), 13, !1)
                }, 1e4))
            }

            function z() {
                r.getTimer().clearInterval(re), re = null
            }

            function V() {
                oe = !0, "SubPicker2" === $.response.OutcomeDetail.NextStage && ("desktop" !== J && (l.play("KangarooLoop", 1, !0), ae || (l.play(10 * Math.random() >= 5 ? "LarryAustraliaIntro01" : "LarryAustraliaIntro02", 13, !1), H())), l.play("BonusGame_RockLobsterLoop", 4, !0))
            }

            function X(e) {
                $ = e
            }
            var J, Y, q, $, K = ["_kang0", "_kang1", "_kang2", "_kang3", "_kang4", "_kang5"],
                Q = ["kangarooLoop3", "kangarooLoop1", "kangarooLoop0", "kangarooLoop2", "kangarooLoop3", "kangarooLoop2"],
                Z = !0,
                ee = null,
                te = {},
                ne = !1,
                re = null,
                ie = {
                    rollUpSound: "BonusR",
                    rollUpTermSound: "Term",
                    rollUpSoundChannel: 10,
                    maxTime: 4e3
                },
                oe = !1,
                ae = !1,
                se = 1,
                le = 2,
                ue = 1500;
            return n.subscribe("onBeforeShowStage", X), n.subscribe("audioPlayer.playerSelectedWhenGameLaunch", V), n.subscribe("platformMsg/ClientService/Game.Init", c), n.subscribe("platformMsg/Kernel/System.Init", u), n.subscribe("onEnterNextStage", F), n.subscribe("onMakeRequest", O), n.subscribe("onResolveStage", w), n.subscribe("onInProgressStage", k), n.subscribe("onExitStage", P), n.subscribe("hideKangUI", f), n.subscribe("onStartGameInProgressStage", N), n.subscribe("onStartGameInProgressNextStage", G), n.subscribe("onResetNextStage", j), {}
        }), define("game/Sub3", ["com/pixijs/pixi", "skbJet/component/pixiResourceLoader/pixiResourceLoader", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gladPixiRenderer/gladPixiRenderer", "game/BetController", "skbJet/component/currencyHelper/currencyHelper", "game/RollUp", "skbJet/component/howlerAudioPlayer/howlerAudioSpritePlayer", "game/globalArray"], function(e, t, n, r, i, o, a, s, l) {
            function u(e) {
                H = e.serverConfig.paramGame.assetPack, X = 2 * ("mobile" === H ? 270 : 720)
            }

            function c() {
                var e = r.lib._octopusPickerContainer.getChildren();
                for (var t in e) e[t].show(!1);
                d()
            }

            function d() {
                r.lib._brazilMeterBetLable.autoFontFitText = !0, r.lib._brazilMeterWinLable.autoFontFitText = !0, r.lib._brazilText_2.autoFontFitText = !0, r.lib._brazilText_5.autoFontFitText = !0, r.lib._brazilText_4.autoFontFitText = !0, r.lib._brazilText_1.autoFontFitText = !0, r.lib._brazilText_3.autoFontFitText = !0, r.lib._brazilTips.autoFontFitText = !0, r.lib._brazilTips2Value.autoFontFitText = !0, r.lib._brazilMeterBetLable.setText(t.i18n.Game.consoleBet2), r.lib._brazilMeterWinLable.setText(t.i18n.Game.consoleWin), r.lib._brazilText_2.setText(t.i18n.Game.sub3.lob), r.lib._brazilText_5.setText(t.i18n.Game.consoleBonus), r.lib._brazilText_3.setText(t.i18n.Game.sub3.equal), r.lib._brazilTips.setText(t.i18n.Game.sub3.tips), r.lib._brazilTips2Value.setText(t.i18n.Game.balankSpace1), ["_brazilMeterBetLable", "_brazilMeterWinLable", "_brazilText_2", "_brazilText_5", "_brazilText_3", "_brazilTips", "_brazilTips2Value"].forEach(function(e) {
                    r.lib[e].pixiContainer.$text.style.dropShadow = !0, r.lib[e].pixiContainer.$text.style.dropShadowColor = "rgba(0,0,0,1)", r.lib[e].pixiContainer.$text.style.dropShadowDistance = te, r.lib[e].pixiContainer.$text.style.dropShadowBlur = ee
                })
            }

            function h(e) {
                Y = !1, r.getTimer().setTimeout(function() {
                    Y = !0
                }, ie), $ = !0, f(), m(), r.lib._brazilMeterWinValue.setText(o.formatBalance(i.getWinValue(e, "BuoyBonus.Total"))), r.lib._brazilMeterBetValue.setText(o.formatBalance(i.calculateTotalBet())), b(), Q && (s.play("OctopusLoop", 1, !0), s.play(10 * Math.random() >= 5 ? "LarryBrazilIntro01" : "LarryBrazilIntro02", 14, !1)), G()
            }

            function p() {
                r.lib._brazilPickerBG.show(!1), r.lib._octopusLoopAnim.show(!1), r.lib._goldenBox.show(!1), r.lib._brazilMeter.show(!1), r.lib._brazilTips2.show(!1), r.lib._brazilText.show(!1)
            }

            function f() {
                r.lib._brazilPickerBG.show(!0), r.lib._octopusLoopAnim.show(!0), r.lib._goldenBox.show(!0), r.lib._brazilMeter.show(!0), r.lib._brazilLarryAnim.show(!0), r.lib._brazilTips.show(!0), r.lib._brazilTips2.show(!1), r.lib._brazilText.show(!0), O("1 " + t.i18n.Game.buttonClose, "_brazilText_0"), O(o.formatBalance(i.getCurBetPerPattern() * i.getCurDenomamount() * Number(t.i18n.Game.sub3.defaultValue)), "_brazilText_1", !0), O(o.formatBalance(1 * i.getCurBetPerPattern() * i.getCurDenomamount() * Number(t.i18n.Game.sub3.defaultValue)), "_brazilText_4", !0)
            }

            function m() {
                r.animMap._brazilBgCoverAnim.play(1e6), r.lib._brazilLarryAnim.onComplete = function() {
                    r.lib._brazilLarryAnim.onComplete = null, g(3)
                }, r.lib._brazilLarryAnim.gotoAndPlay("larryIn", .2, !1), Q && s.play("LarryIn", 5, !1), r.lib._octopusLoopAnim.gotoAndPlay("octopus", .2, !0), r.animMap._goldenBoxAnim.play(1e6);
                for (var e = 0; e < J.length; e++) r.lib[J[e]].setImage("goldenBox_0001"), r.lib[J[e] + "_mark"].setImage("goldenBoxCover"), r.lib[J[e] + "_value"].setText(""), r.lib[J[e] + "_value"].autoFontFitText = !0, r.lib[J[e] + "_value"].pixiContainer.$text.style.padding = 20, r.lib[J[e]].over = !1, r.lib[J[e]].clicked = !1, r.animMap[J[e] + "_valueAnim"].updateStyleToTime(0), r.lib[J[e] + "_lob"].setImage("lobsterGlow_0001"), r.animMap[J[e] + "_lobAnim"].updateStyleToTime(0)
            }

            function g(e) {
                if ($) {
                    var t = e;
                    r.lib._brazilLarryAnim.onComplete = function() {
                        r.lib._brazilLarryAnim.onComplete = null, t--, t <= 0 ? (r.lib._brazilLarryAnim.onComplete = function() {
                            r.lib._brazilLarryAnim.onComplete = null, t = 3, g(t)
                        }, r.lib._brazilLarryAnim.gotoAndPlay("larryIdle", .2, !1)) : g(t)
                    }, r.lib._brazilLarryAnim.gotoAndPlay("larryStatic", .2, !1)
                }
            }

            function b() {
                for (var e = 0; e < J.length; e++) r.lib[J[e]].pixiContainer.$sprite.interactive = !0, r.lib[J[e]].pixiContainer.$sprite.cursor = "pointer", _(r.lib[J[e]])
            }

            function _(e) {
                e.on("mouseover", function() {
                    Y && (e.over = !0, e.setImage("goldenBoxOver"))
                }), e.on("mouseout", function() {
                    Y && (e.setImage("goldenBox_0001"), e.over = !1)
                }), e.on("click", function() {
                    Y && (y(e), e.setImage("goldenBox_0001"), e.clicked = !0)
                })
            }

            function y(e) {
                Y = !1, re = !0, z = e.data._name.slice(e.data._name.length - 1), M(), k(e), n.publish("nextState"), r.lib._brazilTips.show(!1), j(), G(), s.stopChannel(14)
            }

            function v(e) {
                if ("SubPicker3" === e.response.OutcomeDetail.Stage && ("SubPicker3" === e.response.OutcomeDetail.NextStage || "BaseGame" === e.response.OutcomeDetail.NextStage)) {
                    V = e, $ = !1, R();
                    var a, l, u = e.response.PickerOutcome.Layer.Pick,
                        c = 0,
                        d = 1;
                    if (Array.isArray(u)) {
                        for (var h = 0; h < u.length; h++) u[h]["@name"] === "L0C" + z + "R0" && (a = u[h].Feature, u[h]["@name"]);
                        c = u.length
                    } else a = u.Feature, u["@name"], c = 1;
                    for (var p = 0; p < a.length; p++) "multiplier" === a[p]["@type"] && (d = Number(a[p]["@value"])), "trigger" === a[p]["@type"] && (l = a[p]["@value"]);
                    if (r.lib["_brazilBox_" + z].onComplete = function() {
                            r.lib["_brazilBox_" + z].onComplete = null, "GoldenLobster" === l ? (r.animMap["_brazilBox_" + z + "_lobAnim"]._onComplete = function() {
                                r.animMap["_brazilBox_" + z + "_lobAnim"]._onComplete = null, r.lib["_brazilBox_" + z + "_lob"].gotoAndPlay("lobsterGlow", .3, !0), q.start(i.getWinValue(e, "BuoyBonus.Total") - i.getWinValue(e, "SubPicker3.Prizes"), i.getWinValue(e, "BuoyBonus.Total"), Z)
                            }, r.animMap["_brazilBox_" + z + "_lobAnim"].play(1), O(r.lib._brazilText_4.pixiContainer.children[0].children[0]._text, "_brazilText_4"), O(o.formatBalance(i.getCurBetPerPattern() * i.getCurDenomamount() * Number(t.i18n.Game.sub3.defaultValue)), "_brazilText_1")) : (r.lib["_brazilBox_" + z + "_value"].updateCurrentStyle({
                                _text: {
                                    _color: "f79b79",
                                    _gradient: {
                                        _color: ["ffe1e1", "ff0d0d", "ff0000"],
                                        _stop: [0, .7, 1]
                                    },
                                    _strokeColor: "8c0000"
                                }
                            }), r.lib["_brazilBox_" + z + "_value"].setText(d + t.i18n.Game.balankSpace1 + t.i18n.Game.buttonClose), r.animMap["_brazilBox_" + z + "_valueAnim"].play(1), O(d + t.i18n.Game.balankSpace1 + t.i18n.Game.buttonClose, "_brazilText_0"), O(o.formatBalance(d * i.getCurBetPerPattern() * i.getCurDenomamount() * Number(t.i18n.Game.sub3.defaultValue)), "_brazilText_4", !0)), n.publish("nextState")
                        }, "GoldenLobster" === l) j(), s.play("OctopusLobster", 2, !1), s.play(10 * Math.random() >= 5 ? "LarryBrazilLobster01" : "LarryBrazilLobster02", 14, !1);
                    else {
                        var f = (Number(c) - 1) % 5 + 1,
                            m = "LarryBrazil" + f + "xA",
                            b = "LarryBrazil" + f + "xB";
                        s.play(10 * Math.random() >= 5 ? m : b, 14, !1), s.play(d >= 4 ? "MultiplierHigher" : "MultiplierLower", 2, !1)
                    }
                    var _ = "larryReact";
                    _ = "GoldenLobster" === l ? "larryReactLobster" : "larryReact", r.lib._brazilLarryAnim.onComplete = function() {
                        $ = !0, g(3)
                    }, r.lib._brazilLarryAnim.gotoAndPlay(_, .3, !1), r.lib["_brazilBox_" + z].gotoAndPlay("goldenBox", .5, !1)
                }
            }

            function x(e) {
                "_brazilMeterWinValue" === e.spriteName && ($ = !1, r.lib._brazilLarryAnim.onComplete = function() {
                    r.lib._brazilLarryAnim.show(!1), r.getTimer().setTimeout(function() {
                        r.lib["_brazilBox_" + z + "_lob"].stopPlay(), r.lib._octopusLoopAnim.stopPlay(), r.animMap._goldenBoxAnim.stop(), r.animMap._brazilBgCoverAnim.stop(), n.publish("showBonusResultDialog", V)
                    }, 3e3)
                }, r.lib._brazilLarryAnim.gotoAndPlay("larryOut", .2, !1), s.play("LarryOut", 5, !1), r.getTimer().setTimeout(function() {
                    s.play(10 * Math.random() >= 5 ? "LarryBrazilEnd01" : "LarryBrazilEnd02", 14, !1)
                }, 1500))
            }

            function S(e) {
                "SubPicker3" === e.response.OutcomeDetail.Stage && "SubPicker3" === e.response.OutcomeDetail.NextStage && (Y = !0, r.lib._brazilTips.show(!0), w(e))
            }

            function w(e) {
                var t = e.response.PickerOutcome.Layer.Pick;
                if (Array.isArray(t))
                    for (var n = 0; n < t.length; n++)
                        if ("true" === t[n]["@picked"]) {
                            var i = t[n]["@name"].slice(3, 4);
                            z !== i && r.lib["_brazilBox_" + i].getImage().includes("goldenBox") && (r.lib["_brazilBox_" + i + "_value"].updateCurrentStyle({
                                _text: {
                                    _color: "f79b79",
                                    _gradient: {
                                        _color: ["e6e6e6", "3a3a3a"],
                                        _stop: [0, 1]
                                    },
                                    _strokeColor: "1c1c1c"
                                }
                            }), r.lib["_brazilBox_" + i].setImage("greyBox"), r.lib["_brazilBox_" + i + "_mark"].setImage("greyBoxCover"))
                        }
            }

            function T(e) {
                "SubPicker3" === e.response.OutcomeDetail.Stage && "BaseGame" === e.response.OutcomeDetail.NextStage && ($ = !1, r.lib._brazilTips2Value.setText(t.i18n.Game.sub3.tips2 + t.i18n.Game.balankSpace1 + o.formatBalance(i.getWinValue(e, "SubPicker3.Prizes"))), r.lib._brazilTips2.show(!0), P(e), s.stopChannel(1))
            }

            function P(e) {
                for (var n = e.response.PickerOutcome.Layer.Pick, i = 0; i < n.length; i++)
                    if ("false" === n[i]["@picked"]) {
                        for (var o = 1, a = 0; a < n[i].Feature.length; a++)
                            if ("multiplier" === n[i].Feature[a]["@type"]) {
                                o = Number(n[i].Feature[a]["@value"]);
                                break
                            }
                        var s = n[i]["@name"].slice(3, 4);
                        r.animMap["_brazilBox_" + s + "_valueAnim"].updateStyleToTime(r.animMap["_brazilBox_" + s + "_valueAnim"].maxTime), r.lib["_brazilBox_" + s + "_value"].updateCurrentStyle({
                            _text: {
                                _color: "f79b79",
                                _gradient: {
                                    _color: ["e6e6e6", "3a3a3a"],
                                    _stop: [0, 1]
                                },
                                _strokeColor: "1c1c1c"
                            }
                        }), r.lib["_brazilBox_" + s + "_value"].setText(o + t.i18n.Game.balankSpace1 + t.i18n.Game.buttonClose), r.lib["_brazilBox_" + s].setImage("greyBox"), r.lib["_brazilBox_" + s + "_mark"].setImage("greyBoxCover"), k(r.lib["_brazilBox_" + s])
                    }
            }

            function C(e) {
                "BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker3" !== e.response.OutcomeDetail.Stage || "SubPicker3" !== e.response.OutcomeDetail.NextStage || (n.publish("toPlatform", {
                    channel: "Game",
                    topic: "Game.PlayData",
                    data: {
                        ActionInput: {
                            Action: "play"
                        },
                        PatternSliderInput: {
                            BetPerPattern: i.getCurBetPerPattern(),
                            PatternsBet: i.getCurPatternsBet()
                        },
                        PickerInput: {
                            Pick: {
                                "@name": "L0C" + z + "R0"
                            }
                        }
                    }
                }), n.publish("nextState"))
            }

            function k(e) {
                e.pixiContainer.$sprite.interactive = !1, e.pixiContainer.$sprite.cursor = "default", e.off("click"), e.off("mouseover"), e.off("mouseout")
            }

            function O(t, n, i) {
                var a = {
                    textBaseline: "textBaseline",
                    fontFamily: "cooperblackloccur",
                    fontSize: "mobile" === H ? 20 : 27,
                    fontWeight: 500,
                    fill: ["#FF00FF"],
                    fillGradientStops: [1],
                    dropShadow: !0,
                    dropShadowColor: "rgba(0,0,0,1)",
                    dropShadowBlur: 1,
                    dropShadowDistance: 2,
                    stroke: "#000000",
                    strokeThickness: 3
                };
                switch (n) {
                    case "_brazilMeterBetLable":
                        a.fill = ["#FF0000"], a.strokeThickness = ne, a.dropShadowBlur = ee, a.dropShadowDistance = te;
                        break;
                    case "_brazilText_0":
                        a.fill = ["#fff8f8", "#ff0000", "#ff0000"], a.fillGradientStops = [0, .4, 1], a.fontWeight = 600, a.stroke = "#ffffff", a.strokeThickness = 6, a.dropShadowDistance = 4, a.fontSize = "mobile" === H ? 52 : 80;
                        break;
                    case "_brazilText_1":
                        a.fill = i ? ["#827c28"] : ["#fff000"], a.fontWeight = 600, a.fontSize = "mobile" === H ? 28 : 44;
                        break;
                    case "_brazilText_2":
                        a.fill = ["#f9ff00"], a.fontWeight = 600, a.fontSize = "mobile" === H ? 20 : 30;
                        break;
                    case "_brazilText_3":
                        a.fill = ["#51ff46", "#0cd000"], a.fillGradientStops = [0, 1], a.fontWeight = 600, a.strokeThickness = 6, a.dropShadowDistance = 4, a.fontSize = "mobile" === H ? 52 : 80;
                        break;
                    case "_brazilText_4":
                        a.fill = i ? ["#62953c"] : ["#ffffff", "#5cff52", "#0fff00", "#0fff00"], a.fillGradientStops = [0, .6, .7, 1], a.fontWeight = 600, a.fontSize = "mobile" === H ? 28 : 44;
                        break;
                    case "_brazilText_5":
                        a.fill = ["#00fa19", "#04fa00"], a.fillGradientStops = [0, 1], a.fontWeight = 600, a.fontSize = "mobile" === H ? 26 : 39
                }
                for (var s = {
                        fontFamily: a.fontFamily,
                        fontSize: a.fontSize,
                        fontWeight: a.fontWeight,
                        fill: a.fill,
                        dropShadow: a.dropShadow,
                        dropShadowColor: a.dropShadowColor,
                        dropShadowBlur: a.dropShadowBlur,
                        dropShadowDistance: a.dropShadowDistance,
                        stroke: a.stroke,
                        strokeThickness: a.strokeThickness,
                        textBaseline: a.textBaseline,
                        fillGradientStops: a.fillGradientStops
                    }, l = r.lib[n].data._style._width, u = E(t), c = A(l, u, s), d = new e.Container, h = 0; h < c.length; h++) d.addChild(c[h]), d.width += 20;
                d.x = o.formatFloat(r.lib[n].data._style._width / 2) - o.formatFloat(d.width / 2), r.lib[n].pixiContainer.removeChildren(), r.lib[n].pixiContainer.addChild(d), r.lib[n].show(!0)
            }

            function E(e) {
                for (var t = [], n = 0; n < e.length; n++) n === e.length - 1 && t.push({
                    type: "text",
                    value: e.substring(0)
                });
                return t
            }

            function A(t, n, r) {
                for (var i, o = [], a = 0, s = 0; s < n.length; s++) {
                    i = new e.Text, i.style.wordWrap = !1, i.text = n[s].value, i.style = r;
                    for (var l = Number(r.fontSize); i.width + 5 > t && !(--l < 12);) i.style.fontSize = l;
                    i.x = a, a += i.width + 20, o.push(i)
                }
                return o
            }

            function M() {
                r.lib._brazilCellNetwork.show(!0), r.lib._brazilCellNetwork.gotoAndPlay("networkActivity", .2, !0)
            }

            function R() {
                r.lib._brazilCellNetwork.stopPlay(), r.lib._brazilCellNetwork.show(!1)
            }

            function I(e) {
                re = !1, j(), "BuoyBonus" === e.response.OutcomeDetail.Stage && "SubPicker3" === e.response.OutcomeDetail.NextStage && (ie = 1500, h(e))
            }

            function B(e) {
                "BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker3" !== e.response.OutcomeDetail.Stage || "SubPicker3" !== e.response.OutcomeDetail.NextStage || (n.publish("displayOrHideBasePage", !1), ie = 10, h(e), n.publish("nextState"))
            }

            function L(e) {
                "SubPicker3" === e.response.OutcomeDetail.Stage && "SubPicker3" === e.response.OutcomeDetail.NextStage && F(e)
            }

            function D(e) {
                "BuoyBonus" !== e.response.OutcomeDetail.Stage && "SubPicker3" !== e.response.OutcomeDetail.Stage || "SubPicker3" !== e.response.OutcomeDetail.NextStage || (R(), ie = 10, h(e), "SubPicker3" === e.response.OutcomeDetail.Stage && F(e))
            }

            function F(e) {
                var n = e.response.PickerOutcome.Layer.Pick,
                    a = e.response.PickerInput.Pick["@name"].slice(3, 4);
                if (Array.isArray(n)) {
                    for (var s = 0; s < n.length; s++)
                        if ("true" === n[s]["@picked"]) {
                            var l = n[s]["@name"].slice(3, 4);
                            l === a ? (r.lib["_brazilBox_" + l].setImage("goldenBox_0017"), r.lib["_brazilBox_" + l + "_mark"].setImage("goldenBoxCover")) : (r.lib["_brazilBox_" + l].setImage("greyBox"), r.lib["_brazilBox_" + l + "_mark"].setImage("greyBoxCover")), r.lib["_brazilBox_" + l].clicked = !0, r.animMap["_brazilBox_" + l + "_valueAnim"].updateStyleToTime(r.animMap["_brazilBox_" + l + "_valueAnim"].maxTime), k(r.lib["_brazilBox_" + l]);
                            for (var u = n[s].Feature, c = 0; c < u.length; c++) "multiplier" === u[c]["@type"] && (l === a ? (r.lib["_brazilBox_" + l + "_value"].updateCurrentStyle({
                                _text: {
                                    _color: "f79b79",
                                    _gradient: {
                                        _color: ["ffe1e1", "ff0d0d", "ff0000"],
                                        _stop: [0, .7, 1]
                                    },
                                    _strokeColor: "8c0000"
                                }
                            }), O(Number(u[c]["@value"]) + " " + t.i18n.Game.buttonClose, "_brazilText_0"), O(o.formatBalance(Number(u[c]["@value"]) * i.getCurBetPerPattern() * i.getCurDenomamount() * Number(t.i18n.Game.sub3.defaultValue)), "_brazilText_4", !0)) : r.lib["_brazilBox_" + l + "_value"].updateCurrentStyle({
                                _text: {
                                    _color: "f79b79",
                                    _gradient: {
                                        _color: ["e6e6e6", "3a3a3a"],
                                        _stop: [0, 1]
                                    },
                                    _strokeColor: "1c1c1c"
                                }
                            }), r.lib["_brazilBox_" + l + "_value"].setText(Number(u[c]["@value"]) + t.i18n.Game.balankSpace1 + t.i18n.Game.buttonClose))
                        }
                } else if ("true" === n["@picked"]) {
                    var l = n["@name"].slice(3, 4);
                    r.lib["_brazilBox_" + l].clicked = !0, r.lib["_brazilBox_" + l].setImage("goldenBox_0017"), r.lib["_brazilBox_" + l + "_mark"].setImage("goldenBoxCover"), r.animMap["_brazilBox_" + l + "_valueAnim"].updateStyleToTime(r.animMap["_brazilBox_" + l + "_valueAnim"].maxTime), k(r.lib["_brazilBox_" + l]);
                    for (var u = n.Feature, c = 0; c < u.length; c++) "multiplier" === u[c]["@type"] && (O(Number(u[c]["@value"]) + " " + t.i18n.Game.buttonClose, "_brazilText_0"), O(o.formatBalance(Number(u[c]["@value"]) * i.getCurBetPerPattern() * i.getCurDenomamount() * Number(t.i18n.Game.sub3.defaultValue)), "_brazilText_4", !0), r.lib["_brazilBox_" + l + "_value"].updateCurrentStyle({
                        _text: {
                            _color: "f79b79",
                            _gradient: {
                                _color: ["ffe1e1", "ff0d0d", "ff0000"],
                                _stop: [0, .7, 1]
                            },
                            _strokeColor: "8c0000"
                        }
                    }), r.lib["_brazilBox_" + l + "_value"].setText(Number(u[c]["@value"]) + t.i18n.Game.balankSpace1 + t.i18n.Game.buttonClose))
                }
            }

            function N(e) {
                return parseInt(Math.random() * e + 1)
            }

            function G() {
                Q && null === K && (K = r.getTimer().setInterval(function() {
                    s.play("LarryBrazilPrompt0" + N(4), 14, !1)
                }, 1e4))
            }

            function j() {
                r.getTimer().clearInterval(K), K = null
            }

            function U() {
                Q = !0, "SubPicker3" === V.response.OutcomeDetail.NextStage && ("desktop" !== H && (s.play("OctopusLoop", 1, !0), re || (s.play(10 * Math.random() >= 5 ? "LarryBrazilIntro01" : "LarryBrazilIntro02", 14, !1), G())), s.play("BonusGame_RockLobsterLoop", 4, !0))
            }

            function W(e) {
                V = e
            }
            var H, z, V, X = 1440,
                J = ["_brazilBox_0", "_brazilBox_1", "_brazilBox_2", "_brazilBox_3", "_brazilBox_4", "_brazilBox_5", "_brazilBox_6", "_brazilBox_7"],
                Y = !0,
                q = new a("_brazilMeterWinValue"),
                $ = !1,
                K = null,
                Q = !1,
                Z = {
                    rollUpSound: "BonusR",
                    rollUpTermSound: "Term",
                    rollUpSoundChannel: 10
                },
                ee = 1,
                te = 2,
                ne = 3,
                re = !1,
                ie = 1500;
            return l.addArrayInclude(), l.addStringInclude(), n.subscribe("onBeforeShowStage", W), n.subscribe("audioPlayer.playerSelectedWhenGameLaunch", U), n.subscribe("platformMsg/ClientService/Game.Init", c), n.subscribe("platformMsg/Kernel/System.Init", u), n.subscribe("onEnterNextStage", I), n.subscribe("onMakeRequest", C), n.subscribe("onResolveStage", v), n.subscribe("onInProgressStage", S), n.subscribe("onExitStage", T), n.subscribe("hideOctopusUI", p), n.subscribe("onStartGameInProgressStage", B), n.subscribe("onStartGameInProgressNextStage", L), n.subscribe("onResetNextStage", D), n.subscribe("RollUp.Stopped", x), {}
        }), require(["skbJet/component/gladPixiRenderer/gladPixiRenderer", "skbJet/component/gameMsgBus/GameMsgBus", "skbJet/component/gameMsgBus/PlatformMsgBusAdapter", "game/LoadController", "game/BackgroundController", "skbJet/componentCRDC/SlotGameControllers/gameSizeController", "game/ActionButtonController", "game/FreeSpinDialog", "game/MetersController", "game/BigWinController", "game/ReelController", "game/PaytableHelpController", "game/BetController", "game/AutoSpinController", "game/StatusBarController", "game/RollUp", "game/WinlineAnimController", "game/winLinesInfo", "game/MJPController", "game/BonusPicker", "game/CountryPicker", "game/BuoyBonus", "game/Sub2", "game/Sub3", "game/Sub1"], function(e, t) {
            function n(e) {
                c = e.serverConfig.channel, u = e.serverConfig.paramGame.assetPack
            }

            function r(n) {
                (s = n.response.OutcomeDetail.Stage, l = n.response.OutcomeDetail.NextStage, document.getElementById("game").style.backgroundColor = "rgba(255,255,255,0.01)", "INT" !== c) && (window.innerHeight > window.innerWidth && "tablet" === u ? (document.getElementById("game").style.visibility = "hidden", document.body.style.backgroundImage = "", document.getElementById("_rotateMessageWrapper").style.visibility = "visible") : window.innerHeight < window.innerWidth && "mobile" === u && (document.getElementById("game").style.visibility = "hidden", document.body.style.backgroundImage = "", document.getElementById("_rotateMessageWrapper").style.visibility = "visible"), window.addEventListener("resize", function() {
                    window.innerHeight > window.innerWidth && "tablet" === u ? (document.getElementById("game").style.visibility = "hidden", document.body.style.backgroundImage = "", document.getElementById("_rotateMessageWrapper").style.visibility = "visible") : window.innerHeight < window.innerWidth && "mobile" === u ? (document.getElementById("game").style.visibility = "hidden", document.body.style.backgroundImage = "", document.getElementById("_rotateMessageWrapper").style.visibility = "visible") : (document.getElementById("game").style.visibility = "visible", "BaseGame" === s && "BonusPicker" === l && e.lib._reelFrameLayer.pixiContainer.visible ? t.publish("updateBackground", s) : t.publish("updateBackground", l), document.getElementById("_rotateMessageWrapper").style.visibility = "hidden")
                }, !1));
                t.publish("nextState")
            }

            function i() {
                document.getElementById("game").style.backgroundColor = ""
            }

            function o() {
                document.getElementById("game").style.backgroundColor = ""
            }

            function a(e) {
                s = e.response.OutcomeDetail.Stage, l = e.response.OutcomeDetail.NextStage
            }
            var s, l, u, c = "MOB";
            t.subscribe("platformMsg/Kernel/System.Init", n), t.subscribe("onEnterNextStage", a), t.subscribe("onStartGameInitial", o), t.subscribe("onBeforeShowStage", r), t.subscribe("onStartGameInProgressStage", i)
        }), define("game", function() {})
}();