var __extends = this && this.__extends || function(a, b) {
    function c() {
        this.constructor = a
    }
    for (var d in b) b.hasOwnProperty(d) && (a[d] = b[d]);
    a.prototype = null === b ? Object.create(b) : (c.prototype = b.prototype, new c)
};
define("wcgf/vendors/typescript_collections/util", ["require", "exports"], function(a, b) {
        "use strict";

        function c(a, b) {
            return a < b ? -1 : a === b ? 0 : 1
        }

        function d(a, b) {
            return a === b
        }

        function e(a) {
            return null === a ? "COLLECTION_NULL" : h(a) ? "COLLECTION_UNDEFINED" : i(a) ? "$s" + a : "$o" + a.toString()
        }

        function f(a, c) {
            if (void 0 === c && (c = ","), null === a) return "COLLECTION_NULL";
            if (h(a)) return "COLLECTION_UNDEFINED";
            if (i(a)) return a.toString();
            var d = "{",
                e = !0;
            for (var f in a) b.has(a, f) && (e ? e = !1 : d += c, d = d + f + ":" + a[f]);
            return d + "}"
        }

        function g(a) {
            return "function" == typeof a
        }

        function h(a) {
            return void 0 === a
        }

        function i(a) {
            return "[object String]" === Object.prototype.toString.call(a)
        }

        function j(a) {
            return g(a) ? function(b, c) {
                return -1 * a(b, c)
            } : function(a, b) {
                return a < b ? 1 : a === b ? 0 : -1
            }
        }

        function k(a) {
            return function(b, c) {
                return 0 === a(b, c)
            }
        }
        var l = Object.prototype.hasOwnProperty;
        b.has = function(a, b) {
            return l.call(a, b)
        }, b.defaultCompare = c, b.defaultEquals = d, b.defaultToString = e, b.makeString = f, b.isFunction = g, b.isUndefined = h, b.isString = i, b.reverseCompareFunction = j, b.compareToEquals = k
    }), define("wcgf/vendors/typescript_collections/arrays", ["require", "exports", "wcgf/vendors/typescript_collections/util"], function(a, b, c) {
        "use strict";

        function d(a, b, d) {
            for (var e = d || c.defaultEquals, f = a.length, g = 0; g < f; g++)
                if (e(a[g], b)) return g;
            return -1
        }

        function e(a, b, d) {
            for (var e = d || c.defaultEquals, f = a.length, g = f - 1; g >= 0; g--)
                if (e(a[g], b)) return g;
            return -1
        }

        function f(a, b, c) {
            return d(a, b, c) >= 0
        }

        function g(a, b, c) {
            var e = d(a, b, c);
            return !(e < 0) && (a.splice(e, 1), !0)
        }

        function h(a, b, d) {
            for (var e = d || c.defaultEquals, f = a.length, g = 0, h = 0; h < f; h++) e(a[h], b) && g++;
            return g
        }

        function i(a, b, d) {
            var e = d || c.defaultEquals;
            if (a.length !== b.length) return !1;
            for (var f = a.length, g = 0; g < f; g++)
                if (!e(a[g], b[g])) return !1;
            return !0
        }

        function j(a) {
            return a.concat()
        }

        function k(a, b, c) {
            if (b < 0 || b >= a.length || c < 0 || c >= a.length) return !1;
            var d = a[b];
            return a[b] = a[c], a[c] = d, !0
        }

        function l(a) {
            return "[" + a.toString() + "]"
        }

        function m(a, b) {
            for (var c = 0, d = a; c < d.length; c++) {
                if (!1 === b(d[c])) return
            }
        }
        b.indexOf = d, b.lastIndexOf = e, b.contains = f, b.remove = g, b.frequency = h, b.equals = i, b.copy = j, b.swap = k, b.toString = l, b.forEach = m
    }), define("wcgf/vendors/typescript_collections/LinkedList", ["require", "exports", "wcgf/vendors/typescript_collections/util", "wcgf/vendors/typescript_collections/arrays"], function(a, b, c, d) {
        "use strict";
        var e = function() {
            function a() {
                this.firstNode = null, this.lastNode = null, this.nElements = 0
            }
            return a.prototype.add = function(a, b) {
                if (c.isUndefined(b) && (b = this.nElements), b < 0 || b > this.nElements || c.isUndefined(a)) return !1;
                var d = this.createNode(a);
                if (0 === this.nElements) this.firstNode = d, this.lastNode = d;
                else if (b === this.nElements) this.lastNode.next = d, this.lastNode = d;
                else if (0 === b) d.next = this.firstNode, this.firstNode = d;
                else {
                    var e = this.nodeAtIndex(b - 1);
                    d.next = e.next, e.next = d
                }
                return this.nElements++, !0
            }, a.prototype.first = function() {
                if (null !== this.firstNode) return this.firstNode.element
            }, a.prototype.last = function() {
                if (null !== this.lastNode) return this.lastNode.element
            }, a.prototype.elementAtIndex = function(a) {
                var b = this.nodeAtIndex(a);
                if (null !== b) return b.element
            }, a.prototype.indexOf = function(a, b) {
                var d = b || c.defaultEquals;
                if (c.isUndefined(a)) return -1;
                for (var e = this.firstNode, f = 0; null !== e;) {
                    if (d(e.element, a)) return f;
                    f++, e = e.next
                }
                return -1
            }, a.prototype.contains = function(a, b) {
                return this.indexOf(a, b) >= 0
            }, a.prototype.remove = function(a, b) {
                var d = b || c.defaultEquals;
                if (this.nElements < 1 || c.isUndefined(a)) return !1;
                for (var e = null, f = this.firstNode; null !== f;) {
                    if (d(f.element, a)) return f === this.firstNode ? (this.firstNode = this.firstNode.next, f === this.lastNode && (this.lastNode = null)) : f === this.lastNode ? (this.lastNode = e, e.next = f.next, f.next = null) : (e.next = f.next, f.next = null), this.nElements--, !0;
                    e = f, f = f.next
                }
                return !1
            }, a.prototype.clear = function() {
                this.firstNode = null, this.lastNode = null, this.nElements = 0
            }, a.prototype.equals = function(b, d) {
                var e = d || c.defaultEquals;
                return b instanceof a && (this.size() === b.size() && this.equalsAux(this.firstNode, b.firstNode, e))
            }, a.prototype.equalsAux = function(a, b, c) {
                for (; null !== a;) {
                    if (!c(a.element, b.element)) return !1;
                    a = a.next, b = b.next
                }
                return !0
            }, a.prototype.removeElementAtIndex = function(a) {
                if (!(a < 0 || a >= this.nElements)) {
                    var b;
                    if (1 === this.nElements) b = this.firstNode.element, this.firstNode = null, this.lastNode = null;
                    else {
                        var c = this.nodeAtIndex(a - 1);
                        null === c ? (b = this.firstNode.element, this.firstNode = this.firstNode.next) : c.next === this.lastNode && (b = this.lastNode.element, this.lastNode = c), null !== c && (b = c.next.element, c.next = c.next.next)
                    }
                    return this.nElements--, b
                }
            }, a.prototype.forEach = function(a) {
                for (var b = this.firstNode; null !== b && !1 !== a(b.element);) b = b.next
            }, a.prototype.reverse = function() {
                for (var a = null, b = this.firstNode, c = null; null !== b;) c = b.next, b.next = a, a = b, b = c;
                c = this.firstNode, this.firstNode = this.lastNode, this.lastNode = c
            }, a.prototype.toArray = function() {
                for (var a = [], b = this.firstNode; null !== b;) a.push(b.element), b = b.next;
                return a
            }, a.prototype.size = function() {
                return this.nElements
            }, a.prototype.isEmpty = function() {
                return this.nElements <= 0
            }, a.prototype.toString = function() {
                return d.toString(this.toArray())
            }, a.prototype.nodeAtIndex = function(a) {
                if (a < 0 || a >= this.nElements) return null;
                if (a === this.nElements - 1) return this.lastNode;
                for (var b = this.firstNode, c = 0; c < a; c++) b = b.next;
                return b
            }, a.prototype.createNode = function(a) {
                return {
                    element: a,
                    next: null
                }
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = e
    }), define("wcgf/core/events", ["require", "exports", "wcgf/vendors/typescript_collections/LinkedList"], function(a, b, c) {
        "use strict";
        ! function(a) {
            var b = function() {
                function a(a, b, c) {
                    this.data = b, this.type = a, this.target = c
                }
                return a
            }();
            a.Event = b;
            var d = function() {
                function a() {
                    this._listeners = {}
                }
                return a.prototype.addEventListener = function(a, b, d) {
                    this.hasEventListener(a, b, d) || (null == this._listeners[a] && (this._listeners[a] = new c.default), this._listeners[a].add({
                        func: b,
                        context: d
                    }))
                }, a.prototype.hasEventListener = function(a, b, c) {
                    var d = !1;
                    return null != this._listeners[a] && this._listeners[a].forEach(function(a) {
                        if (a.func === b && a.context === c) return d = !0, !1
                    }), d
                }, a.prototype.removeEventListener = function(a, b, c) {
                    if (null != this._listeners[a]) {
                        var d = this;
                        this._listeners[a].forEach(function(e) {
                            if (e.func === b && e.context === c) return d._listeners[a].remove(e), !1
                        })
                    }
                }, a.prototype.dispatchEvent = function(a) {
                    if (null != this._listeners[a.type])
                        for (var b = this._listeners[a.type].toArray(), c = 0, d = b; c < d.length; c++) {
                            var e = d[c];
                            e.func.call(e.context, a)
                        }
                }, a
            }();
            a.EventDispatcher = d
        }(b.events || (b.events = {}))
    }), define("wcgf/vendors/typescript_collections/Dictionary", ["require", "exports", "wcgf/vendors/typescript_collections/util"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a(a) {
                this.table = {}, this.nElements = 0, this.toStr = a || c.defaultToString
            }
            return a.prototype.getValue = function(a) {
                var b = this.table["$" + this.toStr(a)];
                if (!c.isUndefined(b)) return b.value
            }, a.prototype.setValue = function(a, b) {
                if (!c.isUndefined(a) && !c.isUndefined(b)) {
                    var d, e = "$" + this.toStr(a),
                        f = this.table[e];
                    return c.isUndefined(f) ? (this.nElements++, d = void 0) : d = f.value, this.table[e] = {
                        key: a,
                        value: b
                    }, d
                }
            }, a.prototype.remove = function(a) {
                var b = "$" + this.toStr(a),
                    d = this.table[b];
                if (!c.isUndefined(d)) return delete this.table[b], this.nElements--, d.value
            }, a.prototype.keys = function() {
                var a = [];
                for (var b in this.table)
                    if (c.has(this.table, b)) {
                        var d = this.table[b];
                        a.push(d.key)
                    }
                return a
            }, a.prototype.values = function() {
                var a = [];
                for (var b in this.table)
                    if (c.has(this.table, b)) {
                        var d = this.table[b];
                        a.push(d.value)
                    }
                return a
            }, a.prototype.forEach = function(a) {
                for (var b in this.table)
                    if (c.has(this.table, b)) {
                        var d = this.table[b],
                            e = a(d.key, d.value);
                        if (!1 === e) return
                    }
            }, a.prototype.containsKey = function(a) {
                return !c.isUndefined(this.getValue(a))
            }, a.prototype.clear = function() {
                this.table = {}, this.nElements = 0
            }, a.prototype.size = function() {
                return this.nElements
            }, a.prototype.isEmpty = function() {
                return this.nElements <= 0
            }, a.prototype.toString = function() {
                var a = "{";
                return this.forEach(function(b, c) {
                    a += "\n\t" + b + " : " + c
                }), a + "\n}"
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = d
    }), define("wcgf/sounds/SoundSprite", ["require", "exports", "wcgf/core/events"], function(a, b, c) {
        "use strict";
        var d = function(a) {
            function b(b, c, d, e, f) {
                void 0 === f && (f = !1);
                var g = a.call(this) || this;
                return g._volume = 1, g._pan = 0, g._loop = 0, g._soundInstances = new Array, g._position = 0, g._overlap = !1, g.onSoundLoop = function(a) {}, g.onSoundComplete = function(a) {
                    var b = g._soundInstances.indexOf(a.target);
                    b > -1 && g._soundInstances.splice(b, 1)
                }, g._spriteId = b, g._soundId = c, g._startTime = d, g._duration = e, g._overlap = f, g
            }
            return __extends(b, a), b.prototype.play = function() {
                if (this._soundInstances.length <= 0 || this._overlap) {
                    var a = createjs.Sound.play(this._soundId, {
                        interrupt: createjs.Sound.INTERRUPT_NONE,
                        loop: this._loop,
                        volume: this._volume,
                        pan: this._pan,
                        startTime: this._startTime,
                        duration: this._duration
                    });
                    a.position = this._position, this._soundInstances.push(a), a.addEventListener("loop", this.onSoundLoop), a.addEventListener("complete", this.onSoundComplete)
                } else
                    for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                        var d = c[b];
                        d.play()
                    }
            }, b.prototype.stop = function() {
                if (this._soundInstances.length > 0)
                    for (; this._soundInstances.length > 0;) {
                        var a = this._soundInstances.pop();
                        a.stop()
                    }
            }, b.prototype.pause = function() {
                if (this._soundInstances.length > 0)
                    for (var a = 0, b = this._soundInstances; a < b.length; a++) {
                        var c = b[a];
                        c.paused = !0
                    }
            }, b.prototype.resume = function() {
                if (this._soundInstances.length > 0)
                    for (var a = 0, b = this._soundInstances; a < b.length; a++) {
                        var c = b[a];
                        c.paused = !1
                    }
            }, Object.defineProperty(b.prototype, "position", {
                get: function() {
                    return this._soundInstances.length > 0 ? this._soundInstances[this._soundInstances.length - 1].position : 0
                },
                set: function(a) {
                    if (this._position = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.position = this._position
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "spriteId", {
                get: function() {
                    return this._spriteId
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "volume", {
                get: function() {
                    return this._volume
                },
                set: function(a) {
                    if (this._volume = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.volume = this.volume
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "pan", {
                get: function() {
                    return this._pan
                },
                set: function(a) {
                    if (this._pan = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.pan = this.pan
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "loop", {
                get: function() {
                    return this._soundInstances.length > 0 ? this._soundInstances[this._soundInstances.length - 1].loop : this._loop
                },
                set: function(a) {
                    if (this._loop = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.loop = this.loop
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "duration", {
                get: function() {
                    return this._duration
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "overlap", {
                get: function() {
                    return this._overlap
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        b.SoundSprite = d
    }), define("wcgf/sounds/SoundSpriteList", ["require", "exports", "wcgf/core/events"], function(a, b, c) {
        "use strict";
        var d = function(a) {
            function b(b, c, d, e) {
                void 0 === d && (d = "sequential"), void 0 === e && (e = !1);
                var f = a.call(this) || this;
                return f._volume = 1, f._pan = 0, f._loop = 0, f._soundInstances = new Array, f._position = 0, f._overlap = !1, f._currentIndex = -1, f.onSoundLoop = function(a) {}, f.onSoundComplete = function(a) {
                    var b = f._soundInstances.indexOf(a.target);
                    b > -1 && f._soundInstances.splice(b, 1)
                }, f._spriteId = b, f._soundSpriteDefs = c, f._type = d, f._overlap = e, f
            }
            return __extends(b, a), b.prototype.updateIndex = function() {
                if ("sequential" == this._type || this._soundSpriteDefs.length <= 1) ++this._currentIndex >= this._soundSpriteDefs.length && (this._currentIndex = 0);
                else {
                    for (var a = this._currentIndex; a == this._currentIndex;) a = Math.floor(Math.random() * this._soundSpriteDefs.length);
                    this._currentIndex = a
                }
            }, b.prototype.resetIndex = function() {
                this._currentIndex = -1
            }, b.prototype.play = function() {
                this.updateIndex();
                var a = this._soundSpriteDefs[this._currentIndex];
                if (this._soundInstances.length <= 0 || this._overlap) {
                    var b = createjs.Sound.play(a.soundId, {
                        interrupt: createjs.Sound.INTERRUPT_NONE,
                        loop: this.loop,
                        volume: this._volume,
                        pan: this._pan,
                        startTime: a.startTime,
                        duration: a.duration
                    });
                    b.position = this._position, this._soundInstances.push(b), b.addEventListener("loop", this.onSoundLoop), b.addEventListener("complete", this.onSoundComplete)
                } else
                    for (var c = 0, d = this._soundInstances; c < d.length; c++) {
                        var e = d[c];
                        e.play()
                    }
            }, b.prototype.stop = function() {
                if (this._soundInstances.length > 0)
                    for (; this._soundInstances.length > 0;) {
                        var a = this._soundInstances.pop();
                        a.stop()
                    }
            }, b.prototype.pause = function() {
                if (this._soundInstances.length > 0)
                    for (var a = 0, b = this._soundInstances; a < b.length; a++) {
                        var c = b[a];
                        c.paused = !0
                    }
            }, b.prototype.resume = function() {
                if (this._soundInstances.length > 0)
                    for (var a = 0, b = this._soundInstances; a < b.length; a++) {
                        var c = b[a];
                        c.paused = !1
                    }
            }, Object.defineProperty(b.prototype, "position", {
                get: function() {
                    return this._soundInstances.length > 0 ? this._soundInstances[this._soundInstances.length - 1].position : 0
                },
                set: function(a) {
                    if (this._position = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.position = this._position
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "spriteId", {
                get: function() {
                    return this._spriteId
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "volume", {
                get: function() {
                    return this._volume
                },
                set: function(a) {
                    if (this._volume = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.volume = this.volume
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "pan", {
                get: function() {
                    return this._pan
                },
                set: function(a) {
                    if (this._pan = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.pan = this.pan
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "loop", {
                get: function() {
                    return this._soundInstances.length > 0 ? this._soundInstances[this._soundInstances.length - 1].loop : this._loop
                },
                set: function(a) {
                    if (this._loop = a, this._soundInstances.length > 0)
                        for (var b = 0, c = this._soundInstances; b < c.length; b++) {
                            var d = c[b];
                            d.loop = this.loop
                        }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "overlap", {
                get: function() {
                    return this._overlap
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        b.SoundSpriteList = d
    }), define("wcgf/sounds/SoundManager", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/sounds/SoundSprite", "wcgf/sounds/SoundSpriteList", "wcgf/core/loaders"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function() {
            function a() {
                var b = this;
                if (this._soundSprites = new c.default, this._commands = new c.default, this._timers = new c.default, this._muted = !1, this._orientationMute = !1, this._deferredLoading = new c.default, this.onDelayTimer = function(a) {
                        if ("execute" == a.command.toLowerCase()) b.execute(a.commandId);
                        else {
                            var c = a.spriteId;
                            null == c && (c = a.spriteListId), null == c && (c = a.spriteListId);
                            var d = b.getSoundSprite(c);
                            if (null != d) switch (a.command.toLowerCase()) {
                                case "play":
                                    if (null != a.volume && (d.volume = a.volume), null != a.pan && (d.pan = a.pan), null != a.loop && (d.loop = a.loop), null != a.startPosition && (d.position = a.startPosition), null != a.sync) {
                                        var f = b.getSoundSprite(a.sync);
                                        null != f && (d.position = f.position)
                                    }
                                    d.play();
                                    break;
                                case "set":
                                    null != a.volume && (d.volume = a.volume), null != a.pan && (d.pan = a.pan), null != a.loop && (d.loop = a.loop), null != a.startPosition && (d.position = a.startPosition);
                                    break;
                                case "pause":
                                    d.pause();
                                    break;
                                case "resume":
                                    d.resume();
                                    break;
                                case "stop":
                                    d.stop();
                                    break;
                                case "resetspritelist":
                                    d instanceof e.SoundSpriteList && d.resetIndex();
                                    break;
                                case "tween":
                                    var g = {};
                                    null != a.volume && (g.volume = a.volume), null != a.pan && (g.pan = a.pan), createjs.Tween.get(d, null).to(g, a.duration)
                            }
                        }
                    }, a._soundManagerInstance) throw new Error("Error: Instantiation failed: Use SoundManager.getInstance() instead of new.");
                a._soundManagerInstance = this
            }
            return a.getInstance = function() {
                return a._soundManagerInstance
            }, a.prototype.setSounds = function(a) {
                this._soundManifest = a.soundManifest;
                for (var b in a.soundDefinitions.soundSprites) {
                    var c = a.soundDefinitions.soundSprites[b],
                        f = new d.SoundSprite(b, c.soundId, c.startTime, c.duration, c.overlap);
                    this._soundSprites.setValue(b, f)
                }
                for (var g in a.soundDefinitions.spriteList) {
                    for (var h = new Array, i = 0, j = a.soundDefinitions.spriteList[g].items; i < j.length; i++) {
                        var b = j[i],
                            c = a.soundDefinitions.soundSprites[b];
                        null != c && h.push(c)
                    }
                    var f = new e.SoundSpriteList(g, h, a.soundDefinitions.spriteList[g].type, a.soundDefinitions.spriteList[g].overlap);
                    this._soundSprites.setValue(g, f)
                }
                for (var k in a.soundDefinitions.commands) this._commands.setValue(k, a.soundDefinitions.commands[k]);
                this.setDeferredLoading(a.deferredLoading);
                var l, m, n = this;
                void 0 !== document.hidden ? (m = "hidden", l = "visibilitychange") : void 0 !== document.msHidden ? (m = "msHidden", l = "msvisibilitychange") : void 0 !== document.webkitHidden && (m = "webkitHidden", l = "webkitvisibilitychange"), document.addEventListener(l, function() {
                    n.setMute(document[m])
                }, !1), document.addEventListener("click", function(a) {
                    null != createjs.WebAudioSoundInstance.context && createjs.WebAudioSoundInstance.context.resume()
                }, !1)
            }, a.prototype.setDeferredLoading = function(a) {
                if (null != a)
                    for (var b = 0, c = a; b < c.length; b++) {
                        var d = c[b];
                        this._deferredLoading.setValue(d.id, {
                            manifest: d,
                            loader: new f.loaders.CJSAssetLoader
                        })
                    }
            }, a.prototype.getDeferredLoadingSrc = function(a) {
                var b = null;
                return this._deferredLoading.containsKey(a) && (b = this._deferredLoading.getValue(a).manifest.src), b
            }, a.prototype.getDeferredLoader = function(a) {
                return this._deferredLoading.containsKey(a) ? this._deferredLoading.getValue(a).loader : null
            }, a.prototype.setMute = function(a) {
                this._muted || this._orientationMute || createjs.Sound.muted == a || (createjs.Sound.muted = a)
            }, a.prototype.getSoundSprite = function(a) {
                return null != a && this._soundSprites.containsKey(a) ? this._soundSprites.getValue(a) : null
            }, a.prototype.execute = function(a) {
                if (this._commands.containsKey(a)) {
                    this.clearTimersAndTweens(a);
                    for (var b = this._commands.getValue(a), c = 0; c < b.length; c++) {
                        var d = b[c];
                        if (null != d.delay || d.delay <= 0) {
                            var e = setTimeout(this.onDelayTimer, d.delay, d),
                                f = d.spriteId;
                            null == f && (f = d.spriteListId);
                            var g = this.getSoundSprite(f),
                                h = null == g || g.overlap;
                            "play" == d.command.toLowerCase() && h || this.addTimer(d, e)
                        } else this.onDelayTimer(d)
                    }
                }
            }, a.prototype.getSpriteIds = function(a, b) {
                if (void 0 === b && (b = 0), b > 10) throw new Error("[SoundManager] Error: reach max recursive call : " + a.commandId);
                b++;
                var c = new Array;
                if (null != a.spriteId) c.push(a.spriteId);
                else if (null != a.spriteListId) c.push(a.spriteListId);
                else if (null != a.commandId)
                    for (var d = 0, e = this._commands.getValue(a.commandId); d < e.length; d++) {
                        var f = e[d];
                        c = c.concat(this.getSpriteIds(f, b))
                    }
                return c.filter(function(a, b, c) {
                    return c.indexOf(a) === b
                })
            }, a.prototype.addTimer = function(a, b) {
                for (var c = 0, d = this.getSpriteIds(a); c < d.length; c++) {
                    var e = d[c];
                    this._timers.containsKey(e) || this._timers.setValue(e, new Array), this._timers.getValue(e).push(b)
                }
            }, a.prototype.clearTimersAndTweens = function(a) {
                for (var b = new Array, c = 0, d = this._commands.getValue(a); c < d.length; c++) {
                    var e = d[c];
                    b = b.concat(this.getSpriteIds(e))
                }
                b = b.filter(function(a, b, c) {
                    return c.indexOf(a) === b
                });
                for (var f = 0, g = b; f < g.length; f++) {
                    var h = g[f],
                        i = this.getSoundSprite(h);
                    if (null != i && createjs.Tween.removeTweens(i), this._timers.containsKey(h))
                        for (; this._timers.getValue(h).length > 0;) {
                            var j = this._timers.getValue(h).pop();
                            clearTimeout(j)
                        }
                }
            }, Object.defineProperty(a.prototype, "mute", {
                get: function() {
                    return this._muted
                },
                set: function(a) {
                    this._muted = a, this.updateCreateJsMuteState()
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "orientationMute", {
                get: function() {
                    return this._orientationMute
                },
                set: function(a) {
                    this._orientationMute = a, this.updateCreateJsMuteState()
                },
                enumerable: !0,
                configurable: !0
            }), a.prototype.updateCreateJsMuteState = function() {
                var a = this._muted || this._orientationMute;
                createjs.Sound.muted != a && (createjs.Sound.muted = a)
            }, Object.defineProperty(a.prototype, "soundManifest", {
                get: function() {
                    return this._soundManifest
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "soundSprites", {
                get: function() {
                    return this._soundSprites
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "commands", {
                get: function() {
                    return this._commands
                },
                enumerable: !0,
                configurable: !0
            }), a
        }();
        g._soundManagerInstance = new g, b.SoundManager = g
    }), define("wcgf/core/loaders", ["require", "exports", "wcgf/core/events", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/core/AssetManager", "wcgf/sounds/SoundManager"], function(a, b, c, d, e, f) {
        "use strict";
        ! function(a) {
            var b = function(a) {
                function b(b) {
                    var c = a.call(this) || this;
                    return c.cacheBuster = b, c
                }
                return __extends(b, a), b.prototype.load = function(a) {
                    var d = this;
                    this.httpReq = new XMLHttpRequest, this.httpReq.withCredentials = !1, this.httpReq.addEventListener("load", function(a) {
                        if (200 != this.status) throw "Error when loading json asset : " + a;
                        d.dispatchEvent(new c.events.Event(b.COMPLETE, JSON.parse(this.response), d))
                    }), a = this.addCacheBusting(a), this.httpReq.open("GET", a), this.httpReq.send()
                }, b.prototype.addCacheBusting = function(a) {
                    if (null == this.cacheBuster || "" == this.cacheBuster) return a;
                    var b = /\?.*$/g,
                        c = "revisionTag=" + this.cacheBuster;
                    return b.test(a) ? a += "&" + c : a += "?" + c, a
                }, b
            }(c.events.EventDispatcher);
            b.LOAD_TIMEOUT = 12e4, b.COMPLETE = "JsonLoaderComplete", a.JsonLoader = b;
            var g = function(b) {
                function e(a, c) {
                    var e = b.call(this) || this;
                    return e.loaders = [], e._items = new d.default, e._isLoading = !1, e._isLoaded = !1, e.cacheBuster = a, e.id = c, e
                }
                return __extends(e, b), e.prototype.load = function(a) {
                    if (null == a || 0 == a.length) this._isLoaded = !0, this._isLoading = !1, this.dispatchEvent(new c.events.Event(e.COMPLETE, {
                        progress: 100
                    }, this));
                    else {
                        this._isLoading = !0;
                        for (var b = 0, d = a; b < d.length; b++) {
                            var f = d[b];
                            f.src = this.addCacheBusting(f.src), this._items.setValue(f.id, {
                                id: f.id,
                                type: f.type,
                                data: null,
                                progress: 0
                            })
                        }
                        this.queue = new createjs.LoadQueue(!1), this.queue.installPlugin(createjs.Sound), createjs.Sound.alternateExtensions = ["mp3"];
                        var g = this;
                        this.queue.addEventListener("fileload", function(a) {
                            g.onFileload(a)
                        }), this.queue.addEventListener("progress", function(a) {
                            g.onProgress(a)
                        }), this.queue.addEventListener("complete", function(a) {
                            g.onComplete(a)
                        }), this.queue.addEventListener("error", function(a) {
                            g.onError(a)
                        }), this.setTimeout(a), this.queue.loadManifest(a)
                    }
                }, e.prototype.addCacheBusting = function(a) {
                    if (null == this.cacheBuster || "" == this.cacheBuster) return a;
                    var b = /\?.*$/g,
                        c = "revisionTag=" + this.cacheBuster;
                    return b.test(a) ? a += "&" + c : a += "?" + c, a
                }, e.prototype.setTimeout = function(a, b) {
                    void 0 === b && (b = e.LOAD_TIMEOUT);
                    for (var c = 0, d = a; c < d.length; c++) {
                        d[c].loadTimeout = b
                    }
                }, e.prototype.onFileload = function(a) {
                    var b = a.item.src.substring(0, a.item.src.lastIndexOf("/") + 1);
                    if ("javascript" == a.item.type) {
                        if (null != window[a.item.id]) {
                            var d = window[a.item.id].properties.manifest;
                            if (null != d && d.length > 0) {
                                var f = this.createAssetLoader(a.item.id);
                                this.loaders.push(f), f.addEventListener(e.COMPLETE, this.onSubComplete, this), f.addEventListener(e.PROGRESS, this.onSubProgress, this);
                                for (var g = 0, h = d; g < h.length; g++) {
                                    var i = h[g];
                                    i.src = b + i.src
                                }
                                f.load(d)
                            } else this._items.getValue(a.item.id).progress = 100
                        }
                    } else "image" == a.item.type && (window.images[a.item.id] = a.result), this._items.getValue(a.item.id).progress = 100;
                    null == this._items.getValue(a.item.id).type && (this._items.getValue(a.item.id).type = a.item.type), this.dispatchEvent(new c.events.Event(e.PROGRESS, {
                        progress: this.getProgress()
                    }, this)), this.getProgress() >= 100 && this.loadComplete()
                }, e.prototype.createAssetLoader = function(b) {
                    return new a.CJSAssetLoader(this.cacheBuster, b)
                }, e.prototype.onProgress = function(a) {}, e.prototype.onComplete = function(a) {
                    this.queue.removeAllEventListeners()
                }, e.prototype.onError = function(a) {}, e.prototype.onSubComplete = function(a) {
                    this.getProgress() >= 100 && this.loadComplete()
                }, e.prototype.onSubProgress = function(a) {
                    var b = a.target.id,
                        d = a.target.getProgress();
                    this._items.getValue(b).progress = d, this.dispatchEvent(new c.events.Event(e.PROGRESS, {
                        progress: this.getProgress()
                    }, this))
                }, e.prototype.loadComplete = function() {
                    var a = window[this.id];
                    if (null != a)
                        for (var b = 0; b < a.ssMetadata.length;) window.ss[a.ssMetadata[b].name] = new createjs.SpriteSheet({
                            images: [this.queue.getResult(a.ssMetadata[b].name)],
                            frames: a.ssMetadata[b].frames
                        }), b++;
                    var d = this;
                    this._items.forEach(function(a, b) {
                        b.data = d.queue.getResult(b.id)
                    }), this._isLoading = !1, this._isLoaded = !0, this.dispatchEvent(new c.events.Event(e.COMPLETE, {
                        progress: this.getProgress()
                    }, this))
                }, e.prototype.getProgress = function() {
                    var a = 0,
                        b = 0;
                    return this._items.forEach(function(c, d) {
                        b++, a += d.progress
                    }), b <= 0 ? 0 : a / b
                }, Object.defineProperty(e.prototype, "isLoaded", {
                    get: function() {
                        return this._isLoaded
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isLoading", {
                    get: function() {
                        return this._isLoading
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "items", {
                    get: function() {
                        return this._items
                    },
                    enumerable: !0,
                    configurable: !0
                }), e
            }(c.events.EventDispatcher);
            g.COMPLETE = "CJSAssetLoaderComplete", g.PROGRESS = "CJSAssetLoaderProgress", g.LOAD_TIMEOUT = 12e4, a.CJSAssetLoader = g;
            var h = function(a) {
                function b(b, c) {
                    var d = a.call(this) || this;
                    return d._loaders = [], d
                }
                return __extends(b, a), b.prototype.load = function(a) {
                    for (var b = 0, d = a; b < d.length; b++) {
                        var h = d[b],
                            i = e.AssetManager.getInstance().getDeferredLoader(h),
                            j = e.AssetManager.getInstance().getDeferredLoadingSrc(h);
                        null == i && (i = f.SoundManager.getInstance().getDeferredLoader(h), j = f.SoundManager.getInstance().getDeferredLoadingSrc(h)), null != i && (this._loaders.push(i), i.isLoaded || (i.addEventListener(g.PROGRESS, this.onLoaderProgress, this), i.addEventListener(g.COMPLETE, this.onLoaderComplete, this), i.isLoading || i.load([{
                            id: h,
                            src: j
                        }])))
                    }
                    this.checkComplete() && (this.dispatchEvent(new c.events.Event(g.COMPLETE, {
                        progress: this.getProgress()
                    }, this)), this._loaders = [])
                }, b.prototype.onLoaderProgress = function(a) {
                    this.dispatchEvent(new c.events.Event(g.PROGRESS, {
                        progress: this.getProgress()
                    }, this))
                }, b.prototype.onLoaderComplete = function(a) {
                    a.target.removeEventListener(g.PROGRESS, this.onLoaderProgress, this), a.target.removeEventListener(g.COMPLETE, this.onLoaderComplete, this), this.checkComplete() && (this.dispatchEvent(new c.events.Event(g.COMPLETE, {
                        progress: this.getProgress()
                    }, this)), this._loaders = [])
                }, b.prototype.getProgress = function() {
                    for (var a = 0, b = 0, c = this._loaders; b < c.length; b++) {
                        a += c[b].getProgress()
                    }
                    return a / this._loaders.length
                }, b.prototype.checkComplete = function() {
                    for (var a = 0, b = this._loaders; a < b.length; a++) {
                        if (!b[a].isLoaded) return !1
                    }
                    return !0
                }, b
            }(c.events.EventDispatcher);
            a.DeferredAssetLoader = h
        }(b.loaders || (b.loaders = {}))
    }), define("wcgf/core/AssetManager", ["require", "exports", "wcgf/core/events", "wcgf/core/loaders", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d, e) {
        "use strict";
        var f = createjs.MovieClip,
            g = function(a) {
                function b() {
                    var c = a.call(this) || this;
                    if (c._clientConfigData = {
                            assetPack: null,
                            language: null,
                            gameWindowWidth: 0,
                            gameWindowHeight: 0,
                            revisionTag: null
                        }, c._skins = new e.default, c._orientation = "landscape", c._deferredLoading = new e.default, c._loadInfo = new e.default, b._assetManagerInstance) throw new Error("Error: Instantiation failed: Use AssetManager.getInstance() instead of new.");
                    return b._assetManagerInstance = c, c
                }
                return __extends(b, a), b.prototype.setAssetIds = function(a) {
                    this._assetIds = a
                }, b.getInstance = function() {
                    return b._assetManagerInstance
                }, b.prototype.getSkin = function(a) {
                    var b;
                    return this._skins.containsKey(a) ? b = this._skins.getValue(a) : null != window[a] && null != window[a][a] ? (b = new window[a][a], b instanceof f && window[a].properties && window[a].properties.fps && (b.framerate = window[a].properties.fps), this._skins.setValue(a, b), this.updateOrientation()) : null != this._assetIds && null != this._assetIds[a] && (b = this.getNewAsset(a), this._skins.setValue(a, b), this.updateOrientation()), b
                }, b.prototype.getAsset = function(a) {
                    var b, c = null;
                    b = null != this._assetIds && null != this._assetIds[a] ? this._assetIds[a].split(".") : a.split(".");
                    var d = b.shift();
                    if (this._skins.containsKey(d) && null != (c = this.getSkin(d)))
                        for (var e = 0, f = b; e < f.length; e++) {
                            var g = f[e];
                            null != c && (c = c[g])
                        }
                    return c
                }, b.prototype.getSubAsset = function(a, b) {
                    var c, d = a;
                    if (null != (c = null != this._assetIds && null != this._assetIds[b] ? this._assetIds[b].split(".") : b.split(".")) && c.length > 0)
                        for (var e = 0, f = c; e < f.length; e++) {
                            var g = f[e];
                            d = d[g]
                        } else d = null;
                    return d
                }, b.prototype.getNewAsset = function(a) {
                    var b, c = window;
                    if (null != (b = null != this._assetIds && null != this._assetIds[a] ? this._assetIds[a].split(".") : a.split(".")) && b.length > 0)
                        for (var d = 0, e = b; d < e.length; d++) {
                            var f = e[d];
                            c = c[f]
                        } else c = null;
                    return null != c ? new c : null
                }, b.prototype.getMapId = function(a) {
                    return null != this._assetIds && null != this._assetIds[a] ? this._assetIds[a] : null
                }, b.prototype.setOrientation = function(a) {
                    this._orientation != a && (this._orientation = a, this.updateOrientation(), this.dispatchEvent(new c.events.Event(b.ORIENTATION_CHANGE, null, this)))
                }, b.prototype.getOrientation = function() {
                    return this._orientation
                }, b.prototype.updateOrientation = function() {
                    var a = this;
                    this._skins.forEach(function(b, c) {
                        for (var d = !1, e = 0, f = c.labels; e < f.length; e++) {
                            if (f[e].label == a._orientation) {
                                d = !0;
                                break
                            }
                        }
                        d && c.gotoAndStop(a._orientation)
                    })
                }, b.prototype.setDeferredLoading = function(a) {
                    if (null != a)
                        for (var b = 0, c = a; b < c.length; b++) {
                            var e = c[b];
                            this._deferredLoading.setValue(e.id, {
                                manifest: e,
                                loader: new d.loaders.CJSAssetLoader
                            })
                        }
                }, b.prototype.getDeferredLoadingSrc = function(a) {
                    var b = null;
                    return this._deferredLoading.containsKey(a) && (b = this._deferredLoading.getValue(a).manifest.src), b
                }, b.prototype.getDeferredLoader = function(a) {
                    return this._deferredLoading.containsKey(a) ? this._deferredLoading.getValue(a).loader : null
                }, Object.defineProperty(b.prototype, "clientConfigData", {
                    get: function() {
                        return this._clientConfigData
                    },
                    set: function(a) {
                        this._clientConfigData = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), b
            }(c.events.EventDispatcher);
        g.LANDSCAPE_ORIENTATION = "landscape", g.PORTRAIT_ORIENTATION = "portrait", g.ORIENTATION_CHANGE = "AssetManagerOrientationChange", g._assetManagerInstance = new g, b.AssetManager = g
    }), define("wcgf/core/ObjectPool", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a(a, b, c) {
                this._pool = [], this._creator = a, this._reset = b, this._maxSize = c || 0
            }
            return a.prototype.createObjects = function(a, b) {
                if (this._maxSize > 0) {
                    var c = this._maxSize - this._pool.length;
                    a = Math.min(a, c)
                }
                for (var d = 0; d < a; d++) this.returnObject(this._creator(b))
            }, a.prototype.returnObject = function(a) {
                null != a && (null != this._reset && this._reset(a), (this._maxSize <= 0 || this._pool.length < this._maxSize) && this._pool.push(a))
            }, a.prototype.getObject = function(a) {
                return this._pool.length > 0 ? this._pool.shift() : this._creator(a)
            }, a.prototype.clear = function() {
                this._pool = []
            }, Object.defineProperty(a.prototype, "size", {
                get: function() {
                    return this._pool.length
                },
                enumerable: !0,
                configurable: !0
            }), a
        }();
        b.ObjectPool = c
    }), define("wcgf/core/AssetPoolManager", ["require", "exports", "wcgf/core/AssetManager", "wcgf/core/ObjectPool", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
                function b() {
                    return a.apply(this, arguments) || this
                }
                return __extends(b, a), b
            }(d.ObjectPool),
            g = function() {
                function a() {
                    var b = this;
                    if (this._assetPools = new e.default, this.createAsset = function(a) {
                            b._assetPools.getValue(a).size;
                            return c.AssetManager.getInstance().getNewAsset(a)
                        }, this.resetAsset = function(a) {
                            a instanceof createjs.MovieClip && a.stop(), a.x = 0, a.y = 0
                        }, a._assetPoolManagerInstance) throw new Error("Error: Instantiation failed: Use GlobalPoolManager.getInstance() instead of new.");
                    a._assetPoolManagerInstance = this
                }
                return a.getInstance = function() {
                    return a._assetPoolManagerInstance
                }, a.prototype.initAsset = function(a, b, c) {
                    void 0 === b && (b = 0), this._assetPools.containsKey(a) || this._assetPools.setValue(a, new f(this.createAsset, this.resetAsset, c)), this._assetPools.getValue(a).createObjects(b, a)
                }, a.prototype.getAsset = function(a) {
                    return this._assetPools.containsKey(a) || this._assetPools.setValue(a, new f(this.createAsset, this.resetAsset)), this._assetPools.getValue(a).getObject(a)
                }, a.prototype.returnAsset = function(a, b) {
                    this._assetPools.containsKey(a) || this._assetPools.setValue(a, new f(this.createAsset, this.resetAsset)), this._assetPools.getValue(a).returnObject(b)
                }, a.prototype.printPools = function() {
                    this._assetPools.forEach(function(a, b) {})
                }, a
            }();
        g._assetPoolManagerInstance = new g, b.AssetPoolManager = g
    }), define("wcgf/core/CookieManager", ["require", "exports", "wcgf/core/events"], function(a, b, c) {
        "use strict";
        var d = function(a) {
            function b() {
                var c = a.call(this) || this;
                if (c._cookieName = "igt_game", c._data = null, b._cookieManager) throw new Error("Error: Instantiation failed: Use AssetManager.getInstance() instead of new.");
                return b._cookieManager = c, c
            }
            return __extends(b, a), b.getInstance = function() {
                return b._cookieManager
            }, b.prototype.readData = function() {
                var a = new RegExp("(?:^|; )" + encodeURIComponent(this._cookieName) + "=([^;]*)").exec(document.cookie),
                    b = null;
                if (null != a && null != a[1]) try {
                    b = JSON.parse(a[1])
                } catch (c) {
                    b = a ? a[1] : null
                }
                this._data = b
            }, b.prototype.writeData = function() {
                var a = new Date;
                a.setTime(a.getTime() + 63072e7);
                var b = "; expires=" + a.toUTCString();
                document.cookie = this._cookieName + "=" + JSON.stringify(this._data) + b + "; path=/"
            }, b.prototype.getObject = function(a) {
                return this.readData(), null != this._data && null != this._data[a] ? this._data[a] : null
            }, b.prototype.setObject = function(a, b) {
                this.readData(), null == this._data && (this._data = {}), this._data[a] = b, this.writeData()
            }, b.prototype.clearObject = function(a) {
                this.readData(), null != this._data && null != this._data[a] && delete this._data[a], this.writeData()
            }, b.prototype.remove = function() {
                document.cookie = this._cookieName + "=; expires=-1; path=/"
            }, Object.defineProperty(b.prototype, "cookieName", {
                get: function() {
                    return this._cookieName
                },
                set: function(a) {
                    this._cookieName = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        d._cookieManager = new d, b.CookieManager = d
    }), define("wcgf/core/CurrencyTextConverter", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.precision = -1, this.decimalSeparatorTo = ".", this.alignSymbol = "left", this.currencySymbol = "X", this.useThousandsSeparator = !0, this.thousandsSeparatorTo = ","
            }
            return a.prototype.CurrencyTextConverter = function() {}, a.prototype.format = function(a) {
                var b = "";
                b = -1 == this.precision ? a.toString() : 0 <= this.precision && this.precision <= 20 ? a.toFixed(this.precision) : a.toFixed(2);
                var c = new RegExp(/[.]/g);
                if (b = b.replace(c, this.decimalSeparatorTo), this.useThousandsSeparator) {
                    var d, e = b.indexOf(this.decimalSeparatorTo),
                        f = "";
                    e > -1 ? (d = b.substr(0, e), f = -1 == e ? "" : b.substring(e, b.length)) : d = b;
                    for (var g = "", h = d.length - 3; h > 0;) g = this.thousandsSeparatorTo + d.substr(h) + g, d = d.substr(0, h), h -= 3;
                    b = d + g + f
                }
                return "left" == this.alignSymbol ? b = this.currencySymbol + b : b += this.currencySymbol, b
            }, a
        }();
        b.CurrencyTextConverter = c
    }), define("wcgf/core/datamodel", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c) {
        "use strict";
        ! function(a) {
            var b = function() {
                function a() {
                    this.singleRTP = !1
                }
                return a
            }();
            a.PaytableStatisticsDef = b;
            var d = function() {
                function a() {
                    this.picks = []
                }
                return a
            }();
            a.PickerInfoDef = d;
            var e = function() {
                function a() {}
                return a
            }();
            a.PickDef = e;
            var f = function() {
                function a() {}
                return a
            }();
            a.PickOutcomeDef = f;
            var g = function() {
                function a() {
                    this.prizes = []
                }
                return a
            }();
            a.PrizeInfoDef = g;
            var h = function() {
                function a() {
                    this.prizesPay = [], this.symbols = []
                }
                return a
            }();
            a.PrizeDef = h;
            var i = function() {
                function a() {}
                return a
            }();
            a.PrizePayDef = i;
            var j = function() {
                function a() {}
                return a
            }();
            a.SymbolDef = j;
            var k = function() {
                function a() {
                    this.strips = new c.default
                }
                return a
            }();
            a.StripInfoDef = k;
            var l = function() {
                function a() {}
                return a
            }();
            a.StripDef = l;
            var m = function() {
                function a() {}
                return a
            }();
            a.StopDef = m;
            var n = function() {
                function a() {}
                return a
            }();
            a.PatternSliderInfoDef = n;
            var o = function() {
                function a() {}
                return a
            }();
            a.PatternInfoDef = o;
            var p = function() {
                function a() {}
                return a
            }();
            a.BetInfoDef = p;
            var q = function() {
                function a() {}
                return a
            }();
            a.AwardCapInfoDef = q;
            var r = function() {
                function a() {}
                return a
            }();
            a.TriggerInfoDef = r;
            var s = function() {
                function a() {}
                return a
            }();
            a.CurrencyCapDef = s;
            var t = function() {
                function a() {}
                return a
            }();
            a.DenominationDef = t;
            var u = function() {
                function a() {}
                return a
            }();
            a.GameBetInfoDef = u;
            var v = function() {
                function a() {}
                return a
            }();
            a.GameData = v;
            var w = function() {
                function a() {
                    this.steps = []
                }
                return a
            }();
            a.AutoSpinDef = w;
            var x = function() {
                function a() {
                    this.mapping = new c.default
                }
                return a
            }();
            a.KeyValuePairInfoDef = x;
            var y = function() {
                function a() {}
                return a
            }();
            a.MapInfoDef = y;
            var z = function() {
                function a() {}
                return a
            }();
            a.BaseCurrencyDef = z;
            var A = function() {
                function a() {}
                return a
            }();
            a.JackpotValueDef = A;
            var B = function() {
                function a() {
                    this.paytableStatistics = null, this.pickerInfo = new c.default, this.prizesInfo = new c.default, this.stripsInfo = new c.default, this.longStripsInfo = new c.default, this.patternSliderInfo = null, this.awardCapInfo = null, this.denominationList = [], this.gameBetInfo = null, this.gameData = null, this.autoSpinInfo = null, this.keyValuePairInfo = new c.default
                }
                return a
            }();
            a.PaytableResponse = B;
            var C = function() {
                function a() {}
                return a
            }();
            a.OutcomeDetailDef = C;
            var D = function() {
                function a() {}
                return a
            }();
            a.ObfuscatedOutcomeDef = D;
            var E = function() {
                function a() {}
                return a
            }();
            a.DecryptedOutcomeDef = E;
            var F = function() {
                function a() {}
                return a
            }();
            a.PatternSliderInputDef = F;
            var G = function() {
                function a() {}
                return a
            }();
            a.PickerSummaryOutcomeDef = G;
            var H = function() {
                function a() {}
                return a
            }();
            a.CurrentLayerDef = H;
            var I = function() {
                function a() {
                    this.reels = new c.default
                }
                return a
            }();
            a.PopulationOutcomeDef = I;
            var J = function() {
                function a() {
                    this.cells = []
                }
                return a
            }();
            a.ReelDef = J;
            var K = function() {
                function a() {}
                return a
            }();
            a.CellDef = K;
            var L = function() {
                function a() {
                    this.balances = new c.default
                }
                return a
            }();
            a.BalancesDef = L;
            var M = function() {
                function a() {}
                return a
            }();
            a.BalanceDef = M;
            var N = function() {
                function a() {
                    this.highlights = []
                }
                return a
            }();
            a.HighlightOutcomeDef = N;
            var O = function() {
                function a() {
                    this.cells = []
                }
                return a
            }();
            a.HighlightDef = O;
            var P = function() {
                function a() {
                    this.prizes = []
                }
                return a
            }();
            a.PrizeOutcomeDef = P;
            var Q = function() {
                function a() {}
                return a
            }();
            a.OutcomePrizeDef = Q;
            var R = function() {
                function a() {}
                return a
            }();
            a.FreeSpinOutcomeDef = R;
            var S = function() {
                function a() {}
                return a
            }();
            a.MultiplierOutcomeDef = S;
            var T = function() {
                function a() {}
                return a
            }();
            a.MultiplierDef = T;
            var U = function() {
                function a() {}
                return a
            }();
            a.AwardCapOutcomeDef = U;
            var V = function() {
                function a() {
                    this.trigger = []
                }
                return a
            }();
            a.TriggerOutcomeDef = V;
            var W = function() {
                function a() {}
                return a
            }();
            a.TriggerDef = W;
            var X = function() {
                function a() {}
                return a
            }();
            a.PromotionalFreeSpinDef = X;
            var Y = function() {
                function a() {
                    this.populationOutcomes = new c.default, this.outcomeDetail = null, this.pickerInput = null, this.pickerOutcome = null, this.keyValuePairInfo = null, this.obfuscatedOutcome = null, this.decryptedOutcome = null, this.patternSliderInput = null, this.pickerSummaryOutcomes = null, this.balances = null, this.cumulativePayout = 0, this.prizeOutcomes = new c.default, this.highlightOutcomes = new c.default, this.freeSpinOutcomes = new c.default, this.multiplierOutcome = null, this.multiplierOutcomes = new c.default, this.awardCapOutcome = null, this.triggerOutcome = new c.default, this.promotionalFreeSpin = null
                }
                return a
            }();
            a.GameLogicResponse = Y;
            var Z = function() {
                function a() {}
                return a
            }();
            a.CurrencyDef = Z;
            var $ = function() {
                function a() {}
                return a
            }();
            a.ChipSetDef = $;
            var _ = function() {
                function a() {
                    this.currency = null, this.chipSetDefinitions = []
                }
                return a
            }();
            a.CurrencyResponse = _
        }(b.datamodel || (b.datamodel = {}))
    }), define("wcgf/core/CurrencyFormatter", ["require", "exports", "wcgf/core/CurrencyTextConverter"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a() {
                this.formatter = new c.CurrencyTextConverter, a._currencyFormatterInstance = this
            }
            return a.getInstance = function() {
                return a._currencyFormatterInstance
            }, a.prototype.setCurrencyResponse = function(a, b) {
                this.nativeCurrencyCode = b, this.allCurrencyResponses = a.data.currencyResponse, this.selectCurrency(this.nativeCurrencyCode)
            }, a.prototype.selectCurrency = function(a) {
                this.currencyResponse = this.allCurrencyResponses.getValue(a), null == this.currencyResponse && (this.currencyResponse = this.allCurrencyResponses.getValue(this.nativeCurrencyCode)), this.formatter.decimalSeparatorTo = this.currencyResponse.currency.decimalSeparator, this.formatter.alignSymbol = this.currencyResponse.currency.majorSymbolAlignment, this.formatter.thousandsSeparatorTo = this.currencyResponse.currency.thousandsSeparator, "_" == this.formatter.thousandsSeparatorTo && (this.formatter.thousandsSeparatorTo = " "), this.formatter.useThousandsSeparator = this.currencyResponse.currency.useThousandsSeparator
            }, a.prototype.getCurrencyResponse = function() {
                return this.currencyResponse
            }, a.prototype.format = function(a, b, c, d, e) {
                if (void 0 === b && (b = 1), void 0 === c && (c = !1), void 0 === d && (d = !1), void 0 === e && (e = null), null != e && this.selectCurrency(e), a *= b, d && this.isFractionalInt(a)) return this.formatMinorCurrencyInt(a);
                c && this.isWholeInt(a) ? this.formatter.precision = 0 : this.formatter.precision = this.currencyResponse.currency.decimalPrecision, this.formatter.currencySymbol = this.getMajorCurrencySymbol();
                var f;
                return f = d && this.currencyResponse.currency.minorCurrencyLock ? this.formatMinorCurrencyInt(a) : this.formatter.format(a), null != e && this.selectCurrency(this.nativeCurrencyCode), f
            }, a.prototype.getMajorCurrencySymbol = function() {
                var a = "";
                return "right" == this.currencyResponse.currency.majorSymbolAlignment && this.currencyResponse.currency.majorSymbolPaddingSpace && (a = " "), a += this.currencyResponse.currency.majorSymbol, "left" == this.currencyResponse.currency.majorSymbolAlignment && this.currencyResponse.currency.majorSymbolPaddingSpace && (a += " "), a
            }, a.prototype.isFractionalInt = function(a) {
                return "0." == a.toString().substr(0, 2)
            }, a.prototype.isWholeInt = function(a) {
                return -1 == a.toString().indexOf(".")
            }, a.prototype.formatMinorCurrencyInt = function(a) {
                for (var b = 1, c = 0; c < this.currencyResponse.currency.decimalPrecision; c++) b *= 10;
                return a *= b, this.formatter.currencySymbol = this.getMinorCurrencySymbol(), this.formatter.alignSymbol = this.currencyResponse.currency.minorSymbolAlignment, this.formatter.precision = 0, this.formatter.format(a)
            }, a.prototype.getMinorCurrencySymbol = function() {
                var a = "";
                return "right" == this.currencyResponse.currency.minorSymbolAlignment && 1 == this.currencyResponse.currency.minorSymbolPaddingSpace && (a = " "), a += this.currencyResponse.currency.minorSymbol, "left" == this.currencyResponse.currency.minorSymbolAlignment && 1 == this.currencyResponse.currency.minorSymbolPaddingSpace && (a += " "), a
            }, a
        }();
        d._currencyFormatterInstance = new d, d.ALTERNATE_SPACE_CHARACTER = "_", b.CurrencyFormatter = d
    }), define("wcgf/core/TextManager", ["require", "exports", "wcgf/core/events", "../vendors/webfontloader/webfont"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b() {
                var c = a.call(this) || this;
                if (b._textManager) throw new Error("Error: Instantiation failed: Use AssetManager.getInstance() instead of new.");
                return b._textManager = c, c
            }
            return __extends(b, a), b.getInstance = function() {
                return b._textManager
            }, b.prototype.setData = function(a) {
                this.data = a
            }, b.prototype.getText = function(a) {
                var b = "*" + a + "*";
                return null != this.data && null != this.data[a] && (b = this.data[a]), b
            }, b.prototype.loadFonts = function(a) {
                var d = this,
                    e = new XMLHttpRequest;
                e.addEventListener("load", function(e) {
                    200 == this.status ? d.loadWebFont(a) : d.dispatchEvent(new c.events.Event(b.WEB_FONT_LOADED, null, d))
                }), e.addEventListener("timeout", function(a) {
                    d.dispatchEvent(new c.events.Event(b.WEB_FONT_LOADED, null, d))
                }), e.open("GET", "https://fonts.googleapis.com/css?family=Karla"), e.withCredentials = !1, e.timeout = 1e3, e.send(null)
            }, b.prototype.loadWebFont = function(a) {
                var e = this,
                    f = setTimeout(function() {
                        e.dispatchEvent(new c.events.Event(b.WEB_FONT_LOADED, null, this))
                    }, 5e3),
                    g = {
                        timeout: 2e3,
                        google: {
                            families: a
                        },
                        loading: function() {},
                        active: function() {
                            clearTimeout(f), e.dispatchEvent(new c.events.Event(b.WEB_FONT_LOADED, null, this))
                        },
                        inactive: function() {},
                        fontloading: function(a, b) {},
                        fontactive: function(a, b) {},
                        fontinactive: function(a, d) {
                            clearTimeout(f), e.dispatchEvent(new c.events.Event(b.WEB_FONT_LOADED, null, this))
                        }
                    };
                d.load(g)
            }, b.prototype.overrideCreateJs = function() {
                var a = this;
                createjs.Text.prototype._prepContext = function(a) {
                    return a.font = this.font || "10px sans-serif", a.textAlign = this.textAlign || "left", a.textBaseline = "alphabetic", a.miterLimit = 2, null == this.initParams && (this.font += ", 'Arial'", this.initParams = {}, this.initParams.maxHeight = this.getMeasuredHeight(), this.initParams.maxWidth = this.lineWidth, this.dispatchEvent("TextInit")), a
                }, createjs.Text.prototype._drawTextLine = function(b, c, d) {
                    var e = 0;
                    null != this.params && (e = this.params.fontYOffset ? this.params.fontYOffset : 0);
                    var f = this.getMeasuredLineHeight() + e;
                    if (null != this.params && null != this.params.outline) {
                        var g = this.params.outline.xOffset ? this.params.outline.xOffset : 0,
                            h = this.params.outline.yOffset ? this.params.outline.yOffset : 0;
                        if (b.lineWidth = this.params.outline.size ? this.params.outline.size : 0, null != this.params.outline.gradient) {
                            var i = a.getGradient(b, d + e + h, this.getMeasuredLineHeight(), this.params.outline.gradient);
                            b.strokeStyle = i, b.fillStyle = i
                        } else null != this.params.outline.color && (b.strokeStyle = this.params.outline.color, b.fillStyle = this.params.outline.color);
                        b.strokeText(c, g, d + f + h, this.maxWidth || 65535), b.fillText(c, g, d + f + h, this.maxWidth || 65535)
                    }
                    null != this.params && null != this.params.gradient && null != this.params.gradient.colors && this.params.gradient.colors.length > 0 ? b.fillStyle = a.getGradient(b, d + e, this.getMeasuredLineHeight(), this.params.gradient) : b.fillStyle = this.color, b.fillText(c, 0, d + f, this.maxWidth || 65535)
                }
            }, b.prototype.getGradient = function(a, b, c, d) {
                for (var e = a.createLinearGradient(0, b + (d.yOffset ? d.yOffset : 0), 0, b + (d.yOffset ? d.yOffset : 0) + (d.height ? d.height : c)), f = 0; f < d.colors.length; f++) e.addColorStop(d.colors[f].position, d.colors[f].color);
                return e
            }, Object.defineProperty(b.prototype, "language", {
                get: function() {
                    return this._language
                },
                set: function(a) {
                    this._language = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        e.WEB_FONT_LOADED = "TextManagerWebFontLoaded", e._textManager = new e, b.TextManager = e
    }), define("wcgf/coreComponents/GenericViewController", ["require", "exports", "wcgf/core/events"], function(a, b, c) {
        "use strict";
        var d = function(a) {
            function b(b) {
                var c = a.call(this) || this;
                return c._skin = b, c
            }
            return __extends(b, a), b.prototype.init = function(a) {
                void 0 === a && (a = null)
            }, Object.defineProperty(b.prototype, "visible", {
                get: function() {
                    return this._skin.visible
                },
                set: function(a) {
                    this._skin.visible = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "skin", {
                get: function() {
                    return this._skin
                },
                set: function(a) {
                    this._skin = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        b.GenericViewController = d
    }), define("wcgf/coreComponents/BasicButtonController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/GenericViewController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                var d = a.call(this, b) || this;
                return d._hitAreaMc = null, d._isOver = !1, d._isPressed = !1, d._enable = !0, d.skin = b, d._hitAreaMc = c, d._name = name, d
            }
            return __extends(b, a), b.prototype.init = function(d) {
                void 0 === d && (d = null), a.prototype.init.call(this, d), null == this._hitAreaMc && (this._hitAreaMc = this._skin);
                var e = this;
                this._hitAreaMc.mouseChildren = !1, this._hitAreaMc.addEventListener("contextmenu", function(a) {}), this._hitAreaMc.addEventListener("rollover", function(a) {
                    e._isOver || (e._isOver = !0, e._enable && e.dispatchEvent(new c.events.Event(b.MOUSE_OVER, null, e))), e.updateState()
                }), this._hitAreaMc.addEventListener("rollout", function(a) {
                    e._isOver && (e._isOver = !1, e._enable && e.dispatchEvent(new c.events.Event(b.MOUSE_OUT, null, e))), e.updateState()
                }), this._hitAreaMc.addEventListener("mousedown", function(a) {
                    0 == a.nativeEvent.button && (e._isPressed || (e._isPressed = e._enable, e._enable && e.dispatchEvent(new c.events.Event(b.MOUSE_DOWN, null, e))), e.updateState())
                }), this._hitAreaMc.addEventListener("pressup", function(a) {
                    0 == a.nativeEvent.button && (e._isPressed && (e._isPressed = !1, e._enable && e.dispatchEvent(new c.events.Event(b.MOUSE_UP, null, e))), e.updateState())
                }), this._hitAreaMc.addEventListener("click", function(a) {
                    0 == a.nativeEvent.button && e._enable && e._isPressed && e.dispatchEvent(new c.events.Event(b.MOUSE_CLICK, null, e))
                }), this.enable = this._enable, this.updateState()
            }, Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable != a && (this._enable = a, this._enable ? this.updateState() : this.skin.gotoAndStop("_inactive"))
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.updateState = function() {
                null != this.skin && this._enable && (this._isOver ? this._isPressed ? this.skin.gotoAndStop("_down") : this.skin.gotoAndStop("_over") : this.skin.gotoAndStop("_up"))
            }, b
        }(d.GenericViewController);
        e.MOUSE_CLICK = "BasicButtonControllerMouseClick", e.MOUSE_OVER = "BasicButtonControllerMouseOver", e.MOUSE_OUT = "BasicButtonControllerMouseOut", e.MOUSE_DOWN = "BasicButtonControllerMouseDown", e.MOUSE_UP = "BasicButtonControllerMouseUp", b.BasicButtonController = e
    }), define("wcgf/sequencers/ISequenceItem", ["require", "exports"], function(a, b) {
        "use strict";
        ! function(a) {
            a.SEQUENCE_START = "SequencerSequenceStart", a.SEQUENCE_DONE = "SequencerSequenceDone", a.SEQUENCE_END = "SequencerSequenceEnd"
        }(b.sequencers || (b.sequencers = {}))
    }), define("wcgf/gameComponents/MovieClipSequenceItem", ["require", "exports", "wcgf/sequencers/ISequenceItem", "wcgf/core/events"], function(a, b, c, d) {
        "use strict";
        var e = function() {
            function a() {}
            return a
        }();
        b.Frame = e;
        var f = function(a) {
            function b(b, c, d, e, f, g, h) {
                void 0 === e && (e = 0), void 0 === f && (f = null), void 0 === g && (g = !1), void 0 === h && (h = !1);
                var i = a.call(this) || this;
                if (i._isSequenceDone = !1, i._isSequenceEnded = !1, i._isSequenceStarted = !1, i._loop = 1, i._loopCount = 1, i._end = !1, i._playToEndFrame = !1, i._forceReset = !1, i._tickCount = 0, i._lastFrame = 0, i._pausedCount = 0, i._data = null, i.onTick = function(a) {
                        var b = i._mc.currentLabel == i._endFrame.label || i._mc.currentFrame >= i._endFrame.position || i._mc.currentFrame < i._lastFrame,
                            c = null != i._doneFrame && (i._mc.currentLabel == i._doneFrame.label || i._mc.currentFrame >= i._doneFrame.position || i._mc.currentFrame < i._lastFrame);
                        b && (i._loopCount--, i._loopCount <= 0 && i._loop > 0 || i._end ? (i._mc.removeEventListener("tick", i.onTick), i._mc.gotoAndStop(i._endFrame.position), null == i._doneFrame && i.dispatchDone(), i.dispatchEnd()) : i._mc.gotoAndPlay(i._startFrame.position || 0)), !i.isSequenceDone && c && i._loopCount <= 1 && i.dispatchDone(), i._lastFrame == i._mc.currentFrame ? i._pausedCount++ : i._pausedCount = 0, i._lastFrame = i._mc.currentFrame, i._tickCount > 28 + 4 * Math.random() && (i._tickCount = 0, i._pausedCount), i._tickCount++
                    }, i._mc = b, null != i._mc)
                    for (var j = 0, k = i._mc.labels; j < k.length; j++) {
                        var l = k[j];
                        switch (l.label) {
                            case c:
                                i._startFrame = l;
                                break;
                            case d:
                                i._endFrame = l;
                                break;
                            case f:
                                i._doneFrame = l
                        }
                    }
                return i._loop = Math.max(e, 0), i._playToEndFrame = g, i._forceReset = h, i._loopCount = i._loop, i
            }
            return __extends(b, a), b.prototype.startSequence = function(a) {
                void 0 === a && (a = !1), !a && this._isSequenceStarted || (null != this._mc && this.hasLabels() ? (this._mc.gotoAndStop(this._startFrame.position || 0), this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_START, null, this)), this.startAnim()) : (this._isSequenceStarted = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_START, null, this)), this.dispatchDone(), this.dispatchEnd()))
            }, b.prototype.hasLabels = function() {
                var a = null != this._startFrame && null != this._startFrame.label,
                    b = null != this._endFrame && null != this._endFrame.label;
                return a && b
            }, b.prototype.resetSequence = function() {
                this._tickCount = 0, this._lastFrame = 0, this._pausedCount = 0, this._loopCount = this._loop, this._isSequenceDone = !1, this._isSequenceEnded = !1, this._isSequenceStarted = !1, this._end = !1
            }, b.prototype.stopSequence = function(a) {
                void 0 === a && (a = !1), this._end = !0, !a && this._playToEndFrame || (null != this._mc && this._mc.stop(), this.dispatchDone(), this.dispatchEnd())
            }, b.prototype.startAnim = function() {
                null != this._mc ? (this._mc.addEventListener("tick", this.onTick), this._mc.play()) : (this.dispatchDone(), this.dispatchEnd())
            }, b.prototype.dispatchDone = function() {
                this.isSequenceDone || (this._isSequenceDone = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_DONE, null, this)))
            }, b.prototype.dispatchEnd = function() {
                this.isSequenceEnded || (null != this._mc && this._mc.removeEventListener("tick", this.onTick), this.dispatchDone(), this._isSequenceStarted = !1, this._forceReset && null != this._mc && (null != this._startFrame ? (this._mc.gotoAndStop(this._startFrame.position), this._lastFrame = this._startFrame.position) : (this.mc.gotoAndStop(0), this._lastFrame = 0), this._tickCount = 0, this._pausedCount = 0), this._isSequenceEnded = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_END, null, this)))
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "mc", {
                get: function() {
                    return this._mc
                },
                set: function(a) {
                    this._mc = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "data", {
                get: function() {
                    return this._data
                },
                set: function(a) {
                    this._data = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        b.MovieClipSequenceItem = f
    }), define("wcgf/messageBus/PlatformMessageBus", ["require", "exports", "wcgf/core/events"], function(a, b, c) {
        "use strict";
        var d = function(b) {
            function d() {
                return b.call(this) || this
            }
            return __extends(d, b), d.prototype.init = function() {
                var b = this;
                a(["postal", "postal.federation", "xframe", "request-response", "riveter", "underscore", "lodash", "promise"], function() {
                    b.onDependencyLoaded()
                })
            }, d.prototype.onDependencyLoaded = function() {
                this.postal = a("postal"), this.federation = a("postal.federation"), this.xframe = a("xframe"), this.requestresponse = a("request-response"), this.promise = a("promise");
                var b = this;
                this.postal.instanceId("Game"), this.postal.fedx.configure({
                    filterMode: "blacklist"
                }), this.postal.fedx.transports.xframe.configure({
                    filterMode: "blacklist",
                    safeSerialize: !0
                }), this.postal.configuration.promise.createDeferred = function() {
                    return b.promise.defer()
                }, this.postal.configuration.promise.getPromise = function(a) {
                    return a.promise
                }, this.postal.addWireTap(function(a, b) {}), this.postal.fedx.signalReady(function(a) {
                    b.dispatchEvent(new c.events.Event(d.INITIALIZE, null, b))
                })
            }, d.prototype.publish = function(a) {
                this.postal.publish(a)
            }, d.prototype.request = function(a, b, c) {
                this.postal.channel(a.channel).request(a).then(b, c)
            }, d.prototype.subscribe = function(a) {
                this.postal.subscribe(a)
            }, d.prototype.unsubscribe = function(a) {
                this.postal.unsubscribe(a)
            }, d.prototype.getPostal = function() {
                return this.postal
            }, d
        }(c.events.EventDispatcher);
        d.INITIALIZE = "PlatformMessageBusInitialize", b.PlatformMessageBus = d
    }), define("wcgf/dataTranslators/IDataTranslator", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/dataTranslators/GleDataTranslator", ["require", "exports", "wcgf/core/datamodel", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/vendors/typescript_collections/util"], function(a, b, c, d, e) {
        "use strict";
        var f = function() {
            function a() {
                this.gameLogicResponse = new c.datamodel.GameLogicResponse, this.currencyResponse = new d.default, this.paytableResponse = new c.datamodel.PaytableResponse
            }
            return a.prototype.translate = function(a, b) {
                if (null != a) {
                    if (null != a.PaytableResponse) {
                        var c = a.PaytableResponse;
                        this.translatePaytableData(c)
                    }
                    if (null != a.CurrencyResponse) {
                        var d = a.CurrencyResponse;
                        this.translateCurrencyData(d)
                    }
                    var e = null;
                    null != a.GameLogicResponse ? e = a.GameLogicResponse : null != a.response && (e = a.response), null != e && this.translateGameLogicResponseData(e), this.translateMisc(a), b = this.setupEvtData(a, b)
                }
                return b
            }, a.prototype.translatePaytableData = function(a) {
                null != a.PaytableStatistics && (this.paytableResponse.paytableStatistics = this.getPaytableStatistics(a.PaytableStatistics)), null != a.PickerInfo && (this.paytableResponse.pickerInfo = this.getPickerInfo(a.PickerInfo)), null != a.PrizeInfo && (this.paytableResponse.prizesInfo = this.getPrizesInfo(a.PrizeInfo)), null != a.StripInfo && (this.paytableResponse.stripsInfo = this.getStripsInfo(a.StripInfo)), null != a.LongStripInfo && (this.paytableResponse.longStripsInfo = this.getStripsInfo(a.LongStripInfo)), null != a.PatternSliderInfo && (this.paytableResponse.patternSliderInfo = this.getPatternSliderInfo(a.PatternSliderInfo)), null != a.AwardCapInfo && (this.paytableResponse.awardCapInfo = this.getAwardCapInfo(a.AwardCapInfo)), null != a.DenominationList && (this.paytableResponse.denominationList = this.getDenominationList(a.DenominationList)), null != a.GameBetInfo && (this.paytableResponse.gameBetInfo = this.getGameBetInfo(a.GameBetInfo)), null != a.GameData && (this.paytableResponse.gameData = this.getGameDataInfo(a.GameData)), null != a.AutoSpinInfo && (this.paytableResponse.autoSpinInfo = this.getAutoSpinInfo(a.AutoSpinInfo)), null != a.KeyValuePairInfo && (this.paytableResponse.keyValuePairInfo = this.getKeyValuePairInfo(a.KeyValuePairInfo))
            }, a.prototype.translateCurrencyData = function(a) {
                this.currencyResponse = this.getCurrencyResponse(a)
            }, a.prototype.translateGameLogicResponseData = function(a) {
                if (null != a.OutcomeDetail && (this.currentStage = a.OutcomeDetail.Stage), null != a.OutcomeDetail && (this.gameLogicResponse.outcomeDetail = this.getOutcomeDetails(a.OutcomeDetail)), null != a.PickerInput && (this.gameLogicResponse.pickerInput = this.getPickerInput(a.PickerInput)), null != a.PickerOutcome && (this.gameLogicResponse.pickerOutcome = this.getPickerOutcome(a.PickerOutcome)), null != a.PickerSummaryOutcome && (this.gameLogicResponse.pickerSummaryOutcomes = this.getPickerSummaryOutcomes(a.PickerSummaryOutcome)), null != a.KeyValuePairOutcome && (this.gameLogicResponse.keyValuePairInfo = this.getKeyValuePairInfo(a.KeyValuePairOutcome)), null != a.ObfuscatedOutcome && (this.gameLogicResponse.obfuscatedOutcome = this.getObfuscatedOutcome(a.ObfuscatedOutcome)), null != a.ObfuscatedOutcome && null != a.OutcomeDetail) {
                    var b = a.OutcomeDetail.TransactionId;
                    this.gameLogicResponse.decryptedOutcome = this.getDecryptedOutcome(a.ObfuscatedOutcome, b)
                }
                null != a.Balances && (this.gameLogicResponse.balances = this.getBalances(a.Balances)), null != a.PatternSliderInput && (this.gameLogicResponse.patternSliderInput = this.getPatternSliderInput(a.PatternSliderInput)), null != a.CumulativePayout && (this.gameLogicResponse.cumulativePayout = parseFloat(a.CumulativePayout)), null != a.PopulationOutcome && (this.gameLogicResponse.populationOutcomes = this.getPopulationOutcomes(a.PopulationOutcome)), null != a.PrizeOutcome && (this.gameLogicResponse.prizeOutcomes = this.getPrizeOutcomes(a.PrizeOutcome)), null != a.HighlightOutcome && (this.gameLogicResponse.highlightOutcomes = this.getHighlightOutcomes(a.HighlightOutcome)), null != a.FreeSpinOutcome && (this.gameLogicResponse.freeSpinOutcomes = this.getFreeSpinOutcomes(a.FreeSpinOutcome)), null != a.MultiplierOutcome && (this.gameLogicResponse.multiplierOutcome = this.getMultiplierOutcome(a.MultiplierOutcome), this.gameLogicResponse.multiplierOutcomes = this.getMultiplierOutcomes(a.MultiplierOutcome)), null != a.AwardCapOutcome && (this.gameLogicResponse.awardCapOutcome = this.getAwardCapOutcome(a.AwardCapOutcome)), null != a.TriggerOutcome && (this.gameLogicResponse.triggerOutcome = this.getTriggerOutcome(a.TriggerOutcome)), null != a.PromotionalFreeSpin && (this.gameLogicResponse.promotionalFreeSpin = this.getPromotionalFreeSpin(a.PromotionalFreeSpin))
            }, a.prototype.translateMisc = function(a) {}, a.prototype.setupEvtData = function(a, b) {
                return b.state = a.state, b.nextStage = a.nextStage, b.gameLogicResponse = this.gameLogicResponse, b.paytableResponse = this.paytableResponse, b.currencyResponse = this.currencyResponse, b
            }, a.prototype.printJsonData = function(a) {
                var b = JSON.stringify(a);
                if (b.length < 1e5);
                else
                    for (var c = 1, d = 0; d <= b.length;) d += 1e5, c++
            }, a.prototype.getPaytableStatistics = function(a) {
                var b = new c.datamodel.PaytableStatisticsDef;
                return b.minRTP = parseFloat(a["@minRTP"]), b.maxRTP = parseFloat(a["@maxRTP"]), null != a["@singleRTP"] && (b.singleRTP = "true" == a["@singleRTP"].toLowerCase()), null != a["@minSingleRTP"] && (b.minSingleRTP = parseFloat(a["@minSingleRTP"])), null != a["@maxSingleRTP"] && (b.maxSingleRTP = parseFloat(a["@maxSingleRTP"])), b
            }, a.prototype.getPickerInfo = function(a) {
                var b, c, e = new d.default;
                if (a instanceof Array)
                    for (var f = 0, g = a; f < g.length; f++) {
                        var h = g[f];
                        b = [];
                        for (var i = 0, j = h.Layer.Pick; i < j.length; i++) {
                            var k = j[i];
                            c = {
                                cellName: k["@cellName"],
                                name: k["@name"]
                            }, b.push(c)
                        }
                        e.setValue(h["@name"], {
                            picks: b
                        })
                    } else {
                        b = [];
                        for (var l = 0, m = a.Layer.Pick; l < m.length; l++) {
                            var k = m[l];
                            c = {
                                cellName: k["@cellName"],
                                name: k["@name"]
                            }, b.push(c)
                        }
                        e.setValue(a["@name"], {
                            picks: b
                        })
                    }
                return e
            }, a.prototype.getPrizesInfo = function(a) {
                for (var b = new d.default, c = 0, e = a; c < e.length; c++) {
                    var f = e[c],
                        g = {
                            name: f["@name"],
                            strategy: f["@strategy"],
                            prizes: []
                        };
                    if (f.Prize instanceof Array)
                        for (var h = 0, i = f.Prize; h < i.length; h++) {
                            var j = i[h];
                            g.prizes.push(this.getPrize(j))
                        } else g.prizes.push(this.getPrize(f.Prize));
                    b.setValue(g.name, g)
                }
                return b
            }, a.prototype.getPrize = function(a) {
                var b = {
                    name: a["@name"],
                    prizesPay: [],
                    symbols: []
                };
                if (a.PrizePay instanceof Array)
                    for (var c = 0, d = a.PrizePay; c < d.length; c++) {
                        var e = d[c];
                        b.prizesPay.push({
                            count: parseInt(e["@count"]),
                            pph: 0,
                            value: parseInt(e["@value"])
                        })
                    } else b.prizesPay.push({
                        count: parseInt(a.PrizePay["@count"]),
                        pph: 0,
                        value: parseInt(a.PrizePay["@value"])
                    });
                if (null != a.Symbol)
                    if (a.Symbol instanceof Array)
                        for (var f = 0, g = a.Symbol; f < g.length; f++) {
                            var h = g[f];
                            b.symbols.push({
                                symbolId: h["@id"],
                                required: "true" == h["@required"].toLowerCase()
                            })
                        } else b.symbols.push({
                            symbolId: a.Symbol["@id"],
                            required: "true" == a.Symbol["@required"].toLowerCase()
                        });
                return b
            }, a.prototype.getStripsInfo = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c],
                            g = this.getStripInfoDef(f);
                        b.setValue(g.name, g)
                    } else {
                        var g = this.getStripInfoDef(a);
                        b.setValue(g.name, g)
                    }
                return b
            }, a.prototype.getStripInfoDef = function(a) {
                var b = {
                    name: a["@name"],
                    strips: new d.default
                };
                if (a.Strip instanceof Array)
                    for (var c = 0, e = a.Strip; c < e.length; c++) {
                        var f = e[c],
                            g = {
                                name: f["@name"],
                                stops: []
                            };
                        if (f.Stop instanceof Array)
                            for (var h = 0, i = f.Stop; h < i.length; h++) {
                                var j = i[h];
                                g.stops.push({
                                    symbolId: j["@symbolID"],
                                    weight: parseInt(j["@weight"])
                                })
                            } else g.stops.push({
                                symbolId: f.Stop["@symbolID"],
                                weight: parseInt(f.Stop["@weight"])
                            });
                        b.strips.setValue(g.name, g)
                    } else {
                        var g = {
                            name: a.Strip["@name"],
                            stops: []
                        };
                        if (a.Strip.Stop instanceof Array)
                            for (var k = 0, l = a.Strip.Stop; k < l.length; k++) {
                                var j = l[k];
                                g.stops.push({
                                    symbolId: j["@symbolID"],
                                    weight: parseInt(j["@weight"])
                                })
                            } else g.stops.push({
                                symbolId: a.Strip.Stop["@symbolID"],
                                weight: parseInt(a.Strip.Stop["@weight"])
                            });
                        b.strips.setValue(g.name, g)
                    }
                return b
            }, a.prototype.getPatternSliderInfo = function(a) {
                var b = null;
                if (null != a.BetInfo)
                    if (b = {
                            max: parseInt(a.BetInfo["@max"]),
                            min: parseInt(a.BetInfo["@min"]),
                            steps: []
                        }, a.BetInfo.Step instanceof Array)
                        for (var c = 0, d = a.BetInfo.Step; c < d.length; c++) {
                            var f = d[c];
                            e.isString(f) ? b.steps.push(parseInt(f)) : b.steps.push(parseInt(f["#text"]))
                        } else {
                            var g = a.BetInfo.Step;
                            e.isString(g) ? b.steps.push(parseInt(g)) : b.steps.push(parseInt(g["#text"]))
                        }
                var h = null;
                if (null != a.PatternInfo)
                    if (h = {
                            max: parseInt(a.PatternInfo["@max"]),
                            min: parseInt(a.PatternInfo["@min"]),
                            steps: []
                        }, a.PatternInfo.Step instanceof Array)
                        for (var i = 0, j = a.PatternInfo.Step; i < j.length; i++) {
                            var k = j[i];
                            e.isString(k) ? h.steps.push(parseInt(k)) : h.steps.push(parseInt(k["#text"]))
                        } else {
                            var g = a.PatternInfo.Step;
                            e.isString(g) ? h.steps.push(parseInt(g)) : h.steps.push(parseInt(g["#text"]))
                        }
                return {
                    patternInfo: h,
                    betInfo: b
                }
            }, a.prototype.getAwardCapInfo = function(a) {
                var b = null;
                null != a.TriggerInfo && (b = {
                    name: a.TriggerInfo["@name"],
                    priority: parseFloat(a.TriggerInfo["@priority"]),
                    stageConnector: a.TriggerInfo["@stageConnector"]
                });
                var c = null;
                return null != a.CurrencyCap && (c = {
                    currencyType: a.CurrencyCap.CurrencyType,
                    awardCap: parseFloat(a.CurrencyCap.AwardCap)
                }), {
                    name: a["@name"],
                    triggerInfo: b,
                    currencyCap: c
                }
            }, a.prototype.getDenominationList = function(a) {
                var b = [];
                return null != a.Denomination && b.push({
                    softwareId: a.Denomination["@softwareId"],
                    value: parseFloat(a.Denomination["#text"])
                }), b
            }, a.prototype.getGameBetInfo = function(a) {
                return {
                    minChipValue: parseFloat(a.MinChipValue),
                    minBet: parseFloat(a.MinBet),
                    maxBet: parseFloat(a.MaxBet),
                    minSideBet: 0,
                    maxSideBet: 0
                }
            }, a.prototype.getGameDataInfo = function(a) {
                var b = new Array,
                    c = new Array,
                    d = new Array;
                if (a.BaseCurrency && b.push({
                        value: a.BaseCurrency.Currency["@value"]
                    }),
                    a.JackpotResetRtp && null != a.JackpotResetRtp.Sample)
                    if (a.JackpotResetRtp.Sample instanceof Array)
                        for (var e = 0, f = a.JackpotResetRtp.Sample; e < f.length; e++) {
                            var g = f[e];
                            c.push({
                                jackpotValue: g["@jackpotValue"],
                                rtpValue: g["@rtpValue"]
                            })
                        } else c.push({
                            jackpotValue: a.JackpotResetRtp.Sample["@jackpotValue"],
                            rtpValue: a.JackpotResetRtp.Sample["@rtpValue"]
                        });
                if (a.JackpotRtpSamples)
                    if (null != a.JackpotRtpSamples.Sample)
                        for (var h = 0, i = a.JackpotRtpSamples.Sample; h < i.length; h++) {
                            var g = i[h];
                            d.push({
                                jackpotValue: g["@jackpotValue"],
                                rtpValue: g["@rtpValue"]
                            })
                        } else
                            for (var j = 0, k = a.JackpotRtpSamples; j < k.length; j++) {
                                var g = k[j];
                                d.push({
                                    jackpotValue: g["@jackpotValue"],
                                    rtpValue: g["@rtpValue"]
                                })
                            }
                return {
                    name: a["@name"],
                    baseCurrency: b,
                    jackpotResetRTP: c,
                    jackpotRTPSamples: d
                }
            }, a.prototype.getAutoSpinInfo = function(a) {
                var b = {
                    enable: this.getBool(a["@enable"]),
                    steps: []
                };
                if (a.Step instanceof Array)
                    for (var c = 0, d = a.Step; c < d.length; c++) {
                        var e = d[c];
                        b.steps.push(parseInt(e))
                    } else b.steps.push(parseInt(a.Step));
                return b
            }, a.prototype.getKeyValuePairInfo = function(a) {
                var b, c = new d.default;
                if (a instanceof Array)
                    for (var e = 0, f = a; e < f.length; e++) {
                        var g = f[e];
                        if (g.Mapping instanceof Array) {
                            b = new d.default;
                            for (var h = 0, i = g.Mapping; h < i.length; h++) {
                                var j = i[h];
                                null != j && b.setValue(j["@key"], this.getMapInfoDef(j))
                            }
                            c.setValue(g["@name"], {
                                name: g["@name"],
                                mapping: b
                            })
                        } else null != g.Mapping && (b = new d.default, b.setValue(g.Mapping["@key"], this.getMapInfoDef(g.Mapping)), c.setValue(g["@name"], {
                            name: g["@name"],
                            mapping: b
                        }))
                    } else if (a.Mapping instanceof Array) {
                        b = new d.default;
                        for (var k = 0, l = a.Mapping; k < l.length; k++) {
                            var m = l[k];
                            null != m && b.setValue(m["@key"], this.getMapInfoDef(m))
                        }
                        c.setValue(a["@name"], {
                            name: a["@name"],
                            mapping: b
                        })
                    } else null != a.Mapping && (b = new d.default, b.setValue(a.Mapping["@key"], this.getMapInfoDef(a.Mapping)), c.setValue(a["@name"], {
                        name: a["@name"],
                        mapping: b
                    }));
                return c
            }, a.prototype.getMapInfoDef = function(a) {
                var b = new c.datamodel.MapInfoDef;
                return b.key = a["@key"], b.value = a["@value"], b
            }, a.prototype.getCurrencyResponse = function(a) {
                var b = new d.default,
                    e = new c.datamodel.CurrencyResponse;
                if (a instanceof Array)
                    for (var f = 0, g = a; f < g.length; f++) {
                        var h = g[f];
                        e = this.getCurrencyData(h), b.setValue(e.currency.currencyCode, e)
                    } else e = this.getCurrencyData(a), b.setValue(e.currency.currencyCode, e);
                return b
            }, a.prototype.getCurrencyData = function(a) {
                var b = new c.datamodel.CurrencyResponse;
                if (null != a.CURRENCY && (b.currency = {
                        currencyCode: a.CURRENCY["@currencyCode"],
                        majorSymbol: a.CURRENCY.MAJOR_SYMBOL,
                        minorSymbol: a.CURRENCY.MINOR_SYMBOL,
                        majorSymbolAlignment: a.CURRENCY.MAJOR_SYMBOL_ALIGNMENT,
                        minorSymbolAlignment: a.CURRENCY.MINOR_SYMBOL_ALIGNMENT,
                        majorSymbolPaddingSpace: this.getBool(a.CURRENCY.MAJOR_SYMBOL_PADDING_SPACE),
                        minorSymbolPaddingSpace: this.getBool(a.CURRENCY.MINOR_SYMBOL_PADDING_SPACE),
                        decimalSeparator: a.CURRENCY.DECIMAL_SEPARATOR,
                        thousandsSeparator: a.CURRENCY.THOUSANDS_SEPARATOR,
                        decimalPrecision: parseInt(a.CURRENCY.DECIMAL_PRECISION),
                        useThousandsSeparator: this.getBool(a.CURRENCY.USE_THOUSANDS_SEPARATOR),
                        minorCurrencyLock: this.getBool(a.CURRENCY.MINOR_CURRENCY_LOCK),
                        chipSetCode: a.CURRENCY.CHIP_SET_CODE
                    }), null != a.CHIP_SET_DEFINITIONS)
                    if (b.chipSetDefinitions = new Array, a.CHIP_SET_DEFINITIONS.CHIP_SET instanceof Array)
                        for (var d = 0, e = a.CHIP_SET_DEFINITIONS.CHIP_SET; d < e.length; d++) {
                            for (var f = e[d], g = new Array, h = 0, i = f.CHIP; h < i.length; h++) {
                                var j = i[h];
                                g.push(j)
                            }
                            b.chipSetDefinitions.push({
                                name: f["@name"],
                                chips: g
                            })
                        } else {
                            for (var g = new Array, k = 0, l = a.CHIP_SET_DEFINITIONS.CHIP_SET.CHIP; k < l.length; k++) {
                                var j = l[k];
                                g.push(parseFloat(j))
                            }
                            b.chipSetDefinitions.push({
                                name: a.CHIP_SET_DEFINITIONS.CHIP_SET["@name"],
                                chips: g
                            })
                        }
                return b
            }, a.prototype.getOutcomeDetails = function(a) {
                return {
                    transactionId: a.TransactionId,
                    stage: a.Stage,
                    nextStage: a.NextStage,
                    gameStatus: a.GameStatus,
                    settled: parseInt(a.Settled),
                    pending: parseInt(a.Pending),
                    payout: parseInt(a.Payout)
                }
            }, a.prototype.getPickerInput = function(a) {
                if (a.Pick) return a.Pick["@name"]
            }, a.prototype.getPickerOutcome = function(a) {
                var b = new d.default;
                if (null != a && null != a.Layer && a.Layer.Pick instanceof Array)
                    for (var c = 0, e = a.Layer.Pick; c < e.length; c++) {
                        var f = e[c];
                        b.setValue(f["@name"], {
                            name: f["@name"],
                            picked: this.getBool(f["@picked"]),
                            value: f.Feature["@value"]
                        })
                    }
                return b
            }, a.prototype.getPickerSummaryOutcomes = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c];
                        b.setValue(f["@name"], {
                            name: f["@name"],
                            awarded: parseInt(f.Awarded),
                            currentLayer: f.CurrentLayer ? {
                                index: parseInt(f.CurrentLayer["@index"]),
                                name: f.CurrentLayer["@name"]
                            } : null,
                            incrementTriggered: f.IncrementTriggered,
                            initAwarded: parseInt(f.InitAwarded),
                            maxPicksAwarded: f.MaxPicksAwarded,
                            pickCount: parseInt(f.PickCount),
                            picksRemaining: parseInt(f.PicksRemaining)
                        })
                    } else b.setValue(a["@name"], {
                        name: a["@name"],
                        awarded: parseInt(a.Awarded),
                        currentLayer: a.CurrentLayer ? {
                            index: parseInt(a.CurrentLayer["@index"]),
                            name: a.CurrentLayer["@name"]
                        } : null,
                        incrementTriggered: a.IncrementTriggered,
                        initAwarded: parseInt(a.InitAwarded),
                        maxPicksAwarded: a.MaxPicksAwarded,
                        pickCount: parseInt(a.PickCount),
                        picksRemaining: parseInt(a.PicksRemaining)
                    });
                return b
            }, a.prototype.getObfuscatedOutcome = function(a) {
                return {
                    obfuscatedOutcome: a.Data
                }
            }, a.prototype.getDecryptedOutcome = function(a, b) {
                if (a.Data)
                    for (var c, d = a.Data, e = d.length, f = b.length, g = 0; g < e; g += 2) {
                        var h = b.charAt(g / 2 % f),
                            i = d.substring(g, g + 2),
                            j = parseInt(i, 16);
                        c += String.fromCharCode(h.charCodeAt(0) ^ j)
                    }
            }, a.prototype.getBalances = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c];
                        b.setValue(f["@name"], {
                            name: f["@name"],
                            value: parseFloat(f["#text"])
                        })
                    } else if (null != a.Balance)
                        for (var g = 0, h = a.Balance; g < h.length; g++) {
                            var f = h[g];
                            b.setValue(f["@name"], {
                                name: f["@name"],
                                value: parseFloat(f["#text"])
                            })
                        }
                var i = 0;
                return null != a["@totalBalance"] ? i = parseFloat(a["@totalBalance"]) : null != b.getValue("CASH") ? i = b.getValue("CASH").value : null != this.gameLogicResponse && null != this.gameLogicResponse.balances && (i = this.gameLogicResponse.balances.totalBalance), {
                    totalBalance: i,
                    balances: b
                }
            }, a.prototype.getPatternSliderInput = function(a) {
                return {
                    betPerPattern: parseInt(a.BetPerPattern),
                    patternsBet: parseInt(a.PatternsBet)
                }
            }, a.prototype.getPopulationOutcomes = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c];
                        b.setValue(f["@name"], {
                            name: b["@name"],
                            stage: b["@stage"],
                            reels: this.getReels(f.Entry)
                        })
                    } else b.setValue(a["@name"], {
                        name: a["@name"],
                        stage: a["@stage"],
                        reels: this.getReels(a.Entry)
                    });
                return b
            }, a.prototype.getReels = function(a) {
                var b = new d.default;
                if (null != a)
                    if (a instanceof Array)
                        for (var c = 0, e = a; c < e.length; c++) {
                            var f = e[c];
                            b.setValue(f["@name"], {
                                name: f["@name"],
                                stripIndex: parseInt(f["@stripIndex"]),
                                cells: this.getCells(f.Cell)
                            })
                        } else b.setValue(a["@name"], {
                            name: a["@name"],
                            stripIndex: parseInt(a["@stripIndex"]),
                            cells: this.getCells(a.Cell)
                        });
                return b
            }, a.prototype.getCells = function(a) {
                var b = [];
                if (null != a)
                    if (a instanceof Array)
                        for (var c = 0, d = a; c < d.length; c++) {
                            var e = d[c];
                            b.push({
                                name: e["@name"],
                                type: e["@type"] || "",
                                stripIndex: parseInt(e["@stripIndex"]),
                                symbolId: e["#text"]
                            })
                        } else b.push({
                            name: a["@name"],
                            type: a["@type"] || "",
                            stripIndex: parseInt(a["@stripIndex"]),
                            symbolId: a["#text"]
                        });
                return b
            }, a.prototype.getPrizeOutcomes = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c];
                        b.setValue(f["@name"], {
                            name: f["@name"],
                            stage: f["@stage"],
                            multiplier: parseFloat(f["@multiplier"]),
                            pay: parseFloat(f["@pay"]),
                            totalPay: parseFloat(f["@totalPay"]),
                            prizes: this.getPrizes(f.Prize)
                        })
                    } else b.setValue(a["@name"], {
                        name: a["@name"],
                        stage: a["@stage"],
                        multiplier: parseFloat(a["@multiplier"]),
                        pay: parseFloat(a["@pay"]),
                        totalPay: parseFloat(a["@totalPay"]),
                        prizes: this.getPrizes(a.Prize)
                    });
                return b
            }, a.prototype.getPrizes = function(a) {
                var b = new Array;
                if (null != a)
                    if (a instanceof Array)
                        for (var c = 0, d = a; c < d.length; c++) {
                            var e = d[c];
                            b.push({
                                name: e["@name"],
                                betMultiplier: parseFloat(e["@betMultiplier"]),
                                multiplier: parseFloat(e["@multiplier"]),
                                pay: parseFloat(e["@pay"]),
                                payName: e["@payName"],
                                position: parseInt(e["@position"]),
                                symbolCount: parseInt(e["@symbolCount"]),
                                totalPay: parseFloat(e["@totalPay"]),
                                ways: parseInt(e["@ways"])
                            })
                        } else b.push({
                            name: a["@name"],
                            betMultiplier: parseFloat(a["@betMultiplier"]),
                            multiplier: parseFloat(a["@multiplier"]),
                            pay: parseFloat(a["@pay"]),
                            payName: a["@payName"],
                            position: parseInt(a["@position"]),
                            symbolCount: parseInt(a["@symbolCount"]),
                            totalPay: parseFloat(a["@totalPay"]),
                            ways: parseInt(a["@ways"])
                        });
                return b
            }, a.prototype.getHighlightOutcomes = function(a) {
                var b = new d.default;
                if (null != a)
                    if (a instanceof Array)
                        for (var c = 0, e = a; c < e.length; c++) {
                            var f = e[c];
                            b.setValue(f["@name"], {
                                name: f["@name"],
                                type: f["@type"] || "",
                                highlights: this.getHighlights(f.Highlight)
                            })
                        } else b.setValue(a["@name"], {
                            name: a["@name"],
                            type: a["@type"] || "",
                            highlights: this.getHighlights(a.Highlight)
                        });
                return b
            }, a.prototype.getHighlights = function(a) {
                var b = [];
                if (null != a)
                    if (a instanceof Array)
                        for (var c = 0, d = a; c < d.length; c++) {
                            var e = d[c];
                            b.push({
                                name: e["@name"],
                                type: e["@type"] || "",
                                cells: this.getCells(e.Cell)
                            })
                        } else b.push({
                            name: a["@name"],
                            type: a["@type"] || "",
                            cells: this.getCells(a.Cell)
                        });
                return b
            }, a.prototype.getFreeSpinOutcomes = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c];
                        b.setValue(f["@name"], {
                            name: f["@name"],
                            awarded: parseFloat(f.Awarded),
                            count: parseFloat(f.Count),
                            countdown: parseFloat(f.Countdown),
                            incrementTriggered: this.getBool(f.IncrementTriggered),
                            initAwarded: parseFloat(f.InitAwarded),
                            maxAwarded: this.getBool(f.MaxAwarded),
                            maxSpinsHit: this.getBool(f.MaxSpinsHit),
                            totalAwarded: parseFloat(f.TotalAwarded)
                        })
                    } else b.setValue(a["@name"], {
                        name: a["@name"],
                        awarded: parseFloat(a.Awarded),
                        count: parseFloat(a.Count),
                        countdown: parseFloat(a.Countdown),
                        incrementTriggered: this.getBool(a.IncrementTriggered),
                        initAwarded: parseFloat(a.InitAwarded),
                        maxAwarded: this.getBool(a.MaxAwarded),
                        maxSpinsHit: this.getBool(a.MaxSpinsHit),
                        totalAwarded: parseFloat(a.TotalAwarded)
                    });
                return b
            }, a.prototype.getMultiplierOutcome = function(a) {
                return a instanceof Array ? null : {
                    name: a["@name"],
                    multiplier: this.getMultiplier(a.Multiplier)
                }
            }, a.prototype.getMultiplier = function(a) {
                return null != a ? {
                    text: a["#text"],
                    name: a["@name"]
                } : null
            }, a.prototype.getMultiplierOutcomes = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c];
                        null != f.Multiplier && b.setValue(f["@name"], {
                            name: f["@name"],
                            multiplier: this.getMultiplier(f.Multiplier)
                        })
                    } else null != a.Multiplier && b.setValue(a["@name"], {
                        name: a["@name"],
                        multiplier: this.getMultiplier(a.Multiplier)
                    });
                return b
            }, a.prototype.getAwardCapOutcome = function(a) {
                return {
                    name: a["@name"],
                    awardCapExceeded: this.getBool(a.AwardCapExceeded)
                }
            }, a.prototype.getTriggerOutcome = function(a) {
                var b = new d.default;
                if (a instanceof Array)
                    for (var c = 0, e = a; c < e.length; c++) {
                        var f = e[c];
                        b.setValue(f["@name"], {
                            component: f["@component"],
                            name: f["@name"],
                            stage: f["@stage"],
                            trigger: this.getTriggers(f.Trigger)
                        })
                    } else b.setValue(a["@name"], {
                        component: a["@component"],
                        name: a["@name"],
                        stage: a["@stage"],
                        trigger: this.getTriggers(a.Trigger)
                    });
                return b
            }, a.prototype.getTriggers = function(a) {
                var b = new Array;
                if (null != a)
                    if (a instanceof Array)
                        for (var c = 0, d = a; c < d.length; c++) {
                            var e = d[c];
                            b.push({
                                name: e["@name"],
                                priority: parseFloat(e["@priority"]),
                                stageConnector: e["@stageConnector"]
                            })
                        } else b.push({
                            name: a["@name"],
                            priority: a["@priority"],
                            stageConnector: a["@stageConnector"]
                        });
                return b
            }, a.prototype.getPromotionalFreeSpin = function(a) {
                return {
                    count: a["@count"]
                }
            }, a.prototype.getBool = function(a) {
                return "true" == a.toLowerCase() || "yes" == a.toLowerCase()
            }, a
        }();
        b.GleDataTranslator = f
    }), define("wcgf/messageBus/GameMsgBus", ["require", "exports", "wcgf/core/events", "wcgf/messageBus/PlatformMessageBus"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b() {
                var c = a.call(this) || this;
                if (c.nextState = null, c.isInit = !1, c.dataTranslators = new Array, b._gameMsgBusInstance) throw new Error("Error: Instantiation failed: Use GameMsgBus.getInstance() instead of new.");
                b._gameMsgBusInstance = c;
                return c
            }
            return __extends(b, a), b.getInstance = function() {
                return b._gameMsgBusInstance
            }, b.prototype.init = function() {
                this.isInit = !1, this.platformMessageBus = new d.PlatformMessageBus, this.platformMessageBus.addEventListener(d.PlatformMessageBus.INITIALIZE, this.onPlatformMessageBusInitialize, this), this.platformMessageBus.init()
            }, b.prototype.onPlatformMessageBusInitialize = function(a) {
                var d = this;
                this.platformMessageBus.getPostal().addWireTap(function(a, b) {
                    if ("postal" != b.channel && "postal.federation" != b.channel) {
                        var e = new c.events.Event("platformMsg/" + b.channel + "/" + b.topic, a);
                        if (d.dataTranslators.length > 0) {
                            for (var f = e.data, g = 0, h = d.dataTranslators; g < h.length; g++) {
                                var i = h[g];
                                e.data instanceof Object && (f = i.translate(e.data, f))
                            }
                            e.data = f
                        }
                        d.dispatchEvent(e)
                    }
                }), this.platformMessageBus.getPostal().channel("Kernel").subscribe("System.Init", function(a, e) {
                    var f = new c.events.Event(b.SYSTEM_INIT, a);
                    d.dispatchEvent(f)
                }), this.nextState = null;
                var e = this.platformMessageBus.getPostal().channel("ClientService"),
                    d = this;
                e.subscribe("StateChange", function(a, b) {
                    d.nextState = function() {
                        b.reply(null, {
                            state: a.state
                        })
                    };
                    var e = new c.events.Event("platformMsg/Clientservice/" + a.state, a);
                    d.dispatchEvent(e)
                }), e.subscribe("Jackpot.MeterUpdate", function(a, e) {
                    var f = new c.events.Event(b.JACKPOT_METER_UPDATE, a);
                    if (d.dataTranslators.length > 0) {
                        for (var g = f.data, h = 0, i = d.dataTranslators; h < i.length; h++) {
                            g = i[h].translate(f.data, g)
                        }
                        f.data = g
                    }
                    d.dispatchEvent(f)
                }), e.subscribe("Jackpot.PlayerMessageUpdate", function(a, e) {
                    var f = new c.events.Event(b.JACKPOT_PLAYER_MESSAGE_UPDATE, a);
                    if (d.dataTranslators.length > 0) {
                        for (var g = f.data, h = 0, i = d.dataTranslators; h < i.length; h++) {
                            g = i[h].translate(f.data, g)
                        }
                        f.data = g
                    }
                    d.dispatchEvent(f)
                }), this.isInit = !0, this.dispatchEvent(new c.events.Event(b.INITIALIZE))
            }, b.prototype.dispatchEvent = function(c, d, e) {
                c.type == b.NEXT_STAGE && null != this.nextState && this.nextState();
                var f = {
                    data: c.data
                };
                c.type == b.REGISTER && (f.channel = "Game", f.topic = "Game.Register", this.platformMessageBus.publish(f)), c.type == b.CONTROL && (f.channel = "Game", f.topic = "Game.Control", this.platformMessageBus.publish(f)), c.type == b.DEDUCT && (f.channel = "Game", f.topic = "Game.DeductStake", this.platformMessageBus.publish(f)), c.type == b.LOAD_PROGRESS && (c.data.id = "game", f.channel = "Kernel", f.topic = "LoadProgress", this.platformMessageBus.publish(f)), c.type == b.GAME_INIT_DONE && (f.channel = "Game", f.topic = "Game.InitDone", this.platformMessageBus.publish(f)), c.type == b.DEDUCT_STAKE && (f.channel = "Game", f.topic = "Game.DeductStake", this.platformMessageBus.publish(f)), c.type == b.PLAY_DATA && (f.channel = "Game", f.topic = "Game.PlayData", this.platformMessageBus.publish(f)), c.type == b.FULLSCREEN && (f.channel = "Game", f.topic = "Game.Fullscreen", this.platformMessageBus.publish(f)), c.type == b.JACKPOT_METER_REQUEST && (f.channel = "Game", f.topic = "Jackpot.MeterRequest", this.platformMessageBus.publish(f)), c.type == b.JACKPOT_PLAYER_MESSAGE_REQUEST && (f.channel = "Game", f.topic = "Jackpot.PlayerMessageRequest", this.platformMessageBus.publish(f)), c.type == b.AUTO_SPIN_OPTION && (f.channel = "Game", f.topic = "Game.AutoSpinOption", this.platformMessageBus.request(f, d, e)), c.type == b.AUTO_SPIN_START && (f.channel = "Game", f.topic = "Game.AutoSpinStart", this.platformMessageBus.publish(f)), c.type == b.AUTO_SPIN_STOPPED && (f.channel = "Game", f.topic = "Game.AutoSpinStopped", this.platformMessageBus.publish(f)), a.prototype.dispatchEvent.call(this, c)
            }, b.prototype.getIsInit = function() {
                return this.isInit
            }, b
        }(c.events.EventDispatcher);
        e.SYSTEM_INIT = "platformMsg/Kernel/System.init", e.CLIENT_SERVICE_GAME_INIT = "platformMsg/ClientService/Game.Init", e.ACCOUNT_BALANCES = "platformMsg/ClientService/Account.Balances", e.BEFORE_SHOW_STAGE = "platformMsg/Clientservice/onBeforeShowStage", e.START_GAME_INITIAL = "platformMsg/Clientservice/onStartGameInitial", e.BEFORE_REQUEST = "platformMsg/Clientservice/onBeforeRequest", e.MAKE_REQUEST = "platformMsg/Clientservice/onMakeRequest", e.RESOLVE_STAGE = "platformMsg/Clientservice/onResolveStage", e.END_GAME = "platformMsg/Clientservice/onEndGame", e.BEGIN_NEW_GAME = "platformMsg/Clientservice/onBeginNewGame", e.EXIT_STAGE = "platformMsg/Clientservice/onExitStage", e.START_GAME_IN_PROGRESS_STAGE = "platformMsg/Clientservice/onStartGameInProgressStage", e.START_GAME_IN_PROGRESS_NEXT_STAGE = "platformMsg/Clientservice/onStartGameInProgressNextStage", e.IN_PROGRESS_STAGE = "platformMsg/Clientservice/onInProgressStage", e.ENTER_NEXT_STAGE = "platformMsg/Clientservice/onEnterNextStage", e.ABORT_NEXT_STAGE = "platformMsg/Clientservice/onAbortNextStage", e.RESET_NEXT_STAGE = "platformMsg/Clientservice/onResetNextStage", e.JACKPOT_PLAYER_MESSAGE_UPDATE = "platformMsg/ClientService/Jackpot.PlayerMessageUpdate", e.JACKPOT_METER_UPDATE = "platformMsg/ClientService/Jackpot.MeterUpdate", e.STOP_AUTO_SPIN = "platformMsg/ClientService/Game.StopAutoSpin", e.RESIZE = "platformMsg/Kernel/System.Resize", e.FULLSCREEN = "GameMsgBusFullScreen", e.GAME_CONTROL = "platformMsg/ConsoleService/Game.Control", e.REGISTER = "GameMsgBusRegister", e.INITIALIZE = "GameMsgBusInitialize", e.LOAD_PROGRESS = "GameMsgBusLoadProgress", e.PLAY_DATA = "GameMsgBusPlayData", e.DEDUCT_STAKE = "GameMsgBusDeductStake", e.GAME_INIT_DONE = "GameMsgBusInitDone", e.NEXT_STAGE = "GameMsgBusNextState", e.TOTAL_BET_CHANGE = "GameMsgBusOnTotalBetChange", e.CONTROL = "GameMsgBusControl", e.DEDUCT = "GameMsgBusDeduct", e.JACKPOT_PLAYER_MESSAGE_REQUEST = "GameMsgBusJackpotPlayerMessageRequest", e.JACKPOT_METER_REQUEST = "GameMsgBusJackpotMeterRequest", e.AUTO_SPIN_OPTION = "GameMsgBusAutoSpinOption", e.AUTO_SPIN_START = "GameMsgBusAutoSpinStart", e.AUTO_SPIN_STOPPED = "GameMsgBusAutoSpinStopped", e._gameMsgBusInstance = new e, b.GameMsgBus = e
    }), define("wcgf/messageBus/ConsoleBusProxy", ["require", "exports", "wcgf/messageBus/GameMsgBus", "wcgf/core/events", "wcgf/core/CurrencyFormatter", "wcgf/sounds/SoundManager"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b() {
                var d = a.call(this) || this;
                if (d._enablePatternsBet = !0, d._enableBetPerPattern = !0, d._betPerPattern = null, d._patternsBet = null, b._consoleBusProxyInstance) throw new Error("Error: Instantiation failed: Use ConsoleBusProxy.getInstance() instead of new.");
                return b._consoleBusProxyInstance = d, d._msgBus = c.GameMsgBus.getInstance(), d
            }
            return __extends(b, a), b.getInstance = function() {
                return b._consoleBusProxyInstance
            }, b.prototype.init = function(a) {
                null != a && null != a.paytableResponse && (this.setDenomination(a), this.setBalance(a)), this._msgBus.addEventListener("platformMsg/ConsoleService/Game.Control", this.onConsoleChange, this)
            }, b.prototype.onConsoleChange = function(a) {
                this.dispatchEvent(new d.events.Event(b.CONSOLE_DATA_CHANGE, {
                    option: a.data.option,
                    value: a.data.value
                }, this)), this.handleSound(a)
            }, b.prototype.setDenomination = function(a) {
                null != a.paytableResponse.denominationList && a.paytableResponse.denominationList.length > 0 && (this._denomination = a.paytableResponse.denominationList[0].value)
            }, b.prototype.setBalance = function(a) {
                null != a.balanceValue ? this._balance = parseFloat(a.balanceValue) : this._balance = a.gameLogicResponse.balances.totalBalance, this._balance = 100 * this._balance
            }, b.prototype.registerLineBetConsole = function(a, b) {
                void 0 === b && (b = {
                    type: "list",
                    text: "Coin Value"
                }), this._betPerPattern = a, this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.REGISTER, {
                    options: [{
                        type: b.type,
                        name: "betPerPattern",
                        text: b.text,
                        enabled: this._enableBetPerPattern ? 1 : 0,
                        value: this.formatNumber(this._betPerPattern[0], this._denomination),
                        valueText: this.formatNumberArray(this._betPerPattern, this._denomination),
                        values: this.formatNumberArray(this._betPerPattern, this._denomination)
                    }]
                }))
            }, b.prototype.registerLineConsole = function(a, b) {
                void 0 === b && (b = {
                    type: "list",
                    text: "Lines"
                }), this._patternsBet = a, this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.REGISTER, {
                    options: [{
                        type: b.type,
                        name: "patternsBet",
                        text: b.text,
                        enabled: this._enablePatternsBet ? 1 : 0,
                        value: this._patternsBet[0],
                        valueText: this._patternsBet,
                        values: this._patternsBet
                    }]
                }))
            }, b.prototype.registerStakeConsole = function() {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.REGISTER, {
                    options: [{
                        type: "stake",
                        name: "stake",
                        text: "Stake",
                        enabled: 0,
                        valueText: "0",
                        value: 0
                    }]
                }))
            }, b.prototype.changeLineBetConsole = function(a) {
                var b = a;
                null != this._betPerPattern && this._betPerPattern.indexOf(b) < 0 && (b = this._betPerPattern[0]), this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "betPerPattern",
                    event: "change",
                    params: [this.formatNumber(b, this._denomination)]
                }))
            }, b.prototype.changeLineConsole = function(a) {
                var b = a;
                null != this._patternsBet && this._patternsBet.indexOf(b) < 0 && (b = this._patternsBet[0]), this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "patternsBet",
                    event: "change",
                    params: [b]
                }))
            }, b.prototype.changeStakeConsole = function(a) {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "stake",
                    event: "change",
                    params: [a * this._denomination, this.formatNumber(a, this._denomination)]
                }))
            }, b.prototype.enableBetControlConsole = function() {
                this.setBetPerPatternEnable(this._enableBetPerPattern ? 1 : 0), this.setPatternsBetEnable(this._enablePatternsBet ? 1 : 0), this.enableHelpFile(1), this.enablePaytable(1)
            }, b.prototype.disableControlConsole = function() {
                this.setBetPerPatternEnable(0), this.setPatternsBetEnable(0), this.enableHelpFile(0), this.enablePaytable(0)
            }, b.prototype.enableBetPerPattern = function(a) {
                this._enableBetPerPattern = a, this.setBetPerPatternEnable(this._enableBetPerPattern ? 1 : 0)
            }, b.prototype.enablePatternsBet = function(a) {
                this._enablePatternsBet = a, this.setPatternsBetEnable(this._enablePatternsBet ? 1 : 0)
            }, b.prototype.setBetPerPatternEnable = function(a) {
                null != this._betPerPattern && this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "betPerPattern",
                    event: "enable",
                    params: [a]
                }))
            }, b.prototype.setPatternsBetEnable = function(a) {
                null != this._patternsBet && this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "patternsBet",
                    event: "enable",
                    params: [a]
                }))
            }, b.prototype.registerHelpBtn = function() {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.REGISTER, {
                    options: [{
                        type: "command",
                        name: "howToPlay",
                        text: "Help",
                        enabled: 1
                    }]
                }))
            }, b.prototype.registerPaytableBtn = function() {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.REGISTER, {
                    options: [{
                        type: "command",
                        name: "paytable",
                        text: "Paytable",
                        enabled: 1
                    }]
                }))
            }, b.prototype.enableHelpFile = function(a) {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "howToPlay",
                    event: "enable",
                    params: [a]
                }))
            }, b.prototype.enablePaytable = function(a) {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "paytable",
                    event: "enable",
                    params: [a]
                }))
            }, b.prototype.deductBet = function(a) {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.DEDUCT, {
                    params: [a]
                }))
            }, b.prototype.registerSoundButton = function() {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.REGISTER, {
                    options: [{
                        name: "sound",
                        text: "Sound",
                        type: "list",
                        value: 0,
                        values: ["0", "1"],
                        valueText: ["On", "Off"]
                    }]
                }))
            }, b.prototype.enableSoundButton = function(a) {
                this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "sound",
                    event: "enable",
                    params: [a ? 1 : 0]
                }))
            }, b.prototype.muteSound = function(a) {
                this._mute = a, f.SoundManager.getInstance().mute = a, this._msgBus.dispatchEvent(new d.events.Event(c.GameMsgBus.CONTROL, {
                    name: "sound",
                    event: "change",
                    params: [a ? 1 : 0]
                }))
            }, b.prototype.handleSound = function(a) {
                if ("sound" == a.data.option) {
                    var b = !!parseFloat(a.data.value);
                    this.muteSound(b)
                }
            }, b.prototype.formatNumberArray = function(a, b) {
                for (var c = new Array, d = 0, e = a; d < e.length; d++) {
                    var f = e[d];
                    c.push(this.formatNumber(f, b))
                }
                return c
            }, b.prototype.formatNumber = function(a, b) {
                return e.CurrencyFormatter.getInstance().format(a, b)
            }, b
        }(d.events.EventDispatcher);
        g._consoleBusProxyInstance = new g, b.ConsoleBusProxy = g
    }), define("wcgf/coreComponents/AutoPlayButtonController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/BasicButtonController", "wcgf/coreComponents/GenericViewController", "wcgf/messageBus/GameMsgBus", "wcgf/messageBus/ConsoleBusProxy"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h;
        ! function(a) {
            a[a.Play = 0] = "Play", a[a.Stop = 1] = "Stop", a[a.ChoiceSelect = 2] = "ChoiceSelect", a[a.Hide = 3] = "Hide", a[a.Spin = 4] = "Spin"
        }(h = b.AutoPlayButtonState || (b.AutoPlayButtonState = {}));
        var i = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._isInit = !1, c._enable = !0, c._autoPlayChoiceSelected = !1, c._autoPlayEnabled = !1, c._autoPlayChoiceValues = new Array, c._currentChoiceValue = 0, c._autoPlaySpinning = !1, null != c.skin && (null != c.skin.autoPlayButton && (c._autoPlayButton = new d.BasicButtonController(c.skin.autoPlayButton), c._autoPlayButton.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onAutoPlayButtonClick, c)), null != c.skin.autoPlayStopButton && (c._autoPlayStopButton = new d.BasicButtonController(c.skin.autoPlayStopButton), c._autoPlayStopButton.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onAutoPlayStopButtonClick, c)), null != c.skin.autoPlayChoices && (c._autoPlayChoicesBackground = c.skin.autoPlayChoices.autoPlayChoiceBackground, c._autoPlayChoices = new Array)), c._consoleProxy = g.ConsoleBusProxy.getInstance(), c
            }
            return __extends(b, a), b.prototype.init = function(a) {
                this.setAutoPlayChoiceValues(a.paytableResponse.autoSpinInfo.steps, a.paytableResponse.autoSpinInfo.enable), null != this._autoPlayButton && this._autoPlayButton.init(), null != this._autoPlayStopButton && this._autoPlayStopButton.init(), null != this._autoPlayChoices && this.initAutoSpinChoices(), this._isInit = !0, f.GameMsgBus.getInstance().addEventListener(f.GameMsgBus.STOP_AUTO_SPIN, this.onStopAutoSpin, this)
            }, b.prototype.onAutoPlayButtonClick = function(a) {
                this._autoPlayChoiceSelected ? (this._autoPlayChoiceSelected = !1, this.state = h.Play) : (this._autoPlayChoiceSelected = !0, this.state = h.ChoiceSelect), this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_BUTTON_CLICK, null, this))
            }, b.prototype.handleUKAutoSpin = function() {
                var a = this;
                f.GameMsgBus.getInstance().dispatchEvent(new c.events.Event(f.GameMsgBus.AUTO_SPIN_OPTION, {}, this), function(b) {
                    b && "cancel" != b.action ? a.handleInitialAutoSpinValue(b.steps) : a.cancelUKAutoSpin()
                }, function() {
                    a.cancelUKAutoSpin()
                })
            }, b.prototype.cancelUKAutoSpin = function() {
                this._autoPlayChoiceSelected = !1, this.state = h.Play, this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_CHOICES_CANCEL_CLICK, null, this))
            }, b.prototype.onStopAutoSpin = function() {
                this._autoPlaySpinning ? this.state = h.Spin : this.state = h.Play, this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_STOP_BUTTON_CLICK, null, this))
            }, b.prototype.onAutoPlayStopButtonClick = function(a) {
                this._autoPlaySpinning ? this.state = h.Spin : this.state = h.Play, f.GameMsgBus.getInstance().dispatchEvent(new c.events.Event(f.GameMsgBus.AUTO_SPIN_STOPPED, {}, this)), this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_STOP_BUTTON_CLICK, null, this))
            }, b.prototype.onAutoPlayChoicesButtonClick = function(a) {
                this.handleInitialAutoSpinValue(a.target._skin.label.value.text)
            }, b.prototype.handleInitialAutoSpinValue = function(a) {
                this._currentChoiceValue = a, this.updateAutoPlayStopValue(), this.state = h.Stop, this._autoPlaySpinning = !0, this._autoPlayChoiceSelected = !1, f.GameMsgBus.getInstance().dispatchEvent(new c.events.Event(f.GameMsgBus.AUTO_SPIN_START, {}, this)), this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_CHOICES_BUTTON_CLICK, null, this))
            }, b.prototype.setAutoPlayChoiceValues = function(a, b) {
                this._autoPlayChoiceValues = a, this._autoPlayEnabled = b
            }, b.prototype.initAutoSpinChoices = function() {
                for (var a = 0; a < this._autoPlayChoiceValues.length; a++) this._autoPlayChoices[a] = new d.BasicButtonController(this.skin.autoPlayChoices["autoPlayChoice" + a]), null != this._autoPlayChoices[a].skin && (this._autoPlayChoices[a].addEventListener(d.BasicButtonController.MOUSE_CLICK, this.onAutoPlayChoicesButtonClick, this), this._autoPlayChoices[a].skin.label.value.text = this._autoPlayChoiceValues[a], this._autoPlayChoices[a].init())
            }, b.prototype.handleAutoPlaySpinStart = function() {
                this.state == h.Stop ? (this.autoPlaySpinning = !0, this.handleDecrementChoiceValue()) : this.state = h.Spin
            }, b.prototype.handleAutoPlaySpinEnd = function() {
                this._currentChoiceValue > b.AUTO_PLAY_STOP_VALUE && this.state == h.Stop ? this.autoPlaySpinning = !1 : this.state = h.Play
            }, b.prototype.handleDecrementChoiceValue = function() {
                this.updateAutoPlayStopValue(), this._currentChoiceValue--
            }, b.prototype.updateAutoPlayStopValue = function() {
                this._autoPlayStopButton.skin.label.value.text = this._currentChoiceValue
            }, Object.defineProperty(b.prototype, "state", {
                get: function() {
                    return this._state
                },
                set: function(a) {
                    if (this._state = a, this._isInit && this._autoPlayEnabled) switch (this._state) {
                        case h.Play:
                            null != this._autoPlayButton && (this._autoPlayButton.visible = !0, this._autoPlayButton.enable = !0), null != this._autoPlayStopButton && (this._autoPlayStopButton.visible = !1, this._autoPlayStopButton.enable = !1), null != this._autoPlayChoices && (this._autoPlayChoicesBackground.visible = !1, this.setAutoPlayChoicesVisible(!1), this.setAutoPlayChoicesEnable(!1)), f.GameMsgBus.getInstance().dispatchEvent(new c.events.Event(f.GameMsgBus.AUTO_SPIN_STOPPED, {}, this)), this._consoleProxy.enableBetControlConsole();
                            break;
                        case h.Stop:
                            null != this._autoPlayButton && (this._autoPlayButton.visible = !1, this._autoPlayStopButton.enable = !1), null != this._autoPlayStopButton && (this._autoPlayStopButton.visible = !0, this._autoPlayStopButton.enable = !0), null != this._autoPlayChoices && (this._autoPlayChoicesBackground.visible = !1, this.setAutoPlayChoicesVisible(!1), this.setAutoPlayChoicesEnable(!1)), this._consoleProxy.disableControlConsole();
                            break;
                        case h.ChoiceSelect:
                            null != this._autoPlayButton && (this._autoPlayButton.visible = !0, this._autoPlayButton.enable = !1), null != this._autoPlayStopButton && (this._autoPlayStopButton.visible = !1, this._autoPlayStopButton.enable = !1), this._autoPlayChoices, this.handleUKAutoSpin(), this._consoleProxy.disableControlConsole();
                            break;
                        case h.Spin:
                            null != this._autoPlayButton && (this._autoPlayButton.visible = !0, this._autoPlayButton.enable = !1), null != this._autoPlayStopButton && (this._autoPlayStopButton.visible = !1, this._autoPlayStopButton.enable = !1), null != this._autoPlayChoices && (this._autoPlayChoiceSelected = !1, this._autoPlayChoicesBackground.visible = !1, this.setAutoPlayChoicesVisible(!1), this.setAutoPlayChoicesEnable(!1));
                            break;
                        case h.Hide:
                            null != this._autoPlayButton && (this._autoPlayButton.visible = !1), null != this._autoPlayStopButton && (this._autoPlayStopButton.visible = !1), null != this._autoPlayChoices && (this._autoPlayChoicesBackground.visible = !1, this.setAutoPlayChoicesVisible(!1))
                    } else null != this._autoPlayButton && (this._autoPlayButton.visible = !1), null != this._autoPlayStopButton && (this._autoPlayStopButton.visible = !1), null != this._autoPlayChoices && (this._autoPlayChoicesBackground.visible = !1, this.setAutoPlayChoicesVisible(!1))
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.setAutoPlayChoicesVisible = function(a) {
                if (this._autoPlayEnabled)
                    for (var b = 0; b < this._autoPlayChoiceValues.length; b++) null != this._autoPlayChoices[b].skin && (this._autoPlayChoices[b].visible = a);
                else this.skin.autoPlayChoices.visible = a
            }, b.prototype.setAutoPlayChoicesEnable = function(a) {
                for (var b = 0; b < this._autoPlayChoiceValues.length; b++) null != this._autoPlayChoices[b].skin && (this._autoPlayChoices[b].enable = a)
            }, Object.defineProperty(b.prototype, "autoPlaySpinning", {
                get: function() {
                    return this._autoPlaySpinning
                },
                set: function(a) {
                    this._autoPlaySpinning = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable = a, null != this._autoPlayButton && (this._autoPlayButton.enable = this._enable), null != this._autoPlayStopButton && (this._autoPlayStopButton.enable = this._enable), null != this._autoPlayChoices && this.setAutoPlayChoicesEnable(a)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isInit", {
                get: function() {
                    return this._isInit
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(e.GenericViewController);
        i.AUTO_PLAY_BUTTON_CLICK = "AutoPlayButtonControllerPlayClick", i.AUTO_PLAY_STOP_BUTTON_CLICK = "AutoPlayButtonControllerStopClick", i.AUTO_PLAY_CHOICES_BUTTON_CLICK = "AutoPlayButtonControllerChoicesClick", i.AUTO_PLAY_CHOICES_CANCEL_CLICK = "AutoPlayButtonControllerCancelClick", i.AUTO_PLAY_STOP_VALUE = 0, b.AutoPlayButtonController = i
    }), define("wcgf/coreComponents/BasicCheckBoxController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/GenericViewController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                var d = a.call(this, b) || this;
                return d._hitAreaMc = null, d._checked = !1, d._enable = !0, d
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null),
                    a.prototype.init.call(this, b), this._btnHelper = new createjs.ButtonHelper(this.skin, "_up", "_over", "_down", !1, this._hitAreaMc, "_hitArea");
                var c = this;
                this.skin.addEventListener("click", function(a) {
                    c.checked = !c.checked
                }), this.updateState()
            }, b.prototype.updateState = function() {
                this._enable ? this._checked ? this.skin.gotoAndStop("checked") : this.skin.gotoAndStop("unchecked") : this._checked ? this.skin.gotoAndStop("checked_disable") : this.skin.gotoAndStop("unchecked_disable")
            }, Object.defineProperty(b.prototype, "checked", {
                get: function() {
                    return this._checked
                },
                set: function(a) {
                    this._checked != a && (this._checked = a, this.updateState(), this.dispatchEvent(new c.events.Event(b.CHECKED_VALUE_CHANGE, this._checked, this)))
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable != a && (this._enable = a, this.updateState())
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.GenericViewController);
        e.CHECKED_VALUE_CHANGE = "BasicCheckBoxControllerCheckedValueChange", b.BasicCheckBoxController = e
    }), define("wcgf/textFormatters/ITextFormatter", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/coreComponents/TextFieldController", ["require", "exports", "wcgf/coreComponents/GenericViewController"], function(a, b, c) {
        "use strict";
        var d = function(a) {
            function b(b, c) {
                void 0 === c && (c = {
                    width: 8,
                    height: 8
                });
                var d = a.call(this, b) || this;
                return d._autoCache = !0, d._autoResizeFont = !0, d._maxWidth = 0, d._maxHeight = 0, d._isInit = !1, d.onTextFieldInit = function(a) {
                    d._isInit = !0, d.skin.removeEventListener("TextInit", d.onTextFieldInit), d.initTextField(!0)
                }, d._maskOffset = c, d
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b)
            }, b.prototype.initTextField = function(a) {
                var b = this.skin;
                null != b && null != b.params && null != b.params.maskOffset && (this._maskOffset = b.params.maskOffset), this._maxHeight = b.initParams.maxHeight, this._maxWidth = b.initParams.maxWidth;
                var c = /[0-9]+px?/i;
                this._originalFontSize = parseInt(b.font.match(c)[0]), b.snapToPixel = !0, this._isInit = !0, null != this._text && this.setText(this._text)
            }, b.prototype.setText = function(a) {
                this._text = a;
                var b = this.skin;
                if (null != b)
                    if (this._isInit) {
                        0 != b.cacheID && b.uncache();
                        var c = a;
                        null != this._textFormatter && (c = this._textFormatter.format(a)), b.text = c, this._autoResizeFont && this.resizeFont(), this._autoCache && this.cache()
                    } else null == b.initParams ? b.addEventListener("TextInit", this.onTextFieldInit) : this.initTextField(!1)
            }, b.prototype.resizeFont = function() {
                var a = this.skin,
                    b = /[0-9]+px?/i,
                    c = parseInt(a.font.match(b)[0]),
                    d = a.getMetrics();
                if (d.width > this._maxWidth || d.height > this._maxHeight) {
                    c = parseInt(a.font.match(b)[0]);
                    for (var e = a.lineHeight / a.getMeasuredLineHeight(); d.width > this._maxWidth || d.height > this._maxHeight && c > 1;) a.font = a.font.replace(c + "px", c - 1 + "px"), c -= 1, a.lineHeight = a.getMeasuredLineHeight() * e, d = a.getMetrics()
                }
            }, b.prototype.getText = function() {
                return this.skin.text
            }, b.prototype.setAutoCache = function(a) {
                this._autoCache = a
            }, b.prototype.getautoCache = function() {
                return this._autoCache
            }, b.prototype.cache = function() {
                var a = this.skin;
                if (null != a.getBounds()) {
                    var b = a.getBounds().clone(),
                        c = new createjs.Rectangle(b.x, b.y, b.width, b.height);
                    if (null != a.params && null != a.params.outline) {
                        var d = 0,
                            e = 0;
                        null != a.params.outline.size && (d = a.params.outline.size), a.params.outline.yOffset && (e = a.params.outline.yOffset), a.params.outline.xOffset && a.params.outline.xOffset;
                        var f = new createjs.Rectangle(c.x + e - d, c.y + e - d, c.width + d, c.height + d);
                        c = c.union(f)
                    }
                    a.cache(c.x - this._maskOffset.width / 2, c.y - this._maskOffset.height / 2, c.width + this._maskOffset.width, c.height + this._maskOffset.height)
                } else a.cache(0, 0, 1, 1)
            }, b.prototype.uncache = function() {
                if (null != this.skin) {
                    var a = this.skin;
                    0 != a.cacheID && a.uncache()
                }
            }, Object.defineProperty(b.prototype, "autoResizeFont", {
                get: function() {
                    return this._autoResizeFont
                },
                set: function(a) {
                    this._autoResizeFont = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "textFormatter", {
                get: function() {
                    return this._textFormatter
                },
                set: function(a) {
                    this._textFormatter = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.GenericViewController);
        b.TextFieldController = d
    }), define("wcgf/coreComponents/GenericStepperController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/BasicButtonController", "wcgf/core/AssetManager", "wcgf/coreComponents/GenericViewController", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h;
        ! function(a) {
            a[a.Min = 0] = "Min", a[a.Max = 1] = "Max", a[a.Enable = 2] = "Enable", a[a.Disable = 3] = "Disable"
        }(h = b.GenericStepperState || (b.GenericStepperState = {}));
        var i = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._isInit = !1, c._enable = !0, c._isMax = !1, c._plusButtonEnable = !0, c._minusButtonEnable = !0, c._textFormatter = null, c._currentStep = 0, c._currentStepIndex = 0, c._assetManager = e.AssetManager.getInstance(), null != c.skin.plusButton && (c._plusButton = new d.BasicButtonController(c.skin.plusButton), c._plusButton.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onPlusButtonClick, c)), null != c.skin.minusButton && (c._minusButton = new d.BasicButtonController(c.skin.minusButton), c._minusButton.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onMinusButtonClick, c)), c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), null != this._plusButton && this._plusButton.init(), null != this._minusButton && this._minusButton.init(), this._isInit = !0, this.enable = this._enable, this._textField = new g.TextFieldController(this.skin.label), this._textField.textFormatter = this._textFormatter, this.state = this._state
            }, b.prototype.setSteps = function(a, b) {
                this._currentStep = a, this._stepArray = b, this.setCurrentStepIndex(), this.stepBounds_handler(), this.updateTextField()
            }, b.prototype.stepBounds_handler = function() {
                1 == this._stepArray.length ? this.state = h.Disable : 0 == this._currentStepIndex ? this.state = h.Min : this._currentStepIndex == this._stepArray.length - 1 ? (this.state = h.Max, this._isMax = !0) : this.state = h.Enable
            }, b.prototype.incrementStepIndex = function() {
                this._currentStepIndex++, this.updateTextField(), this.stepBounds_handler(), this.dispatchEvent(new c.events.Event(b.VALUE_CHANGE_UP, this.currentStep, this))
            }, b.prototype.decrementStepIndex = function() {
                this._currentStepIndex--, this._isMax && (this._isMax = !1), this.updateTextField(), this.stepBounds_handler(), this.dispatchEvent(new c.events.Event(b.VALUE_CHANGE_DOWN, this.currentStep, this))
            }, b.prototype.updateTextField = function() {
                this._currentStep = this._stepArray[this._currentStepIndex], this._textField.setText(this.currentStep.toString()), this.dispatchEvent(new c.events.Event(b.VALUE_CHANGE, this.currentStep, this))
            }, b.prototype.setCurrentStepIndex = function() {
                this._currentStepIndex = 0;
                for (var a = 0; a < this._stepArray.length; a++)
                    if (this._stepArray[a] == this.currentStep) {
                        this._currentStepIndex = a;
                        break
                    }
            }, b.prototype.getCurrentStepIndex = function() {
                return this._currentStepIndex
            }, Object.defineProperty(b.prototype, "state", {
                get: function() {
                    return this._state
                },
                set: function(a) {
                    if (this._state = a, this._isInit) switch (this._state) {
                        case h.Min:
                            null != this._plusButton && (this._plusButton.enable = this._plusButtonEnable && this._enable), null != this._minusButton && (this._minusButton.enable = !1);
                            break;
                        case h.Max:
                            null != this._plusButton && (this._plusButton.enable = !1), null != this._minusButton && (this._minusButton.enable = this._minusButtonEnable && this._enable);
                            break;
                        case h.Enable:
                            null != this._plusButton && (this._plusButton.enable = this._plusButtonEnable && this._enable, this._plusButton.visible = !0), null != this._minusButton && (this._minusButton.enable = this._minusButtonEnable && this._enable, this._minusButton.visible = !0);
                            break;
                        case h.Disable:
                            null != this._plusButton && (this._plusButton.visible = !1), null != this._minusButton && (this._minusButton.visible = !1)
                    }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentStep", {
                get: function() {
                    return this._currentStep
                },
                set: function(a) {
                    this._currentStep = a, this.setCurrentStepIndex(), this.stepBounds_handler(), this.updateTextField()
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "stepArray", {
                get: function() {
                    return this._stepArray
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable = a, this.state = this._state
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isInit", {
                get: function() {
                    return this._isInit
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.onPlusButtonClick = function(a) {
                this.incrementStepIndex()
            }, b.prototype.onMinusButtonClick = function(a) {
                this.decrementStepIndex()
            }, Object.defineProperty(b.prototype, "isMax", {
                get: function() {
                    return this._isMax
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "autoResizeFont", {
                get: function() {
                    return this._textField.autoResizeFont
                },
                set: function(a) {
                    this._textField.autoResizeFont = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "plusButtonEnable", {
                get: function() {
                    return this._plusButtonEnable
                },
                set: function(a) {
                    this._plusButtonEnable = a, this.state = this._state
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "minusButtonEnable", {
                get: function() {
                    return this._minusButtonEnable
                },
                set: function(a) {
                    this._minusButtonEnable = a, this.state = this._state
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "textFormatter", {
                get: function() {
                    return this._textFormatter
                },
                set: function(a) {
                    this._textFormatter = a, null != this._textField && (this._textField.textFormatter = this._textFormatter)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "textField", {
                get: function() {
                    return this._textField
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(f.GenericViewController);
        i.VALUE_CHANGE_UP = "NumericStepperValueIncrease", i.VALUE_CHANGE_DOWN = "NumericStepperValueDecrease", i.VALUE_CHANGE = "NumericStepperValueChange", b.GenericStepperController = i
    }), define("wcgf/coreComponents/CurrencyFormattedStepperController", ["require", "exports", "wcgf/core/events", "wcgf/core/CurrencyFormatter", "wcgf/coreComponents/GenericStepperController"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._denomination = 1, c.formattedStepArray = new Array, c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), this._denomination = b.paytableResponse.denominationList[0].value
            }, b.prototype.setSteps = function(a, b) {
                this._currentStep = a, this._stepArray = b, this.formatStepArray(), this.setCurrentStepIndex(), this.stepBounds_handler(), this.updateTextField()
            }, b.prototype.formatStepArray = function() {
                for (var a = 0; a < this._stepArray.length; a++) this.formattedStepArray[a] = d.CurrencyFormatter.getInstance().format(this._stepArray[a], this._denomination)
            }, b.prototype.updateTextField = function() {
                this._currentStep = this._stepArray[this._currentStepIndex], this.currentFormattedStep = this.formattedStepArray[this._currentStepIndex], this.textField.setText(this.currentFormattedStep), this.dispatchEvent(new c.events.Event(e.GenericStepperController.VALUE_CHANGE, this.currentStep, this))
            }, b
        }(e.GenericStepperController);
        b.CurrencyFormattedStepperController = f
    }), define("wcgf/coreComponents/LabeledViewController", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._label = new d.TextFieldController(c.skin.label), c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b)
            }, Object.defineProperty(b.prototype, "label", {
                get: function() {
                    return this._label.getText()
                },
                set: function(a) {
                    this._label.setText(a)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "autoResizeFont", {
                get: function() {
                    return this._label.autoResizeFont
                },
                set: function(a) {
                    this._label.autoResizeFont = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.GenericViewController);
        b.LabeledViewController = e
    }), define("wcgf/coreComponents/LabeledTextFieldController", ["require", "exports", "wcgf/coreComponents/LabeledViewController", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                void 0 === c && (c = {
                    width: 4,
                    height: 4
                });
                var e = a.call(this, b) || this;
                return e._autoChache = !0, e._textField = new d.TextFieldController(e.skin.textField, c), e.setAutoCache(e._autoChache), e
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b)
            }, b.prototype.setText = function(a) {
                this._textField.setText(a)
            }, b.prototype.getText = function() {
                return this._textField.getText()
            }, b.prototype.setAutoCache = function(a) {
                this._autoChache = a, null != this._textField && this._textField.setAutoCache(a)
            }, b.prototype.getAutoCache = function() {
                return this._autoChache
            }, Object.defineProperty(b.prototype, "autoResizeFont", {
                get: function() {
                    return this._textField.autoResizeFont
                },
                set: function(a) {
                    this._textField.autoResizeFont = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "textFormatter", {
                get: function() {
                    return this._textField.textFormatter
                },
                set: function(a) {
                    this._textField.textFormatter = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.LabeledViewController);
        b.LabeledTextFieldController = e
    }), define("wcgf/coreComponents/GenericMessageController", ["require", "exports", "wcgf/coreComponents/LabeledTextFieldController", "wcgf/core/TextManager", "wcgf/coreComponents/GenericViewController", "wcgf/core/AssetManager"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b() {
                var b = a.call(this, null) || this;
                return b._assetManager = f.AssetManager.getInstance(), b
            }
            return __extends(b, a), b.prototype.init = function() {
                this.skin = this._assetManager.getAsset("Messages"), this._autoSpinMessage = this.setLabeledViewController("autoSpinMessage"), this._goodLuckMessage = this.setLabeledViewController("goodLuckMessage"), this._gameOverMessage = this.setLabeledViewController("gameOverMessage"), this._gameWinMessage = this.setLabeledViewController("gameWinMessage"), this._noFundsMessage = this.setLabeledViewController("noFundsMessage"), this._insufficientFundsMessage = this.setLabeledViewController("insufficientFundsMessage"), this._lineWinMessage = this.setLabeledTextFieldController("lineWinMessage"), this._linePlusBonusWinMessage = this.setLabeledTextFieldController("linePlusBonusWinMessage"), this._scatterWinMessage = this.setLabeledTextFieldController("scatterWinMessage"), this._scatterPlusBonusWinMessage = this.setLabeledTextFieldController("scatterPlusBonusWinMessage"), this._bonusWinMessage = this.setLabeledTextFieldController("bonusWinMessage")
            }, b.prototype.setLabeledViewController = function(a) {
                if (this.messageExists(a)) {
                    var b = new c.LabeledTextFieldController(this.skin[a]);
                    return b.init(), b.label = d.TextManager.getInstance().getText(a), b.visible = !1, b
                }
            }, b.prototype.setLabeledTextFieldController = function(a) {
                if (this.messageExists(a)) {
                    var b = new c.LabeledTextFieldController(this.skin[a]);
                    return b.init(), b.label = d.TextManager.getInstance().getText(a), b.visible = !1, b
                }
            }, b.prototype.messageExists = function(a) {
                return null != this.skin[a]
            }, b
        }(e.GenericViewController);
        b.GenericMessageController = g
    }), define("wcgf/coreComponents/MultiLabeledController", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                void 0 === c && (c = 1);
                var e = a.call(this, b) || this;
                e._labelArray = new Array;
                for (var f = 1; f <= c; f++) {
                    var g = new d.TextFieldController(e.skin["label_" + f]);
                    e._labelArray.push(g)
                }
                return e
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b)
            }, b.prototype.setLabel = function(a, b) {
                this._labelArray[b].setText(a)
            }, b.prototype.getLabel = function(a) {
                return this._labelArray[a].getText()
            }, b.prototype.setTextFormatter = function(a, b) {
                this._labelArray[b].textFormatter = a
            }, b.prototype.getAutoResizeFont = function(a) {
                return this._labelArray[a].autoResizeFont
            }, b.prototype.setAutoResizeFont = function(a, b) {
                this._labelArray[b].autoResizeFont = a
            }, b
        }(c.GenericViewController);
        b.MultiLabeledController = e
    }), define("wcgf/textFormatters/CurrencyTextFormatter", ["require", "exports", "wcgf/core/CurrencyFormatter"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a(a) {
                this._formatData = null, this._formatter = c.CurrencyFormatter.getInstance(), this.setFormatData(a)
            }
            return a.prototype.setFormatData = function(a) {
                this._formatData = a
            }, a.prototype.format = function(a) {
                var b = parseFloat(a);
                return isNaN(b) ? a : null != this._formatData ? this._formatter.format(b, this._formatData.denomination, this._formatData.truncateWholeInts, this._formatData.useMinorSymbol, this._formatData.currencyCode) : this._formatter.format(b)
            }, a
        }();
        b.CurrencyTextFormatter = d
    }), define("wcgf/coreComponents/GenericPlaqueController", ["require", "exports", "wcgf/coreComponents/LabeledTextFieldController", "wcgf/core/TextManager", "wcgf/coreComponents/GenericViewController", "wcgf/core/CurrencyFormatter", "wcgf/core/AssetManager", "wcgf/coreComponents/MultiLabeledController", "wcgf/textFormatters/CurrencyTextFormatter"], function(a, b, c, d, e, f, g, h, i) {
        "use strict";
        var j = function(a) {
            function b() {
                var b = a.call(this, null) || this;
                return b._assetManager = g.AssetManager.getInstance(), b
            }
            return __extends(b, a), b.prototype.init = function(a) {
                this.skin = this._assetManager.getAsset("Plaques"), this.setDenomination(a), this._retriggerPlaque = this.setLabeledViewController("retriggerPlaque", "retriggerMessage"), this._maxSpinsPlaque = this.setLabeledViewController("maxSpinsPlaque", "maxSpinMessage"), this._maxRetriggerPlaque = this.setLabeledViewController("maxRetriggerPlaque", "maxRetriggerMessage"), this._pressStartToSpin = this.setLabeledViewController("pressStartButtonPlaque", "pressStart"), this._insufficientFunds = this.setLabeledViewController("insufficientFundsPlaque", "insufficientFunds"), this._bonusCompletePlaque = this.setLabeledTextFieldController("bonusCompletePlaque", "bonusCompleteMessage"), this._maxAwardPlaqueBonus = this.setMultiLabeledTextFieldController("maxAwardPlaqueBonus", ["maxAwardBonusMessage1", "maxAwardBonusMessage2"], 3, a.paytableResponse.awardCapInfo.currencyCap.awardCap), this._maxAwardPlaque = this.setLabeledTextFieldController("maxAwardPlaque", "maxAwardMessage")
            }, b.prototype.setLabeledViewController = function(a, b) {
                if (this.plaqueExists(a)) {
                    var e = new c.LabeledTextFieldController(this.skin[a]);
                    return e.init(), e.label = d.TextManager.getInstance().getText(b), e.visible = !1, e
                }
            }, b.prototype.setLabeledTextFieldController = function(a, b) {
                if (this.plaqueExists(a)) {
                    var e = new c.LabeledTextFieldController(this.skin[a]);
                    return e.init(), e.label = d.TextManager.getInstance().getText(b), e.visible = !1, e
                }
            }, b.prototype.setMultiLabeledTextFieldController = function(a, b, c, e) {
                if (this.plaqueExists(a)) {
                    var f = new h.MultiLabeledController(this.skin[a], c);
                    return f.init(), f.setLabel(d.TextManager.getInstance().getText(b[0]), 0), f.setTextFormatter(new i.CurrencyTextFormatter({
                        denomination: 1
                    }), 1), f.setLabel(e, 1), f.setLabel(d.TextManager.getInstance().getText(b[1]), 2), f.visible = !1, f
                }
            }, b.prototype.setDenomination = function(a) {
                null != a && null != a.paytableResponse && null != a.paytableResponse.denominationList && a.paytableResponse.denominationList.length > 0 && (this._denomination = a.paytableResponse.denominationList[0].value)
            }, b.prototype.plaqueExists = function(a) {
                return null != this.skin[a]
            }, b.prototype.displayLabelView = function(a) {
                this.hideCurrentPlaque(), this._currentLabeledView = a, this._currentLabeledView.visible = !0
            }, b.prototype.displayLabeledTextField = function(a, b) {
                b && (this.hideCurrentPlaque(), this._currentTextField = a, this._currentTextField.setText(this.formatValue(b, 1)), this._currentTextField.visible = !0)
            }, b.prototype.displayMultiLabeledView = function(a) {
                this.hideCurrentPlaque(), this._currentMultiLabeledView = a, this._currentMultiLabeledView.visible = !0
            }, b.prototype.hideCurrentPlaque = function() {
                null != this._currentLabeledView && (this._currentLabeledView.visible = !1, this._currentLabeledView = null), null != this._currentTextField && (this._currentTextField.visible = !1, this._currentTextField = null), null != this._currentMultiLabeledView && (this._currentMultiLabeledView.visible = !1, this._currentMultiLabeledView = null)
            }, Object.defineProperty(b.prototype, "retriggerPlaque", {
                get: function() {
                    return this._retriggerPlaque
                },
                set: function(a) {
                    this._retriggerPlaque = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "bonusCompletePlaque", {
                get: function() {
                    return this._bonusCompletePlaque
                },
                set: function(a) {
                    this._bonusCompletePlaque = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "maxAwardPlaqueBonus", {
                get: function() {
                    return this._maxAwardPlaqueBonus
                },
                set: function(a) {
                    this._maxAwardPlaqueBonus = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "maxAwardPlaque", {
                get: function() {
                    return this._maxAwardPlaque
                },
                set: function(a) {
                    this._maxAwardPlaque = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "maxSpinsPlaque", {
                get: function() {
                    return this._maxSpinsPlaque
                },
                set: function(a) {
                    this._maxSpinsPlaque = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "maxRetriggerPlaque", {
                get: function() {
                    return this._maxRetriggerPlaque
                },
                set: function(a) {
                    this._maxRetriggerPlaque = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "pressStartToSpin", {
                get: function() {
                    return this._pressStartToSpin
                },
                set: function(a) {
                    this._pressStartToSpin = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "insufficientFunds", {
                get: function() {
                    return this._insufficientFunds
                },
                set: function(a) {
                    this._insufficientFunds = a
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.formatValue = function(a, b) {
                return void 0 === b && (b = this._denomination), f.CurrencyFormatter.getInstance().format(a, b)
            }, b
        }(e.GenericViewController);
        b.GenericPlaqueController = j
    }), define("wcgf/coreComponents/IStageViewController", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/coreComponents/LabeledButtonController", ["require", "exports", "wcgf/coreComponents/LabeledViewController", "wcgf/coreComponents/BasicButtonController", "wcgf/core/events"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._btn = new d.BasicButtonController(b), c._btn.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onButtonClick, c), c
            }
            return __extends(b, a), b.prototype.onButtonClick = function(a) {
                this.dispatchEvent(new e.events.Event(d.BasicButtonController.MOUSE_CLICK, null, this))
            }, b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), this._btn.init(b)
            }, Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._btn.enable
                },
                set: function(a) {
                    this._btn.enable = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.LabeledViewController);
        b.LabeledButtonController = f
    }), define("wcgf/coreComponents/LabeledCheckBoxController", ["require", "exports", "wcgf/coreComponents/LabeledViewController", "wcgf/coreComponents/BasicCheckBoxController", "wcgf/core/events"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(b, c) {
                var e = a.call(this, b) || this;
                return e._checkBox = new d.BasicCheckBoxController(b.checkBox, c), e._checkBox.addEventListener(d.BasicCheckBoxController.CHECKED_VALUE_CHANGE, e.onCheckedValueChange, e), e
            }
            return __extends(b, a), b.prototype.onCheckedValueChange = function(a) {
                this.dispatchEvent(new e.events.Event(d.BasicCheckBoxController.CHECKED_VALUE_CHANGE, a.data, this))
            }, b.prototype.init = function(b) {
                a.prototype.init.call(this, b), this._checkBox.init(b)
            }, Object.defineProperty(b.prototype, "checked", {
                get: function() {
                    return this._checkBox.checked
                },
                set: function(a) {
                    this._checkBox.checked = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._checkBox.enable
                },
                set: function(a) {
                    this._checkBox.enable = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.LabeledViewController);
        b.LabeledCheckBoxController = f
    }), define("wcgf/coreComponents/LabeledCurrencyStepperController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/LabeledViewController", "wcgf/coreComponents/CurrencyFormattedStepperController"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._numericStepper = new e.CurrencyFormattedStepperController(c.skin.numericStepper), c._numericStepper.addEventListener(e.CurrencyFormattedStepperController.VALUE_CHANGE_UP, c.onValueChangeUp, c), c._numericStepper.addEventListener(e.CurrencyFormattedStepperController.VALUE_CHANGE_DOWN, c.onValueChangeDown, c), c._numericStepper.addEventListener(e.CurrencyFormattedStepperController.VALUE_CHANGE, c.onValueChange, c), c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), this._numericStepper.init(b)
            }, b.prototype.setSteps = function(a, b) {
                this._numericStepper.setSteps(a, b)
            }, b.prototype.stepBounds_handler = function() {
                this._numericStepper.stepBounds_handler()
            }, Object.defineProperty(b.prototype, "currentStep", {
                get: function() {
                    return this._numericStepper.currentStep
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isMax", {
                get: function() {
                    return this._numericStepper.isMax
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._numericStepper.enable
                },
                set: function(a) {
                    this._numericStepper.enable = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isInit", {
                get: function() {
                    return this._numericStepper.isInit
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.onValueChangeUp = function(a) {
                this.dispatchEvent(new c.events.Event(e.CurrencyFormattedStepperController.VALUE_CHANGE_UP, a.data, this))
            }, b.prototype.onValueChangeDown = function(a) {
                this.dispatchEvent(new c.events.Event(e.CurrencyFormattedStepperController.VALUE_CHANGE_DOWN, a.data, this))
            }, b.prototype.onValueChange = function(a) {
                this.dispatchEvent(new c.events.Event(e.CurrencyFormattedStepperController.VALUE_CHANGE, a.data, this))
            }, b
        }(d.LabeledViewController);
        b.LabeledCurrencyStepperController = f
    }), define("wcgf/coreComponents/LabeledGenericStepperController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/LabeledViewController", "wcgf/coreComponents/GenericStepperController"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._numericStepper = new e.GenericStepperController(c.skin.numericStepper), c._numericStepper.addEventListener(e.GenericStepperController.VALUE_CHANGE, c.onValueChange, c), c._numericStepper.addEventListener(e.GenericStepperController.VALUE_CHANGE_UP, c.onValueChangeUp, c), c._numericStepper.addEventListener(e.GenericStepperController.VALUE_CHANGE_DOWN, c.onValueChangeDown, c), c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), this._numericStepper.init(b)
            }, b.prototype.setSteps = function(a, b) {
                this._numericStepper.setSteps(a, b)
            }, b.prototype.stepBounds_handler = function() {
                this._numericStepper.stepBounds_handler()
            }, Object.defineProperty(b.prototype, "currentStep", {
                get: function() {
                    return this._numericStepper.currentStep
                },
                set: function(a) {
                    this._numericStepper.currentStep = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "stepArray", {
                get: function() {
                    return this._numericStepper.stepArray
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.getCurrentStepIndex = function() {
                return this._numericStepper.getCurrentStepIndex()
            }, Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._numericStepper.enable
                },
                set: function(a) {
                    this._numericStepper.enable = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isMax", {
                get: function() {
                    return this._numericStepper.isMax
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isInit", {
                get: function() {
                    return this._numericStepper.isInit
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.onValueChange = function(a) {
                this.dispatchEvent(new c.events.Event(e.GenericStepperController.VALUE_CHANGE, a.data, this))
            }, b.prototype.onValueChangeUp = function(a) {
                this.dispatchEvent(new c.events.Event(e.GenericStepperController.VALUE_CHANGE_UP, a.data, this))
            }, b.prototype.onValueChangeDown = function(a) {
                this.dispatchEvent(new c.events.Event(e.GenericStepperController.VALUE_CHANGE_DOWN, a.data, this))
            }, Object.defineProperty(b.prototype, "plusButtonEnable", {
                get: function() {
                    return this._numericStepper.plusButtonEnable
                },
                set: function(a) {
                    this._numericStepper.plusButtonEnable = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "minusButtonEnable", {
                get: function() {
                    return this._numericStepper.minusButtonEnable
                },
                set: function(a) {
                    this._numericStepper.minusButtonEnable = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "textFormatter", {
                get: function() {
                    return this._numericStepper.textFormatter
                },
                set: function(a) {
                    this._numericStepper.textFormatter = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "numericStepper", {
                get: function() {
                    return this._numericStepper
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.LabeledViewController);
        b.LabeledGenericStepperController = f
    }), define("wcgf/coreComponents/MultiTextFieldController", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                void 0 === c && (c = 1);
                var e = a.call(this, b) || this;
                e._autoCache = !0, e._textFieldArray = new Array;
                for (var f = 1; f <= c; f++) {
                    var g = new d.TextFieldController(e.skin["textField_" + f]);
                    e._textFieldArray.push(g)
                }
                return e
            }
            return __extends(b, a), b.prototype.init = function(a) {
                void 0 === a && (a = null);
                for (var b = 0, c = this._textFieldArray; b < c.length; b++) {
                    c[b].init(a)
                }
            }, b.prototype.setText = function(a, b) {
                this._textFieldArray[b].setText(a)
            }, b.prototype.getText = function(a) {
                return this._textFieldArray[a].getText()
            }, b.prototype.setAutoCache = function(a) {
                this._autoCache = a;
                for (var b = 0, c = this._textFieldArray; b < c.length; b++) {
                    c[b].setAutoCache(this._autoCache)
                }
            }, b.prototype.getAutoCache = function() {
                return this._autoCache
            }, b.prototype.cache = function() {
                for (var a = 0, b = this._textFieldArray; a < b.length; a++) {
                    b[a].cache()
                }
            }, b.prototype.uncache = function() {
                for (var a = 0, b = this._textFieldArray; a < b.length; a++) {
                    b[a].uncache()
                }
            }, b
        }(c.GenericViewController);
        b.MultiTextFieldController = e
    }), define("wcgf/coreComponents/LabeledMultiTextFieldController", ["require", "exports", "wcgf/coreComponents/LabeledViewController", "wcgf/coreComponents/MultiTextFieldController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                var e = a.call(this, b) || this;
                return e._textFieldArray = new Array, e._multiTextField = new d.MultiTextFieldController(b, c), e
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b)
            }, b.prototype.setText = function(a, b) {
                this._multiTextField.setText(a, b)
            }, b.prototype.getText = function(a) {
                return this._multiTextField.getText(a)
            }, b.prototype.setAutoCache = function(a) {
                this._multiTextField.setAutoCache(a)
            }, b.prototype.getAutoCache = function() {
                return null
            }, b.prototype.cache = function() {
                this._multiTextField.cache()
            }, b.prototype.uncache = function() {
                this._multiTextField.uncache()
            }, b
        }(c.LabeledViewController);
        b.LabeledMultiTextFieldController = e
    }), define("wcgf/coreComponents/RandomNumberGenerator", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this._previousValue = 0
            }
            return a.prototype.randRange = function(a, b) {
                return Math.floor(Math.random() * (b - a + 1)) + a
            }, a.prototype.randomExclusive = function(a, b) {
                var c = this._previousValue;
                if (a == b) return a;
                for (; c == this._previousValue;) c = this.randRange(a, b);
                return this._previousValue = c, c
            }, a.prototype.randomWithExclusionIntegerList = function(a, b, c) {
                var d = new Object;
                if (a == b) return a;
                var e = c.length;
                if (b - a + 1 - e <= 0) return c[0] < a || c[e], a;
                for (var f, g = 0; g < c.length; g++) f = c[g], d[f] = new Object;
                var h = new Array;
                g = 0;
                for (var i = a; i <= b; i++) null == d[i] && (h[g] = i, g++);
                return h[this.randRange(0, h.length - 1)]
            }, a
        }();
        b.RandomNumberGenerator = c
    }), define("wcgf/sequencers/TimerEventSequenceItem", ["require", "exports", "wcgf/core/events", "wcgf/sequencers/ISequenceItem"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c, d, e, f) {
                void 0 === c && (c = null), void 0 === d && (d = null), void 0 === e && (e = null), void 0 === f && (f = 1);
                var g = a.call(this) || this;
                return g._isSequenceDone = !1, g._isSequenceEnded = !1, g._isSequenceStarted = !1, g._time = 0, g._loop = 1, g._loopCount = 1, g.onTimer = function() {
                        null != g._callBack && g._callBack.call(g._context, g._data), g._loop > 0 && --g._loopCount <= 0 && g.stopSequence()
                    }, g._time = Math.max(b, 0), g._callBack = c, g._context = e, g._data = d, g._loop = Math.max(f, 0),
                    g._loopCount = g._loop, g
            }
            return __extends(b, a), b.prototype.startSequence = function(a) {
                if (void 0 === a && (a = !1), a || !this._isSequenceStarted) {
                    this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new c.events.Event(d.sequencers.SEQUENCE_START, null, this));
                    var b = this;
                    this._timer = setInterval(function() {
                        b.onTimer()
                    }, this._time)
                }
            }, b.prototype.resetSequence = function() {
                this._isSequenceEnded = !1, this._isSequenceDone = !1, this._isSequenceStarted = !1, null != this._timer && (clearInterval(this._timer), this._timer = null), this._loopCount = this._loop
            }, b.prototype.stopSequence = function(a) {
                void 0 === a && (a = !1), null != this._timer && (clearInterval(this._timer), this._timer = null), this.isSequenceDone || (this._isSequenceDone = !0, this.dispatchEvent(new c.events.Event(d.sequencers.SEQUENCE_DONE, null, this))), this._isSequenceStarted = !1, this.isSequenceEnded || (this._isSequenceEnded = !0, this.dispatchEvent(new c.events.Event(d.sequencers.SEQUENCE_END, null, this)))
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        b.TimerEventSequenceItem = e
    }), define("wcgf/coreComponents/MovieClipShaker", ["require", "exports", "wcgf/coreComponents/RandomNumberGenerator", "wcgf/sequencers/TimerEventSequenceItem", "wcgf/core/events", "wcgf/sequencers/ISequenceItem"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b(b) {
                var d = a.call(this) || this;
                return d._initialX = 0, d._initialY = 0, d.minX = 0, d.minY = 0, d.maxX = 0, d.maxY = 0, d.delay = 10, d.randomNumberGenerator = new c.RandomNumberGenerator, d._isSequenceDone = !1, d._isSequenceEnded = !1, d._isSequenceStarted = !1, d.skin = b, d
            }
            return __extends(b, a), b.prototype.init = function() {
                this._initialX = this.skin.x, this._initialY = this.skin.y, this.timerSeq = new d.TimerEventSequenceItem(10, this.timer_timerCompleteHandler, null, this, 0)
            }, b.prototype.timer_timerCompleteHandler = function(a) {
                this.skin.x = this.randomNumberGenerator.randRange(this.minX, this.maxX) + this._initialX, this.skin.y = this.randomNumberGenerator.randRange(this.minY, this.maxY) + this._initialY
            }, b.prototype.onSequenceDone = function(a) {
                this.dispatchEndEvents()
            }, b.prototype.dispatchEndEvents = function() {
                this.isSequenceDone || (this._isSequenceDone = !0, this.dispatchEvent(new e.events.Event(f.sequencers.SEQUENCE_DONE, null, this))), this._isSequenceStarted = !1, this.isSequenceEnded || (this._isSequenceEnded = !0, this.dispatchEvent(new e.events.Event(f.sequencers.SEQUENCE_END, null, this)))
            }, b.prototype.startSequence = function(a) {
                void 0 === a && (a = !1), !a && this._isSequenceStarted || (this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new e.events.Event(f.sequencers.SEQUENCE_START, null, this)), null != this.timerSeq ? (this.timerSeq.addEventListener(f.sequencers.SEQUENCE_END, this.onSequenceDone, this), this.timerSeq.startSequence(a)) : this.dispatchEndEvents())
            }, b.prototype.resetSequence = function() {
                this._isSequenceDone = !1, this._isSequenceEnded = !1, this._isSequenceStarted = !1, null != this.timerSeq && this.timerSeq.resetSequence()
            }, b.prototype.stopSequence = function(a) {
                void 0 === a && (a = !1), null != this.timerSeq && (this.timerSeq.stopSequence(a), this.skin.x = this._initialX, this.skin.y = this._initialY)
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(e.events.EventDispatcher);
        b.MovieClipShaker = g
    }), define("wcgf/coreComponents/PlayButtonController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/BasicButtonController", "wcgf/core/AssetManager", "wcgf/coreComponents/GenericViewController", "wcgf/gameComponents/MovieClipSequenceItem"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h;
        ! function(a) {
            a[a.Skip = 0] = "Skip", a[a.Start = 1] = "Start", a[a.Spin = 2] = "Spin"
        }(h = b.PlayButtonState || (b.PlayButtonState = {}));
        var i = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._isInit = !1, c._enable = !0, c._sendReceiveEnable = !1, c._assetManager = e.AssetManager.getInstance(), null != c.skin.skipButton && (c._skipButton = new d.BasicButtonController(c.skin.skipButton), c._skipButton.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onSkipButtonClick, c)), null != c.skin.startButton && (c._startButton = new d.BasicButtonController(c.skin.startButton), c._startButton.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onStartButtonClick, c)), null != c.skin.spinButton && (c._spinButton = new d.BasicButtonController(c.skin.spinButton), c._spinButton.addEventListener(d.BasicButtonController.MOUSE_CLICK, c.onSpinButtonClick, c)), null != c.skin.sendReceive && (c._sendReceive = c.skin.sendReceive, c._sendReceiveLoopSequence = new g.MovieClipSequenceItem(c._sendReceive, "onLoop", "onDone")), c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), null != this._skipButton && this._skipButton.init(), null != this._startButton && this._startButton.init(), null != this._spinButton && this._spinButton.init(), null != this._sendReceive && this._sendReceive.gotoAndStop("off"), this._isInit = !0, this.state = this._state
            }, b.prototype.onSkipButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.SKIP_BUTTON_CLICK, null, this))
            }, b.prototype.onStartButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.START_BUTTON_CLICK, null, this))
            }, b.prototype.onSpinButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.SPIN_BUTTON_CLICK, null, this))
            }, Object.defineProperty(b.prototype, "state", {
                get: function() {
                    return this._state
                },
                set: function(a) {
                    if (this._state = a, this._isInit) switch (this._state) {
                        case h.Skip:
                            null != this._skipButton && (this._skipButton.visible = !0, this._skipButton.enable = this._enable), null != this._startButton && (this._startButton.visible = !1, this._startButton.enable = !1), null != this._spinButton && (this._spinButton.visible = !1, this._spinButton.enable = !1);
                            break;
                        case h.Spin:
                            null != this._skipButton && (this._skipButton.visible = !1, this._skipButton.enable = !1), null != this._startButton && (this._startButton.visible = !1, this._startButton.enable = !1), null != this._spinButton && (this._spinButton.visible = !0, this._spinButton.enable = this._enable);
                            break;
                        case h.Start:
                            null != this._skipButton && (this._skipButton.visible = !1, this._skipButton.enable = !1), null != this._startButton && (this._startButton.visible = !0, this._startButton.enable = this._enable), null != this._spinButton && (this._spinButton.visible = !1, this._spinButton.enable = !1)
                    }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable = a, this.state = this._state
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isInit", {
                get: function() {
                    return this._isInit
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "sendReceiveEnable", {
                set: function(a) {
                    this._sendReceiveEnable != a && (this._sendReceiveEnable = a, null != this._sendReceive && (this._sendReceiveEnable ? this._sendReceiveLoopSequence.startSequence() : (this._sendReceiveLoopSequence.stopSequence(), this._sendReceive.gotoAndStop("off"))))
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(f.GenericViewController);
        i.SPIN_BUTTON_CLICK = "PlayButtonControllerSpinClick", i.START_BUTTON_CLICK = "PlayButtonControllerStartClick", i.SKIP_BUTTON_CLICK = "PlayButtonControllerSkipClick", b.PlayButtonController = i
    }), define("wcgf/gameComponents/OnSymbolWinController", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/core/AssetManager", "wcgf/core/CurrencyFormatter", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b() {
                var b = a.call(this, null) || this;
                return b._initX = 120, b._initY = 160, b._offSetX = 178, b._offSetY = 110, b._assetManager = d.AssetManager.getInstance(), b
            }
            return __extends(b, a), b.prototype.init = function(b, c) {
                void 0 === c && (c = "OnSymbolWinContainer"), a.prototype.init.call(this, b), this._denomination = b.paytableResponse.denominationList[0].value, this._onSymbolWinAsset = this._assetManager.getAsset(c), this.hideAllOnSymbolWin()
            }, b.prototype.hideAllOnSymbolWin = function() {
                for (var a = 0, b = this._onSymbolWinAsset.children; a < b.length; a++) {
                    b[a].visible = !1
                }
            }, b.prototype.hideOnSymbolWin = function() {
                null != this._currentOnSymbolWinAsset && (this._currentOnSymbolWinAsset.visible = !1)
            }, b.prototype.showOnSymbolWin = function(a, b, c) {
                void 0 === c && (c = !0), null == this._currentOnSymbolWinAsset && (this._currentOnSymbolWinAsset = new createjs.MovieClip), this.hideOnSymbolWin();
                var d, f;
                d = c ? a.length - 1 : 0, this._currentOnSymbolWinAsset = this._onSymbolWinAsset[a[d]], null != this._currentOnSymbolWinAsset && (this._currentOnSymbolWinAsset.visible = !0, this.payoutTextField = this._currentOnSymbolWinAsset.textField, f = e.CurrencyFormatter.getInstance().format(b, this._denomination), this.setPayoutText(f))
            }, Object.defineProperty(b.prototype, "payoutTextField", {
                set: function(a) {
                    this._payoutTextField = new f.TextFieldController(a)
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.setPayoutText = function(a) {
                this._payoutTextField.setText(a)
            }, b
        }(c.GenericViewController);
        b.OnSymbolWinController = g
    }), define("wcgf/gameComponents/AnimatedOnSymbolWinController", ["require", "exports", "wcgf/gameComponents/OnSymbolWinController", "wcgf/core/CurrencyFormatter", "wcgf/gameComponents/MovieClipSequenceItem"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b() {
                return a.call(this) || this
            }
            return __extends(b, a), b.prototype.init = function(b, c) {
                void 0 === c && (c = "OnSymbolWinContainer"), a.prototype.init.call(this, b, c)
            }, b.prototype.showOnSymbolWin = function(a, b, c) {
                void 0 === c && (c = !0), null == this._currentOnSymbolWinAsset && (this._currentOnSymbolWinAsset = new createjs.MovieClip), this.hideOnSymbolWin();
                var f, g;
                f = c ? a.length - 1 : 0, this._currentOnSymbolWinAsset = this._onSymbolWinAsset[a[f]], this._currentOnSymbolWinAsset.visible = !0, this.payoutTextField = this._currentOnSymbolWinAsset.animContainer.textField, g = d.CurrencyFormatter.getInstance().format(b, this._denomination), this.setPayoutText(g), this._onSymbolWinSeq = new e.MovieClipSequenceItem(this._currentOnSymbolWinAsset, "start", "end", 1), this._onSymbolWinSeq.startSequence()
            }, b
        }(c.OnSymbolWinController);
        b.AnimatedOnSymbolWinController = f
    }), define("wcgf/gameComponents/BetManager", ["require", "exports", "wcgf/core/events", "wcgf/core/CurrencyFormatter", "wcgf/messageBus/ConsoleBusProxy", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/messageBus/GameMsgBus"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h = function() {
            function a() {
                this.lineBetConsoleEnable = !0, this.lineConsoleEnable = !0, this.lineBetConsoleOverride = null, this.lineConsoleOverride = null, this.lineBetConsoleVisible = !0, this.lineConsoleVisible = !0, this.lineBetConsoleParams = {
                    type: "list",
                    text: "Coin Value"
                }, this.lineConsoleParams = {
                    type: "list",
                    text: "Lines"
                }
            }
            return a
        }();
        b.ConsoleProxySettings = h;
        var i = function(a) {
            function b() {
                var c = a.call(this) || this;
                if (c._denomination = 0, c._serverBalance = 0, c._localBalance = 0, c._betPerPatternSelectedIndex = 0, c._betPerPatternDic = new f.default, c._maxBetPerPaternIndex = 0, c._patternsBetSelectedIndex = 0, c._patternsBetDic = new f.default, c._maxPatternsBetIndex = 0, c._totalBet = 0, c._deductAmount = 0, c._deductibleActionStages = ["BaseGame"], c._isInit = !1, c._promoFreeSpinEnabled = !1, c._insufficientFundChecksEnabled = !1, c.consoleProxySettings = new h, b._betManagerInstance) throw new Error("Error: Instantiation failed: Use SoundManager.getInstance() instead of new.");
                return b._betManagerInstance = c, c
            }
            return __extends(b, a), b.getInstance = function() {
                return b._betManagerInstance
            }, b.prototype.init = function(a) {
                if (this._consoleProxy = e.ConsoleBusProxy.getInstance(), this._consoleProxy.enableBetPerPattern(this.consoleProxySettings.lineBetConsoleEnable), this._consoleProxy.enablePatternsBet(this.consoleProxySettings.lineConsoleEnable), this._consoleProxy.init(a), null != a.paytableResponse.denominationList && a.paytableResponse.denominationList.length > 0 && (this._denomination = a.paytableResponse.denominationList[0].value), null != a.gameLogicResponse.promotionalFreeSpin && (this._promoFreeSpinEnabled = !0), this.updateServerBalance(a), null != a.paytableResponse.patternSliderInfo.betInfo && a.paytableResponse.patternSliderInfo.betInfo.steps.length > 0) {
                    this._betPerPattern = a.paytableResponse.patternSliderInfo.betInfo.steps, this.consoleProxySettings.lineBetConsoleVisible && (null == this.consoleProxySettings.lineBetConsoleOverride ? this._consoleProxy.registerLineBetConsole(this._betPerPattern, this.consoleProxySettings.lineBetConsoleParams) : this._consoleProxy.registerLineBetConsole(this.consoleProxySettings.lineBetConsoleOverride, this.consoleProxySettings.lineBetConsoleParams));
                    for (var b in this._betPerPattern) {
                        var c = d.CurrencyFormatter.getInstance().format(this._betPerPattern[b], this._denomination);
                        this._betPerPatternDic.setValue(c, {
                            index: parseInt(b),
                            value: this._betPerPattern[b],
                            text: c
                        }), null != a.gameLogicResponse && null != a.gameLogicResponse.patternSliderInput && this._betPerPattern[b] == a.gameLogicResponse.patternSliderInput.betPerPattern && (this.betPerPatternSelectedIndex = parseInt(b))
                    }
                }
                if (null != a.paytableResponse.patternSliderInfo.patternInfo && a.paytableResponse.patternSliderInfo.patternInfo.steps.length > 0) {
                    this._patternsBet = a.paytableResponse.patternSliderInfo.patternInfo.steps, this.consoleProxySettings.lineConsoleVisible && (null == this.consoleProxySettings.lineConsoleOverride ? this._consoleProxy.registerLineConsole(this._patternsBet, this.consoleProxySettings.lineConsoleParams) : this._consoleProxy.registerLineConsole(this.consoleProxySettings.lineConsoleOverride, this.consoleProxySettings.lineConsoleParams));
                    for (var b in this._patternsBet) {
                        var c = d.CurrencyFormatter.getInstance().format(this._patternsBet[b], this._denomination);
                        this._patternsBetDic.setValue(c, {
                            index: parseInt(b),
                            value: this._patternsBet[b],
                            text: c
                        }), null != a.gameLogicResponse && null != a.gameLogicResponse.patternSliderInput && this._patternsBet[b] == a.gameLogicResponse.patternSliderInput.patternsBet && (this.patternsBetSelectedIndex = parseInt(b))
                    }
                }
                null != this._betPerPattern && null != this._patternsBet && this._consoleProxy.registerStakeConsole(), this.updateTotalBet(), this._consoleProxy.changeStakeConsole(this.totalBet), this._consoleProxy.addEventListener(e.ConsoleBusProxy.CONSOLE_DATA_CHANGE, this.onConsoleChange, this), g.GameMsgBus.getInstance().addEventListener(g.GameMsgBus.ACCOUNT_BALANCES, this.onAccountBalance, this), g.GameMsgBus.getInstance().addEventListener(g.GameMsgBus.BEFORE_SHOW_STAGE, this.onStageChange, this), g.GameMsgBus.getInstance().addEventListener(g.GameMsgBus.START_GAME_IN_PROGRESS_STAGE, this.onStageChange, this), g.GameMsgBus.getInstance().addEventListener(g.GameMsgBus.BEFORE_REQUEST, this.onBeforeRequest, this), g.GameMsgBus.getInstance().addEventListener(g.GameMsgBus.RESOLVE_STAGE, this.onStageChange, this), this._isInit = !0
            }, b.prototype.onStageChange = function(a) {
                if (null != a.data.gameLogicResponse && null != a.data.gameLogicResponse.outcomeDetail) {
                    var d = a.data.gameLogicResponse.outcomeDetail.nextStage;
                    d != this._currentStage && (this._currentStage = d, this.dispatchEvent(new c.events.Event(b.STAGE_CHANGE, a.data, this)))
                }
            }, b.prototype.onConsoleChange = function(a) {
                var d = null;
                switch (a.data.option) {
                    case "betPerPattern":
                        d = this._betPerPatternDic.getValue(a.data.value), this._betPerPatternSelectedIndex = d.index, this.updateTotalBet(), this.updateMaxPatternsBetIndex(), this.dispatchEvent(new c.events.Event(b.BET_PER_PATTERN_CHANGE, d, this));
                        break;
                    case "patternsBet":
                        d = this._patternsBetDic.getValue(a.data.value), this._patternsBetSelectedIndex = d.index, this.updateTotalBet(), this.updateMaxBetPerPaternIndex(), this.dispatchEvent(new c.events.Event(b.PATTERNS_BET_CHNAGE, d, this))
                }
            }, b.prototype.changeLineBet = function(a) {
                this.consoleProxySettings.lineBetConsoleVisible && this._consoleProxy.changeLineBetConsole(a)
            }, b.prototype.onAccountBalance = function(a) {
                this.updateServerBalance(a.data)
            }, b.prototype.updateServerBalance = function(a) {
                var b;
                b = null == a.balanceValue || isNaN(a.balanceValue) ? this.rountTo(a.gameLogicResponse.balances.totalBalance, 2) : this.rountTo(parseFloat(a.balanceValue), 2), b != this._serverBalance && (this._serverBalance = b, this.updateLocalBalance(this._serverBalance)), this.updateMaxBetPerPaternIndex(), this.updateMaxPatternsBetIndex()
            }, b.prototype.updateLocalBalance = function(a) {
                a != this._localBalance && (this._localBalance = a, this.dispatchEvent(new c.events.Event(b.BALANCE_CHANGE, this._localBalance, this)))
            }, b.prototype.updateTotalBet = function() {
                if (null != this._betPerPattern && null != this._patternsBet) {
                    var a = this._betPerPattern[this._betPerPatternSelectedIndex] * this._patternsBet[this._patternsBetSelectedIndex];
                    a != this._totalBet && (this._totalBet = a, this._isInit && this._consoleProxy.changeStakeConsole(this.totalBet), this.dispatchEvent(new c.events.Event(b.TOTAL_BET_CHANGE, this._totalBet, this)))
                }
            }, b.prototype.updateMaxBetPerPaternIndex = function() {
                if (null != this._betPerPattern)
                    if (this._insufficientFundChecksEnabled)
                        for (var a = this._maxBetPerPaternIndex = 0, b = this._betPerPattern[a] * this._patternsBet[this._patternsBetSelectedIndex] * this._denomination; b <= this._localBalance && this._maxBetPerPaternIndex < this._betPerPattern.length;) this._maxBetPerPaternIndex = a, a++, b = this._betPerPattern[a] * this._patternsBet[this._patternsBetSelectedIndex] * this._denomination;
                    else this._maxBetPerPaternIndex = this._betPerPattern.length - 1
            }, b.prototype.updateMaxPatternsBetIndex = function() {
                if (null != this._patternsBet)
                    if (this._insufficientFundChecksEnabled)
                        for (var a = this._maxPatternsBetIndex = 0, b = this._patternsBet[a] * this._betPerPattern[this._betPerPatternSelectedIndex] * this._denomination; b < this._localBalance && this._maxPatternsBetIndex < this._patternsBet.length;) this._maxPatternsBetIndex = a, a++, b = this._betPerPattern[this._betPerPatternSelectedIndex] * this._patternsBet[a] * this._denomination;
                    else this._maxPatternsBetIndex = this._patternsBet.length - 1
            }, b.prototype.playAction = function(a) {
                void 0 === a && (a = null);
                var b = a;
                null == b && (b = {
                    ActionInput: {
                        Action: "play"
                    },
                    PatternSliderInput: {
                        BetPerPattern: this._betPerPattern[this._betPerPatternSelectedIndex],
                        PatternsBet: this._patternsBet[this.patternsBetSelectedIndex]
                    }
                }), g.GameMsgBus.getInstance().dispatchEvent(new c.events.Event(g.GameMsgBus.PLAY_DATA, b))
            }, b.prototype.deductBalance = function(a, b) {
                void 0 === a && (a = null), void 0 === b && (b = !1), (b || this._deductibleActionStages.indexOf(this._currentStage) >= 0) && (this._deductAmount = a, null == a && (this._deductAmount = this._betPerPattern[this._betPerPatternSelectedIndex] * this._patternsBet[this.patternsBetSelectedIndex] * this._denomination), this.updateLocalBalance(this.rountTo(Math.max(0, this._localBalance - this._deductAmount), 2)))
            }, b.prototype.onBeforeRequest = function(a) {
                this._deductAmount > 0 && g.GameMsgBus.getInstance().dispatchEvent(new c.events.Event(g.GameMsgBus.DEDUCT_STAKE, this._deductAmount)), this._deductAmount = 0
            }, b.prototype.rountTo = function(a, b) {
                var c = Math.pow(10, b);
                return a = parseFloat((a * c).toFixed(11)), parseFloat((Math.round(a) / c).toFixed(2))
            }, Object.defineProperty(b.prototype, "denomination", {
                get: function() {
                    return this._denomination
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "balance", {
                get: function() {
                    return this._localBalance
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "betPerPattern", {
                get: function() {
                    return this._betPerPattern
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentBetPerPattern", {
                get: function() {
                    return null != this._betPerPattern ? this._betPerPattern[this._betPerPatternSelectedIndex] : 0
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "betPerPatternSelectedIndex", {
                get: function() {
                    return this._betPerPatternSelectedIndex
                },
                set: function(a) {
                    this._betPerPatternSelectedIndex = a, this.updateTotalBet(), this.updateMaxPatternsBetIndex(), this.consoleProxySettings.lineBetConsoleVisible && this._consoleProxy.changeLineBetConsole(this._betPerPattern[this._betPerPatternSelectedIndex])
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "maxBetPerPatternIndex", {
                get: function() {
                    return this._maxBetPerPaternIndex
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "patternsBet", {
                get: function() {
                    return this._patternsBet
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentPatternsBet", {
                get: function() {
                    return null != this._patternsBet ? this._patternsBet[this._patternsBetSelectedIndex] : 0
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "patternsBetSelectedIndex", {
                get: function() {
                    return this._patternsBetSelectedIndex
                },
                set: function(a) {
                    this._patternsBetSelectedIndex = a, this.updateTotalBet(), this.updateMaxBetPerPaternIndex(), this.consoleProxySettings.lineConsoleVisible && this._consoleProxy.changeLineConsole(this._patternsBet[this._patternsBetSelectedIndex])
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "maxPatternsBetIndex", {
                get: function() {
                    return this._maxPatternsBetIndex
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "totalBet", {
                get: function() {
                    return this._totalBet
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentStage", {
                get: function() {
                    return this._currentStage
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "deductibleActionStages", {
                get: function() {
                    return this._deductibleActionStages
                },
                set: function(a) {
                    this._deductibleActionStages = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "insufficientFunds", {
                get: function() {
                    return !(this._promoFreeSpinEnabled || !this._insufficientFundChecksEnabled) && this._totalBet * this._denomination > this._localBalance
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "insufficientFundChecksEnabled", {
                get: function() {
                    return this._insufficientFundChecksEnabled
                },
                set: function(a) {
                    this._insufficientFundChecksEnabled = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        i.BET_PER_PATTERN_CHANGE = "BetManagerBetPerPatternChange", i.PATTERNS_BET_CHNAGE = "BetManagerPatternsBetChange", i.TOTAL_BET_CHANGE = "BetManagerPatternsTotalBetChange", i.BALANCE_CHANGE = "BetManagerBalanceChange", i.STAGE_CHANGE = "BetManagerStageChange", i._betManagerInstance = new i, b.BetManager = i
    }), define("wcgf/gameComponents/BaseGameBetControls", ["require", "exports", "wcgf/core/events", "wcgf/core/AssetManager", "wcgf/core/TextManager", "wcgf/textFormatters/CurrencyTextFormatter", "wcgf/coreComponents/LabeledGenericStepperController", "wcgf/coreComponents/LabeledTextFieldController", "wcgf/coreComponents/GenericStepperController", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/sounds/SoundManager", "wcgf/gameComponents/BetManager", "wcgf/messageBus/GameMsgBus"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) {
        "use strict";
        var n;
        ! function(a) {
            a[a.LineMeterUpSound = 0] = "LineMeterUpSound", a[a.LineMeterMaxSound = 1] = "LineMeterMaxSound", a[a.LineMeterDownSound = 2] = "LineMeterDownSound", a[a.LineMeterMinSound = 3] = "LineMeterMinSound", a[a.LineBetMeterUpSound = 4] = "LineBetMeterUpSound", a[a.LineBetMeterMaxSound = 5] = "LineBetMeterMaxSound", a[a.LineBetMeterDownSound = 6] = "LineBetMeterDownSound", a[a.LineBetMeterMinSound = 7] = "LineBetMeterMinSound"
        }(n = b.BetControlSounds || (b.BetControlSounds = {}));
        var o = function() {
            function a() {
                this.lineMeterName = "lineMeter", this.lineMeterLabel = "lines", this.lineMeterTextFormatter = null, this.lineBetMeterName = "lineBetMeter", this.lineBetMeterLabel = "lineBet", this.lineBetMeterFormatter = new f.CurrencyTextFormatter, this.totalBetMeterName = "totalBetMeter", this.totalBetMeterLabel = "totalBet", this.totalBetMeterTextFormatter = new f.CurrencyTextFormatter, this.totalBetMeterName_mobile = "totalBetMeter_Mobile"
            }
            return a
        }();
        b.BaseGameBetDef = o;
        var p = function(a) {
            function b(b, c) {
                void 0 === c && (c = new o);
                var e = a.call(this) || this;
                return e._enabled = !0, e._totalBet = 0, e._soundMap = new j.default, e._betManager = l.BetManager.getInstance(), e._betManager.addEventListener(l.BetManager.BET_PER_PATTERN_CHANGE, e.onBetPerPatternChange, e), e._betManager.addEventListener(l.BetManager.PATTERNS_BET_CHNAGE, e.onPatternsBetChange, e), m.GameMsgBus.getInstance().addEventListener(m.GameMsgBus.BEFORE_SHOW_STAGE, e.checkInsufficientFunds, e), m.GameMsgBus.getInstance().addEventListener(m.GameMsgBus.BEGIN_NEW_GAME, e.checkInsufficientFunds, e), e._plaqueController = b, e._assetManager = d.AssetManager.getInstance(), e._lineMeterName = c.lineMeterName, e._lineMeterLabel = c.lineMeterLabel, e._lineMeterTextFormatter = c.lineMeterTextFormatter, e._lineBetMeterName = c.lineBetMeterName, e._lineBetMeterLabel = c.lineBetMeterLabel, e._lineBetMeterTextFormatter = c.lineBetMeterFormatter, e._totalBetMeterName = c.totalBetMeterName, e._totalBetMeterLabel = c.totalBetMeterLabel, e._totalBetMeterTextFormatter = c.totalBetMeterTextFormatter, e._totalBetMeterName_mobile = c.totalBetMeterName_mobile, e
            }
            return __extends(b, a), b.prototype.init = function(a) {
                null != a && null != a.paytableResponse && null != a.paytableResponse.denominationList && a.paytableResponse.denominationList.length > 0 && (null != this._lineMeterTextFormatter && this._lineMeterTextFormatter instanceof f.CurrencyTextFormatter && this._lineMeterTextFormatter.setFormatData({
                    denomination: this._betManager.denomination
                }), null != this._lineBetMeterTextFormatter && this._lineBetMeterTextFormatter instanceof f.CurrencyTextFormatter && this._lineBetMeterTextFormatter.setFormatData({
                    denomination: this._betManager.denomination
                }), null != this._totalBetMeterTextFormatter && this._totalBetMeterTextFormatter instanceof f.CurrencyTextFormatter && this._totalBetMeterTextFormatter.setFormatData({
                    denomination: this._betManager.denomination
                }));
                var b = this._assetManager.getAsset(this._lineMeterName);
                null != b && (this._lineMeter = new g.LabeledGenericStepperController(b), this._lineMeter.init(a), this._lineMeter.textFormatter = this._lineMeterTextFormatter, this._lineMeter.label = e.TextManager.getInstance().getText(this._lineMeterLabel), this._lineMeterSteps = a.paytableResponse.patternSliderInfo.patternInfo.steps, this._lineMeter.setSteps(a.gameLogicResponse.patternSliderInput.patternsBet, this._lineMeterSteps), this._lineMeter.addEventListener(i.GenericStepperController.VALUE_CHANGE_UP, this.onLineValueChangeUp, this), this._lineMeter.addEventListener(i.GenericStepperController.VALUE_CHANGE_DOWN, this.onLineValueChangeDown, this));
                var c = this._assetManager.getAsset(this._lineBetMeterName);
                null != c && (this._lineBetMeter = new g.LabeledGenericStepperController(c), this._lineBetMeter.textFormatter = this._lineBetMeterTextFormatter, this._lineBetMeter.init(a), this._lineBetMeter.label = e.TextManager.getInstance().getText(this._lineBetMeterLabel), this._lineBetMeterSteps = a.paytableResponse.patternSliderInfo.betInfo.steps, this._lineBetMeter.setSteps(a.gameLogicResponse.patternSliderInput.betPerPattern, this._lineBetMeterSteps), this._lineBetMeter.addEventListener(i.GenericStepperController.VALUE_CHANGE_UP, this.onBetLineValueChangeUp, this), this._lineBetMeter.addEventListener(i.GenericStepperController.VALUE_CHANGE_DOWN, this.onBetLineValueChangeDown, this));
                var d = this._assetManager.getAsset(this._totalBetMeterName);
                null != d && (this._totalBetMeter = new h.LabeledTextFieldController(d), this._totalBetMeter.init(a), this._totalBetMeter.textFormatter = this._totalBetMeterTextFormatter, this._totalBetMeter.label = e.TextManager.getInstance().getText(this._totalBetMeterLabel));
                var j = this._assetManager.getAsset(this._totalBetMeterName_mobile);
                null != j && (this._totalBetMeter_mobile = new h.LabeledTextFieldController(j), this._totalBetMeter_mobile.init(a), this._totalBetMeter_mobile.textFormatter = this._totalBetMeterTextFormatter, this._totalBetMeter_mobile.label = e.TextManager.getInstance().getText(this._totalBetMeterLabel)), this.updateTotalBet()
            }, b.prototype.onLineValueChangeUp = function(a) {
                null != this._lineMeter && (this._lineMeter.currentStep == this._lineMeterSteps[this._lineMeterSteps.length - 1] && this._soundMap.containsKey(n.LineMeterMaxSound) ? k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineMeterMaxSound)) : this._soundMap.containsKey(n.LineMeterUpSound) && k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineMeterUpSound)), this._betManager.patternsBetSelectedIndex = this._lineMeter.getCurrentStepIndex()), this.updateTotalBet()
            }, b.prototype.onLineValueChangeDown = function(a) {
                null != this._lineMeter && (this._lineMeter.currentStep == this._lineMeterSteps[0] && this._soundMap.containsKey(n.LineMeterMinSound) ? k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineMeterMinSound)) : this._soundMap.containsKey(n.LineMeterDownSound) && k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineMeterDownSound))), this.setMinPatternsBetSelectedIndex(), this.setMinBetPerPatternSelectedIndex(), this.updateTotalBet()
            }, b.prototype.setMinPatternsBetSelectedIndex = function() {
                for (null != this._lineMeter && (this._betManager.patternsBetSelectedIndex = this._lineMeter.getCurrentStepIndex()); this._betManager.insufficientFunds && this._betManager.patternsBetSelectedIndex > 0;) this._betManager.patternsBetSelectedIndex -= 1;
                null != this._lineMeter && (this._lineMeter.currentStep = this._betManager.currentPatternsBet)
            }, b.prototype.onPatternsBetChange = function(a) {
                null != this._lineMeter && (this._lineMeter.currentStep = a.data.value), this.updateTotalBet()
            }, b.prototype.checkInsufficientFunds = function() {
                null != this._plaqueController && (this._betManager.insufficientFunds ? null == this._plaqueController.insufficientFunds || this._plaqueController.insufficientFunds.visible || this._plaqueController.displayLabelView(this._plaqueController.insufficientFunds) : null != this._plaqueController.insufficientFunds && this._plaqueController.insufficientFunds.visible && this._plaqueController.hideCurrentPlaque())
            }, b.prototype.onBetLineValueChangeUp = function(a) {
                null != this._lineBetMeter && (this._lineBetMeter.currentStep == this._lineBetMeterSteps[this._lineBetMeterSteps.length - 1] && this._soundMap.containsKey(n.LineBetMeterMaxSound) ? k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineBetMeterMaxSound)) : this._soundMap.containsKey(n.LineBetMeterUpSound) && k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineBetMeterUpSound)), this._betManager.betPerPatternSelectedIndex = this._lineBetMeter.getCurrentStepIndex()), this.updateTotalBet()
            }, b.prototype.onBetLineValueChangeDown = function(a) {
                null != this._lineBetMeter && (this._lineBetMeter.currentStep == this._lineBetMeterSteps[0] && this._soundMap.containsKey(n.LineBetMeterMinSound) ? k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineBetMeterMinSound)) : this._soundMap.containsKey(n.LineBetMeterDownSound) && k.SoundManager.getInstance().execute(this._soundMap.getValue(n.LineBetMeterDownSound))), this.setMinBetPerPatternSelectedIndex(), this.setMinPatternsBetSelectedIndex(), this.updateTotalBet()
            }, b.prototype.setMinBetPerPatternSelectedIndex = function() {
                for (null != this._lineBetMeter && (this._betManager.betPerPatternSelectedIndex = this._lineBetMeter.getCurrentStepIndex()); this._betManager.insufficientFunds && this._betManager.betPerPatternSelectedIndex > 0;) this._betManager.betPerPatternSelectedIndex -= 1;
                null != this._lineBetMeter && (this._lineBetMeter.currentStep = this._betManager.currentBetPerPattern)
            }, b.prototype.onBetPerPatternChange = function(a) {
                null != this._lineBetMeter && (this._lineBetMeter.currentStep = a.data.value), this.updateTotalBet()
            }, b.prototype.updateTotalBet = function() {
                var a = this._betManager.totalBet;
                this._totalBet == a && this._totalBetMeter.getText() == a.toString() || (this._totalBet = a, null != this._totalBetMeter && this._totalBetMeter.setText(this._totalBet.toString()), null != this._totalBetMeter_mobile && this._totalBetMeter_mobile.setText(this._totalBet.toString()), this.checkMaxBet(), this.checkInsufficientFunds())
            }, b.prototype.checkMaxBet = function() {
                null != this._lineBetMeter && (this._lineBetMeter.plusButtonEnable = this._betManager.betPerPatternSelectedIndex < this._betManager.maxBetPerPatternIndex), null != this._lineMeter && (this._lineMeter.plusButtonEnable = this._betManager.patternsBetSelectedIndex < this._betManager.maxPatternsBetIndex)
            }, Object.defineProperty(b.prototype, "enabled", {
                get: function() {
                    return this._enabled
                },
                set: function(a) {
                    this._enabled = a, null != this._lineMeter && (this._lineMeter.enable = this._enabled), null != this._lineBetMeter && (this._lineBetMeter.enable = this._enabled),
                        this.checkMaxBet()
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "soundMap", {
                get: function() {
                    return this._soundMap
                },
                set: function(a) {
                    this._soundMap = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "betManager", {
                get: function() {
                    return this._betManager
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "lineMeter", {
                get: function() {
                    return this._lineMeter
                },
                set: function(a) {
                    this._lineMeter = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "lineBetMeter", {
                get: function() {
                    return this._lineBetMeter
                },
                set: function(a) {
                    this._lineBetMeter = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "totalBet", {
                get: function() {
                    return this._totalBet
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        b.BaseGameBetControllers = p
    }), define("wcgf/gameComponents/RollupIncrementer", ["require", "exports", "wcgf/core/CurrencyFormatter", "wcgf/sequencers/ISequenceItem", "wcgf/core/events"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b._denomination = 0, b._targetValue = 0, b._currentValue = 0, b._originalValue = 0, b._addOnTargetValue = !1, b._totalBet = 0, b._steps = 10, b._customSteps = null, b._timeIncrement = 100, b._bigWinThreshold = 100, b._midWinThreshold = 50, b._smallWinThreshold = 10, b._rollupComplete = !1, b._rollupStarted = !1, b._isSequenceDone = !1, b._isSequenceEnded = !1, b._isSequenceStarted = !1, b
            }
            return __extends(b, a), b.prototype.init = function() {}, Object.defineProperty(b.prototype, "textField", {
                set: function(a) {
                    this._textField = a
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.rollupIncrement = function() {
                var a = this._currentValue.toFixed();
                null == this._textField.textFormatter && (a = c.CurrencyFormatter.getInstance().format(this._currentValue, this._denomination)), this._textField.setText(a), !this._rollupComplete && this._currentValue < this._targetValue ? this._currentValue += this._customSteps || this._steps : this.stopSequence()
            }, b.prototype.endRollup = function() {
                this._rollupStarted && (this._rollupStarted = !1, this._rollupComplete = !0, this._currentValue = this._targetValue, clearInterval(this._timer), this.dispatchEnd())
            }, b.prototype.setSteps = function() {
                this._targetValue >= 2 * this._totalBet ? this._steps = this._targetValue / this._bigWinThreshold : this._targetValue >= this._totalBet ? this._steps = this._targetValue / this._midWinThreshold : this._targetValue < this._totalBet && (this._steps = this._targetValue / this._smallWinThreshold)
            }, b.prototype.updateSteps = function(a) {
                this._totalBet = a, this._steps = a / 10
            }, b.prototype.rollupLoop = function() {
                var a = this;
                this._timer = setInterval(function() {
                    a.rollupIncrement()
                }, this._timeIncrement)
            }, b.prototype.dispatchEnd = function() {
                this.isSequenceEnded || (this.dispatchEndEvents(), this.dispatchEvent(new e.events.Event(b.ROLLUP_COMPLETE, null, this)))
            }, b.prototype.dispatchEndEvents = function() {
                this.isSequenceDone || (this._isSequenceDone = !0, this.dispatchEvent(new e.events.Event(d.sequencers.SEQUENCE_DONE, null, this))), this._isSequenceStarted = !1, this.isSequenceEnded || (this._isSequenceEnded = !0, this.dispatchEvent(new e.events.Event(d.sequencers.SEQUENCE_END, null, this)))
            }, b.prototype.startSequence = function(a) {
                void 0 === a && (a = !1), !a && this._isSequenceStarted || (this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new e.events.Event(d.sequencers.SEQUENCE_START, null, this)), this.setSteps(), this._rollupStarted = !0, this.rollupLoop())
            }, b.prototype.resetSequence = function() {
                this._isSequenceEnded = !1, this._isSequenceDone = !1, this._isSequenceStarted = !1, this._rollupComplete = !1, this._addOnTargetValue || (this._originalValue = 0, this._currentValue = this._originalValue)
            }, b.prototype.stopSequence = function(a) {
                if (void 0 === a && (a = !1), a || this._rollupStarted) {
                    var b = this._targetValue.toFixed();
                    null == this._textField.textFormatter && (b = c.CurrencyFormatter.getInstance().format(this._targetValue, this._denomination)), this._textField.setText(b)
                }
                this.endRollup()
            }, Object.defineProperty(b.prototype, "denomination", {
                get: function() {
                    return this._denomination
                },
                set: function(a) {
                    this._denomination = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "targetValue", {
                get: function() {
                    return this._targetValue
                },
                set: function(a) {
                    this._targetValue = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentValue", {
                get: function() {
                    return this._currentValue
                },
                set: function(a) {
                    this._currentValue = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "addOnTargetValue", {
                get: function() {
                    return this._addOnTargetValue
                },
                set: function(a) {
                    this._addOnTargetValue = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "totalBet", {
                get: function() {
                    return this._totalBet
                },
                set: function(a) {
                    this._totalBet = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "customSteps", {
                get: function() {
                    return this._customSteps
                },
                set: function(a) {
                    this._customSteps = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "timeIncrement", {
                get: function() {
                    return this._timeIncrement
                },
                set: function(a) {
                    this._timeIncrement = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(e.events.EventDispatcher);
        f.ROLLUP_COMPLETE = "RollupComplete", b.RollupIncrementer = f
    }), define("wcgf/sequencers/LinearSequencer", ["require", "exports", "wcgf/sequencers/ISequenceItem", "wcgf/core/events"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                void 0 === c && (c = 1);
                var d = a.call(this) || this;
                return d._isSequenceDone = !1, d._isSequenceEnded = !1, d._isSequenceStarted = !1, d._loop = 1, d._loopCount = 1, d._stop = !1, d._currentIndex = 0, d._sequenceItems = new Array, d._sequenceItems = b, d._loop = Math.max(c, 0), d._loopCount = d._loop, d
            }
            return __extends(b, a), b.prototype.startSequence = function(a) {
                if (void 0 === a && (a = !1), a || !this._isSequenceStarted)
                    if (this.filterSequence(), this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_START, null, this)), this._sequenceItems.length > 0) {
                        for (var b = 0, e = this._sequenceItems; b < e.length; b++) {
                            var f = e[b];
                            f.addEventListener(c.sequencers.SEQUENCE_DONE, this.onSequenceItemDone, this), f.addEventListener(c.sequencers.SEQUENCE_END, this.onSequenceItemEnd, this)
                        }
                        this._sequenceItems[this._currentIndex].startSequence()
                    } else this.dispatchEnd()
            }, b.prototype.onSequenceItemDone = function(a) {
                this._currentIndex++, this._currentIndex == this._sequenceItems.length && (this._loopCount--, this._currentIndex = 0), this._currentIndex < this._sequenceItems.length && (this._loopCount > 0 || this._loop <= 0) && !this._stop && this._sequenceItems[this._currentIndex].startSequence(!0), this._sequenceItems[this._sequenceItems.length - 1].isSequenceDone && this._loopCount <= 0 && this.dispatchDone()
            }, b.prototype.onSequenceItemEnd = function(a) {
                (this._sequenceItems[this._sequenceItems.length - 1].isSequenceEnded && this._loopCount <= 0 && this._loop > 0 || this._stop) && this.dispatchEnd()
            }, b.prototype.stopAllSequence = function(a) {
                void 0 === a && (a = !1);
                for (var b = 0, c = this._sequenceItems; b < c.length; b++) {
                    c[b].stopSequence(a)
                }
            }, b.prototype.dispatchDone = function() {
                this.isSequenceDone || (this._isSequenceDone = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_DONE, null, this)))
            }, b.prototype.dispatchEnd = function() {
                if (!this.isSequenceEnded) {
                    this.isSequenceDone || this.dispatchDone();
                    for (var a = 0, b = this._sequenceItems; a < b.length; a++) {
                        var e = b[a];
                        e.removeEventListener(c.sequencers.SEQUENCE_DONE, this.onSequenceItemDone, this), e.removeEventListener(c.sequencers.SEQUENCE_END, this.onSequenceItemEnd, this)
                    }
                    this._isSequenceStarted = !1, this._isSequenceEnded = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_END, null, this))
                }
            }, b.prototype.resetSequence = function() {
                this._isSequenceDone = !1, this._isSequenceEnded = !1, this._isSequenceStarted = !1, this._stop = !1, this._currentIndex = 0, this._loopCount = this._loop;
                for (var a = 0, b = this._sequenceItems; a < b.length; a++) {
                    var c = b[a];
                    null != c && c.resetSequence()
                }
            }, b.prototype.filterSequence = function() {
                for (var a = this._sequenceItems.concat(), b = 0, c = a; b < c.length; b++) {
                    var d = c[b];
                    if (null == d) {
                        var e = this._sequenceItems.indexOf(d);
                        e > -1 && this._sequenceItems.splice(e, 1)
                    }
                }
            }, b.prototype.stopSequence = function(a) {
                void 0 === a && (a = !1), this._stop = !0, this.stopAllSequence(a)
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.removeSequenceItem = function(a) {
                var b = this._sequenceItems.indexOf(a);
                b >= 0 && (a.isSequenceStarted && !a.isSequenceEnded && a.stopSequence(!0), this._sequenceItems.splice(b, 1))
            }, Object.defineProperty(b.prototype, "sequenceItems", {
                get: function() {
                    return this._sequenceItems
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        b.LinearSequencer = e
    }), define("wcgf/sequencers/ParallelSequencer", ["require", "exports", "wcgf/sequencers/ISequenceItem", "wcgf/core/events"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                void 0 === c && (c = 1);
                var d = a.call(this) || this;
                return d._isSequenceDone = !1, d._isSequenceEnded = !1, d._isSequenceStarted = !1, d._loop = 1, d._loopCount = 1, d._stop = !1, d._sequenceItems = new Array, d._sequenceItems = b, d._loop = Math.max(c, 0), d._loopCount = d._loop, d
            }
            return __extends(b, a), b.prototype.startSequence = function(a) {
                if (void 0 === a && (a = !1), a || !this._isSequenceStarted)
                    if (this.filterSequence(), this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_START, null, this)), this._sequenceItems.length > 0)
                        for (var b = 0, e = this._sequenceItems; b < e.length; b++) {
                            var f = e[b];
                            f.addEventListener(c.sequencers.SEQUENCE_DONE, this.onSequenceItemDone, this), f.addEventListener(c.sequencers.SEQUENCE_END, this.onSequenceItemEnd, this), f.startSequence()
                        } else this.dispatchEnd()
            }, b.prototype.onSequenceItemDone = function(a) {
                if (this._loopCount <= 1 || 0 == this._loop) {
                    for (var b = !0, c = 0, d = this._sequenceItems; c < d.length; c++) {
                        var e = d[c];
                        e.isSequenceDone || (b = !1)
                    }
                    if (b && (this.dispatchDone(), 0 != this._loop))
                        for (var f = 0, g = this._sequenceItems; f < g.length; f++) {
                            var e = g[f];
                            e.stopSequence(!1)
                        }
                }
            }, b.prototype.onSequenceItemEnd = function(a) {
                for (var b = !0, c = 0, d = this._sequenceItems; c < d.length; c++) {
                    var e = d[c];
                    e.isSequenceEnded || (b = !1)
                }
                if (b)
                    if ((--this._loopCount > 0 || 0 == this._loop) && !this._stop)
                        for (var f = 0, g = this._sequenceItems; f < g.length; f++) {
                            var e = g[f];
                            e.startSequence()
                        } else this.dispatchEnd()
            }, b.prototype.stopAllSequence = function(a) {
                void 0 === a && (a = !1);
                for (var b = 0, c = this._sequenceItems; b < c.length; b++) {
                    c[b].stopSequence(a)
                }
            }, b.prototype.dispatchDone = function() {
                this.isSequenceDone || (this._isSequenceDone = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_DONE, null, this)))
            }, b.prototype.dispatchEnd = function() {
                if (!this.isSequenceEnded) {
                    this.isSequenceDone || this.dispatchDone();
                    for (var a = 0, b = this._sequenceItems; a < b.length; a++) {
                        var e = b[a];
                        e.removeEventListener(c.sequencers.SEQUENCE_DONE, this.onSequenceItemDone, this), e.removeEventListener(c.sequencers.SEQUENCE_END, this.onSequenceItemEnd, this)
                    }
                    this._isSequenceStarted = !1, this._isSequenceEnded = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_END, null, this))
                }
            }, b.prototype.resetSequence = function() {
                this._isSequenceDone = !1, this._isSequenceEnded = !1, this._isSequenceStarted = !1, this._stop = !1, this._loopCount = this._loop;
                for (var a = 0, b = this._sequenceItems; a < b.length; a++) {
                    var c = b[a];
                    null != c && c.resetSequence()
                }
            }, b.prototype.filterSequence = function() {
                for (var a = this._sequenceItems.concat(), b = 0, c = a; b < c.length; b++) {
                    var d = c[b];
                    if (null == d) {
                        var e = this._sequenceItems.indexOf(d);
                        e > -1 && this._sequenceItems.splice(e, 1)
                    }
                }
            }, b.prototype.stopSequence = function(a) {
                void 0 === a && (a = !1), this._stop = !0, this.stopAllSequence(a)
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.removeSequenceItem = function(a) {
                var b = this._sequenceItems.indexOf(a);
                b >= 0 && (a.isSequenceStarted && !a.isSequenceEnded && a.stopSequence(!0), this._sequenceItems.splice(b, 1))
            }, Object.defineProperty(b.prototype, "sequenceItems", {
                get: function() {
                    return this._sequenceItems
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        b.ParallelSequencer = e
    }), define("wcgf/gameComponents/BigWinController", ["require", "exports", "wcgf/core/AssetManager", "wcgf/coreComponents/LabeledViewController", "wcgf/coreComponents/TextFieldController", "wcgf/core/events", "wcgf/core/TextManager", "wcgf/gameComponents/MovieClipSequenceItem", "wcgf/gameComponents/RollupIncrementer", "wcgf/sequencers/ISequenceItem", "wcgf/sequencers/LinearSequencer", "wcgf/sequencers/ParallelSequencer"], function(a, b, c, d, e, f, g, h, i, j, k, l) {
        "use strict";
        var m = function(a) {
            function b(d) {
                void 0 === d && (d = b.DEFAULT_BIG_WIN_MULTIPLIER);
                var e = a.call(this) || this;
                return e._bigWinSeqItems = [], e._threshold = 1e3, e._sequenceStarted = !1, e._isSequenceDone = !1, e._isSequenceEnded = !1, e._isSequenceStarted = !1, e.skinId = "bigWinMeter", e.payoutName = "Game.Total", e._assetManager = c.AssetManager.getInstance(), e._bigWinMultiplier = d, e
            }
            return __extends(b, a), b.prototype.init = function(a) {
                void 0 === a && (a = null), this._skin = this._assetManager.getAsset(this.skinId), this.hideBigWin(), this.initSeqItems(), this.setLabel(), this.setTextField(), this.setDenomination(a), this.setRollup()
            }, b.prototype.initSeqItems = function() {
                var a = new h.MovieClipSequenceItem(this._skin, "startFadeIn", "endFadeIn", 1),
                    b = new h.MovieClipSequenceItem(this._skin, "startLoop", "endLoop", 0);
                this._bigWinSeqItems.push(a, b), this._bigWinAnimSequencer = new k.LinearSequencer(this._bigWinSeqItems)
            }, b.prototype.setLabel = function() {
                this._bigWinLabel = new d.LabeledViewController(this._skin.animLabel.labelContainer), this._bigWinLabel.init(), this._bigWinLabel.label = g.TextManager.getInstance().getText("bigWin")
            }, b.prototype.setTextField = function() {
                this._payoutTextField = new e.TextFieldController(this._skin.animTextField.textFieldContainer.textField), this._payoutTextField.init()
            }, b.prototype.setDenomination = function(a) {
                null != a && null != a.paytableResponse && null != a.paytableResponse.denominationList && a.paytableResponse.denominationList.length > 0 && (this._denomination = a.paytableResponse.denominationList[0].value)
            }, b.prototype.setRollup = function() {
                this._rollupSequencer = new i.RollupIncrementer, this._rollupSequencer.denomination = this._denomination, this._rollupSequencer.textField = this._payoutTextField
            }, b.prototype.skipRollup = function() {
                this.thresholdReached() && this._rollupSequencer.stopSequence()
            }, b.prototype.setPayout = function(a) {
                if (this.payoutExists(a) && null != a.gameLogicResponse.patternSliderInput) {
                    var b = a.gameLogicResponse.patternSliderInput.patternsBet,
                        c = a.gameLogicResponse.patternSliderInput.betPerPattern;
                    this._rollupSequencer.updateSteps(b * c), this._payout = a.gameLogicResponse.prizeOutcomes.getValue(this.payoutName).pay
                } else this._payout = 0
            }, b.prototype.thresholdReached = function() {
                return this._payout >= this._threshold && this._payout >= this._rollupSequencer.totalBet * this._bigWinMultiplier
            }, b.prototype.payoutExists = function(a) {
                return a.gameLogicResponse.prizeOutcomes.nElements
            }, b.prototype.startSequence = function(a) {
                if (void 0 === a && (a = !1), a || !this._isSequenceStarted) {
                    var b = [];
                    this.resetSequence(), this._sequenceStarted = !0, this._isSequenceStarted = !0, this.dispatchEvent(new f.events.Event(j.sequencers.SEQUENCE_START, null, this)), this._rollupSequencer.targetValue = this._payout, b.push(this._bigWinAnimSequencer, this._rollupSequencer), this._rollupSequencer.addEventListener(j.sequencers.SEQUENCE_END, this.onRollupEnd, this), this._bigWinSequencer = new l.ParallelSequencer(b, 0), this._bigWinSequencer.startSequence()
                }
            }, b.prototype.onRollupEnd = function(a) {
                this._rollupSequencer.removeEventListener(j.sequencers.SEQUENCE_END, this.onRollupEnd, this), this._bigWinSequencer.stopSequence(), this._bigWinFadeOutSeq = new h.MovieClipSequenceItem(this._skin, "startFadeOut", "endFadeOut", 1), this._bigWinFadeOutSeq.addEventListener(j.sequencers.SEQUENCE_END, this.onBigWinEnd, this);
                var c = [];
                c.push(this._bigWinFadeOutSeq), this._bigWinSequencer = new l.ParallelSequencer(c, 0), this.dispatchEvent(new f.events.Event(b.BIG_WIN_FADEOUT_START, null, this)), this._bigWinSequencer.startSequence()
            }, b.prototype.onBigWinEnd = function(a) {
                this._sequenceStarted = !1, this.dispatchEvent(new f.events.Event(b.BIG_WIN_END, null, this)), this._bigWinFadeOutSeq.removeEventListener(j.sequencers.SEQUENCE_END, this.onBigWinEnd, this), this._bigWinSequencer.stopSequence(), this.hideBigWin(), this.dispatchEndEvents()
            }, b.prototype.dispatchEndEvents = function() {
                this.isSequenceDone || (this._isSequenceDone = !0, this.dispatchEvent(new f.events.Event(j.sequencers.SEQUENCE_DONE, null, this))), this._isSequenceStarted = !1, this.isSequenceEnded || (this._isSequenceEnded = !0, this.dispatchEvent(new f.events.Event(j.sequencers.SEQUENCE_END, null, this)))
            }, b.prototype.hideBigWin = function() {
                this._skin.gotoAndStop("end")
            }, Object.defineProperty(b.prototype, "threshold", {
                get: function() {
                    return this._threshold
                },
                set: function(a) {
                    this._threshold = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "sequenceStarted", {
                get: function() {
                    return this._sequenceStarted
                },
                set: function(a) {
                    this._sequenceStarted = a
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.resetSequence = function() {
                this._isSequenceDone = !1, this._isSequenceEnded = !1, this._isSequenceStarted = !1, null != this._bigWinSequencer && (this._bigWinSequencer.resetSequence(), this.hideBigWin())
            }, b.prototype.stopSequence = function(a) {
                void 0 === a && (a = !1), null != this._bigWinSequencer && this._bigWinSequencer.stopSequence(a)
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "bigWinSequencer", {
                get: function() {
                    return this._bigWinSequencer
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(f.events.EventDispatcher);
        m.BIG_WIN_END = "BigWinControllerSeqEnd", m.BIG_WIN_FADEOUT_START = "BigWinControllerFadeOutStart", m.DEFAULT_BIG_WIN_MULTIPLIER = 10, b.BigWinController = m
    }), define("wcgf/sounds/soundTool/SoundTool", ["require", "exports", "wcgf/sounds/SoundManager", "wcgf/messageBus/GameMsgBus", "wcgf/core/events"], function(a, b, c, d, e) {
        "use strict";
        var f = function() {
            function a() {
                var a = this;
                this._keyPressed = new Array, this.open = function() {
                    a._keyPressed = [], null == a._displayWindow && (a._displayWindow = window.open("SoundTool.html", "SoundTool"), a._displayWindow.onfocus = function(a) {
                        c.SoundManager.getInstance().mute = !1
                    }, a._displayWindow.onbeforeunload = a.onBeforeUnload, a._displayWindow.onunload = a.onUnload, a._displayWindow.onload = a.onWindowLoaded)
                }, this.onWindowLoaded = function(b) {
                    var d = a,
                        e = a._displayWindow.document.getElementById("commandsContainer");
                    c.SoundManager.getInstance().commands.forEach(function(a, b) {
                        var f = d._displayWindow.document.createElement("BUTTON");
                        f.textContent = a, e.appendChild(f), f.onclick = function(a) {
                            c.SoundManager.getInstance().execute(a.target.textContent)
                        }
                    }), a._items = new Array;
                    var f = a._displayWindow.document.getElementById("SpritesTable"),
                        g = a._displayWindow.document.getElementById("item0");
                    g.parentElement.removeChild(g), c.SoundManager.getInstance().soundSprites.forEach(function(a, b) {
                        var c = g.cloneNode(!0);
                        c.id = a, c.cells.namedItem("spriteId").innerHTML = a, c.cells.namedItem("volume").innerHTML = b.volume.toFixed(3), c.cells.namedItem("position").innerHTML = b.position.toFixed(), c.cells.namedItem("loop").innerHTML = b.loop.toFixed(), f.appendChild(c), d._items.push(b)
                    }), null == a._updateTimer && (a._updateTimer = setInterval(function(a) {
                        d.updateDisplay()
                    }, 300))
                }, this.updateDisplay = function() {
                    if (null != a._displayWindow && null != a._items)
                        for (var b = 0, c = a._items; b < c.length; b++) {
                            var d = c[b],
                                e = a._displayWindow.document.getElementById(d.spriteId);
                            null != e && (e.cells.namedItem("position").innerHTML != d.position.toFixed() ? e.bgColor = "#00FF00" : e.bgColor = "#FFFFFF", e.cells.namedItem("volume").innerHTML = d.volume.toFixed(3), e.cells.namedItem("position").innerHTML = d.position.toFixed(), e.cells.namedItem("loop").innerHTML = d.loop.toFixed())
                        }
                }, this.onBeforeUnload = function(b) {
                    a._displayWindow = null, null != a._updateTimer && (clearInterval(a._updateTimer), a._updateTimer = null)
                }, this.onUnload = function(a) {};
                var b = this;
                d.GameMsgBus.getInstance().dispatchEvent(new e.events.Event(d.GameMsgBus.REGISTER, {
                    options: [{
                        type: "command",
                        name: "SoundTool",
                        text: "Sound Tool",
                        enabled: 1
                    }]
                })), d.GameMsgBus.getInstance().addEventListener("platformMsg/ConsoleService/Game.Control", function(a) {
                    "SoundTool" == a.data.option && b.open()
                }, this), window.onkeydown = function(a) {
                    b._keyPressed.indexOf(a.keyCode) < 0 && b._keyPressed.push(a.keyCode), b._keyPressed.indexOf(17) >= 0 && b._keyPressed.indexOf(16) >= 0 && b._keyPressed.indexOf(83) >= 0 && b.open()
                }, window.onkeyup = function(a) {
                    var c = b._keyPressed.indexOf(a.keyCode);
                    c >= 0 && b._keyPressed.splice(c, 1)
                }
            }
            return a
        }();
        b.SoundTool = f
    }), define("wcgf/gameComponents/OrientationLockScreen", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/coreComponents/TextFieldController", "wcgf/core/TextManager"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._gameCanvas = document.getElementById("gameCanvas"), c._lockCanvas = document.getElementById("lockCanvas"), null != c._lockCanvas && null != c._skin && (c._lockStage = new createjs.Stage(c._lockCanvas), c._lockStage.addChild(c.skin)), c
            }
            return __extends(b, a), b.prototype.init = function(a) {
                if (void 0 === a && (a = null), null != this._skin && null != this._lockStage) {
                    null != this._skin.textField && (this._textField = new d.TextFieldController(this._skin.textField), this._textField.setText(e.TextManager.getInstance().getText("orientationText")));
                    var b = this;
                    createjs.Ticker.addEventListener("tick", function(a) {
                        b._skin.visible && b._lockStage.update(a)
                    })
                }
            }, Object.defineProperty(b.prototype, "visible", {
                get: function() {
                    return null != this._skin && this._skin.visible
                },
                set: function(a) {
                    null != this._skin && (this._skin.visible = a, this._skin.visible ? null != this._skin.anim && this._skin.anim.play() : null != this._skin.anim && this._skin.anim.stop()), null != this._lockCanvas && (this._skin.visible ? (this._lockCanvas.style.display = "block", this._gameCanvas.style.display = "none") : (this._lockCanvas.style.display = "none", this._gameCanvas.style.display = "block"))
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.setSize = function(a, b, c, d) {
                null != this._lockCanvas && (this._lockCanvas.width = a * d, this._lockCanvas.height = b * d, this._lockCanvas.style.width = a * c + "px", this._lockCanvas.style.height = b * c + "px"), null != this._lockStage && (this._lockStage.scaleX = d, this._lockStage.scaleY = d)
            }, b
        }(c.GenericViewController);
        b.OrientationLockScreen = f
    }), define("wcgf/gameComponents/MobileSoundPromptController", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/GenericViewController", "wcgf/coreComponents/BasicButtonController", "wcgf/coreComponents/LabeledViewController", "wcgf/core/TextManager"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h = function(a) {
            function b(b) {
                return a.call(this, b) || this
            }
            return __extends(b, a), b.prototype.init = function(b) {
                if (void 0 === b && (b = null), a.prototype.init.call(this, b), null != this._skin) {
                    this.setLabel(this._skin, "soundPrompt");
                    var c = this._skin.yesButton;
                    null != c && (this._yesButton = new e.BasicButtonController(c), this._yesButton.init(), this._yesButton.addEventListener(e.BasicButtonController.MOUSE_CLICK, this.onYesButtonClick, this), this.setLabel(c.buttonText, "yes"));
                    var d = this._skin.noButton;
                    null != d && (this._noButton = new e.BasicButtonController(d), this._noButton.init(), this._noButton.addEventListener(e.BasicButtonController.MOUSE_CLICK, this.onNoButtonClick, this), this.setLabel(d.buttonText, "no"))
                }
            }, b.prototype.setLabel = function(a, b) {
                this._labelView = new f.LabeledViewController(a), this._labelView.init(), this._labelView.label = g.TextManager.getInstance().getText(b)
            }, b.prototype.onYesButtonClick = function(a) {
                this._yesButton.removeEventListener(e.BasicButtonController.MOUSE_CLICK, this.onYesButtonClick, this), this._noButton.removeEventListener(e.BasicButtonController.MOUSE_CLICK, this.onNoButtonClick, this), this.dispatchEvent(new c.events.Event(b.YES_CLICK, null, this))
            }, b.prototype.onNoButtonClick = function(a) {
                this._yesButton.removeEventListener(e.BasicButtonController.MOUSE_CLICK, this.onYesButtonClick, this), this._noButton.removeEventListener(e.BasicButtonController.MOUSE_CLICK, this.onNoButtonClick, this), this.dispatchEvent(new c.events.Event(b.NO_CLICK, null, this))
            }, b
        }(d.GenericViewController);
        h.YES_CLICK = "SoundPromptYesClick", h.NO_CLICK = "SoundPromptNoClick", b.MobileSoundPromptController = h
    }), define("wcgf/gameComponents/StageController", ["require", "exports", "wcgf/core/events"], function(a, b, c) {
        "use strict";
        var d = function(a) {
            function b() {
                var c = a.call(this) || this;
                if (b._stageControllerInstance) throw new Error("Error: Instantiation failed: Use StageController.getInstance() instead of new.");
                return b._stageControllerInstance = c, c
            }
            return __extends(b, a), b.getInstance = function() {
                return b._stageControllerInstance
            }, b.prototype.init = function() {}, b.prototype.dispatchStageEvent = function(a, b, d) {
                void 0 === b && (b = null), void 0 === d && (d = this), this.dispatchEvent(new c.events.Event(a, b, d))
            }, b
        }(c.events.EventDispatcher);
        d.NEXT_STAGE = "StageControllerNextState", d.ON_ENABLE_GAME = "StageControllerOnEnableGame", d._stageControllerInstance = new d, b.StageController = d
    }), define("wcgf/gameComponents/PaytableViewController", ["require", "exports", "wcgf/messageBus/GameMsgBus", "wcgf/core/events", "wcgf/core/TextManager", "wcgf/core/CurrencyFormatter", "wcgf/messageBus/ConsoleBusProxy", "wcgf/sounds/SoundManager", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d, e, f, g, h, i) {
        "use strict";
        var j = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b._visible = !1, b._msgBus = c.GameMsgBus.getInstance(), b
            }
            return __extends(b, a), b.prototype.init = function(a) {
                if (this._denomination = a.paytableResponse.denominationList[0].value, this._currencyCap = a.paytableResponse.awardCapInfo.currencyCap.awardCap, a.paytableResponse.paytableStatistics.singleRTP ? (this._minRTP = a.paytableResponse.paytableStatistics.minSingleRTP, this._maxRTP = a.paytableResponse.paytableStatistics.maxSingleRTP) : (this._minRTP = a.paytableResponse.paytableStatistics.minRTP, this._maxRTP = a.paytableResponse.paytableStatistics.maxRTP), null != a.paytableResponse.gameData) {
                    if (null != a.paytableResponse.gameData.baseCurrency)
                        for (var b = 0, d = a.paytableResponse.gameData.baseCurrency; b < d.length; b++) {
                            var e = d[b];
                            this._baseCurrency = e.value
                        }
                    if (null != a.paytableResponse.gameData.jackpotResetRTP) {
                        this._jpResetValues = new i.default;
                        for (var f = 0, h = a.paytableResponse.gameData.jackpotResetRTP; f < h.length; f++) {
                            var j = h[f];
                            this._jpResetValues.setValue(j.jackpotValue, j.rtpValue)
                        }
                    }
                    if (null != a.paytableResponse.gameData.jackpotRTPSamples) {
                        this._jpValues = new i.default;
                        for (var k = 0, l = a.paytableResponse.gameData.jackpotRTPSamples; k < l.length; k++) {
                            var m = l[k];
                            this._jpValues.setValue(m.jackpotValue, m.rtpValue)
                        }
                    }
                }
                this._msgBus.addEventListener(c.GameMsgBus.GAME_CONTROL, this.onGameControl, this), g.ConsoleBusProxy.getInstance().registerPaytableBtn();
                for (var n = document.getElementsByClassName("closeBtn"), o = this, p = 0; p < n.length; p++) n[p].addEventListener("click", function(a) {
                    o.showDiv("game"), o._visible = !1
                })
            }, b.prototype.onGameControl = function(a) {
                this._visible = this.getIsTabVisible("paytable"), "paytable" === a.data.option && (this._visible ? this.showDiv("game") : (this.showDiv("paytable"), this.loadPaytable()), this._visible = !this._visible)
            }, b.prototype.loadPaytable = function() {
                var a;
                a = "awardcap=" + encodeURIComponent(f.CurrencyFormatter.getInstance().format(this._currencyCap, 1)) + "&maxRTP=" + this._maxRTP.toFixed(2) + "&minRTP=" + this._minRTP.toFixed(2), a = this.handleJackpotValues(a), document.getElementById("paytable_iframe").src = "game/paytable/" + e.TextManager.getInstance().language + ".html?" + a
            }, b.prototype.handleJackpotValues = function(a) {
                if (null != this._jpResetValues) {
                    var b = 1,
                        c = this;
                    this._jpResetValues.forEach(function(d, e) {
                        a += "&jackpotResetValue" + b + "=" + encodeURIComponent(f.CurrencyFormatter.getInstance().format(d, c._denomination)) + "&rtpResetValue" + b + "=" + e, b++
                    })
                }
                if (null != this._jpValues) {
                    var d = 1,
                        e = this;
                    this._jpValues.forEach(function(b, c) {
                        a += "&jackpotValue" + d + "=" + encodeURIComponent(f.CurrencyFormatter.getInstance().format(b, e._denomination)) + "&rtpValue" + d + "=" + c, d++
                    })
                }
                return a
            }, b.prototype.showDiv = function(a) {
                for (var b = document.getElementsByClassName("tab"), c = 0; c < b.length; c++) b[c].style.display = "none";
                document.getElementById(a).style.display = "block", "game" == a ? h.SoundManager.getInstance().execute("onUiPaytableClose") : h.SoundManager.getInstance().execute("onUiPaytableOpen")
            }, b.prototype.getIsTabVisible = function(a) {
                return null != document.getElementById(a) && "block" == document.getElementById(a).style.display
            }, Object.defineProperty(b.prototype, "visible", {
                get: function() {
                    return this._visible = this.getIsTabVisible("paytable"), this._visible
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        b.PaytableViewController = j
    }), define("wcgf/gameComponents/HelpViewController", ["require", "exports", "wcgf/messageBus/GameMsgBus", "wcgf/core/events", "wcgf/core/TextManager", "wcgf/messageBus/ConsoleBusProxy", "wcgf/sounds/SoundManager"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b._visible = !1, b._msgBus = c.GameMsgBus.getInstance(), b
            }
            return __extends(b, a), b.prototype.init = function(a) {
                this._msgBus.addEventListener(c.GameMsgBus.GAME_CONTROL, this.onGameControl, this), f.ConsoleBusProxy.getInstance().registerHelpBtn();
                for (var b = document.getElementsByClassName("closeBtn"), d = this, e = 0; e < b.length; e++) b[e].addEventListener("click", function(a) {
                    d.showDiv("game"), d._visible = !1
                })
            }, b.prototype.onGameControl = function(a) {
                this._visible = this.getIsTabVisible("howToPlay"), "howToPlay" === a.data.option && (this._visible ? this.showDiv("game") : (this.showDiv("howToPlay"), this.loadHelp()), this._visible = !this._visible)
            }, b.prototype.loadHelp = function() {
                document.getElementById("help_iframe").src = "game/help/" + e.TextManager.getInstance().language + ".html"
            }, b.prototype.showDiv = function(a) {
                for (var b = document.getElementsByClassName("tab"), c = 0; c < b.length; c++) b[c].style.display = "none";
                document.getElementById(a).style.display = "block", "game" == a ? g.SoundManager.getInstance().execute("onUiHelpClose") : g.SoundManager.getInstance().execute("onUiHelpOpen")
            }, b.prototype.getIsTabVisible = function(a) {
                return null != document.getElementById(a) && "block" == document.getElementById(a).style.display
            }, Object.defineProperty(b.prototype, "visible", {
                get: function() {
                    return this._visible = this.getIsTabVisible("howToPlay"), this._visible
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        b.HelpViewController = h
    }), define("wcgf/gameComponents/GameController", ["require", "exports", "wcgf/messageBus/GameMsgBus", "wcgf/messageBus/ConsoleBusProxy", "wcgf/core/events", "wcgf/core/loaders", "wcgf/core/AssetManager", "wcgf/core/TextManager", "wcgf/core/CurrencyFormatter", "wcgf/sounds/SoundManager", "wcgf/sounds/soundTool/SoundTool", "wcgf/gameComponents/OrientationLockScreen", "wcgf/gameComponents/BetManager", "wcgf/gameComponents/MobileSoundPromptController", "wcgf/gameComponents/StageController", "wcgf/gameComponents/PaytableViewController", "wcgf/gameComponents/HelpViewController"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) {
        "use strict";
        var r = function() {
            function a() {
                this.clientConfigData = {
                        assetPack: null,
                        language: null,
                        gameWindowWidth: 0,
                        gameWindowHeight: 0,
                        revisionTag: null,
                        filtered: !1,
                        currencyCode: null
                    }, this.serverConfigData = {
                        autoSpin: null
                    }, this.extendCanvas = !0, this._assetMapLoaded = !1, this._langLoaded = !1, this._fontLoaded = !1, this._soundLoaded = !1,
                    this._muteSound = !1, this._resizeTimer = null, this._pause = !1;
                var a = this;
                h.TextManager.getInstance().overrideCreateJs(), a.onDependencyLoaded(), this._paytableViewController = new p.PaytableViewController, this._helpViewController = new q.HelpViewController
            }
            return a.prototype.onDependencyLoaded = function() {
                window.document.referrer.match(/&?forceDevice=([^&]+)&?/) ? this.clientConfigData.assetPack = window.document.referrer.match(/&?forceDevice=([^&]+)&?/)[1] : this.clientConfigData.assetPack = window.location.search.match(/&?assetPack=([^&]+)&?/)[1], this.clientConfigData.language = window.location.search.match(/&?language=([^&]+)&?/)[1], this.clientConfigData.revisionTag = window.location.search.match(/&?revisionTag=([^&]+)&?/)[1], g.AssetManager.getInstance().clientConfigData = this.clientConfigData, this.stage = new createjs.Stage(document.getElementById("gameCanvas")), "desktop" == this.clientConfigData.assetPack.toLowerCase() && this.stage.enableMouseOver(30);
                var a = this.createJsonLoader();
                a.addEventListener(f.loaders.JsonLoader.COMPLETE, this.onAssetMap, this), a.load("./game/assets/" + this.clientConfigData.assetPack + "/assetMap.json"), h.TextManager.getInstance().language = this.clientConfigData.language;
                var b = this.createJsonLoader();
                b.addEventListener(f.loaders.JsonLoader.COMPLETE, this.onLangLoaded, this), b.load("./game/i18n/" + this.clientConfigData.language + ".json");
                var c = this.createJsonLoader();
                c.addEventListener(f.loaders.JsonLoader.COMPLETE, this.onSoundLoaded, this), c.load("./game/sounds/sounds.json")
            }, a.prototype.createJsonLoader = function() {
                return new f.loaders.JsonLoader(this.clientConfigData.revisionTag)
            }, a.prototype.onAssetMap = function(a) {
                a.target.removeEventListener(f.loaders.JsonLoader.COMPLETE, this.onAssetMap, this), this.assetMap = a.data, g.AssetManager.getInstance().setAssetIds(this.assetMap.assetIds), g.AssetManager.getInstance().setDeferredLoading(this.assetMap.deferredLoading), this.clientConfigData.gameWindowWidth = this.assetMap.config.gameWindowWidth, this.clientConfigData.gameWindowHeight = this.assetMap.config.gameWindowHeight, this._fontLoaded = this.handleFonts(), this._assetMapLoaded = !0, this.checkLoadComplete()
            }, a.prototype.handleFonts = function() {
                return !(0 != this.assetMap.fonts && this.assetMap.fonts.length > 0) || (h.TextManager.getInstance().addEventListener(h.TextManager.WEB_FONT_LOADED, this.onFontLoaded, this), h.TextManager.getInstance().loadFonts(this.assetMap.fonts), !1)
            }, a.prototype.onLangLoaded = function(a) {
                a.target.removeEventListener(f.loaders.JsonLoader.COMPLETE, this.onLangLoaded, this), h.TextManager.getInstance().setData(a.data), this._langLoaded = !0, this.checkLoadComplete()
            }, a.prototype.onFontLoaded = function(a) {
                h.TextManager.getInstance().removeEventListener(h.TextManager.WEB_FONT_LOADED, this.onFontLoaded, this), this.setFontLoaded()
            }, a.prototype.setFontLoaded = function() {
                this._fontLoaded = !0, this.checkLoadComplete()
            }, a.prototype.onSoundLoaded = function(a) {
                a.target.removeEventListener(f.loaders.JsonLoader.COMPLETE, this.onSoundLoaded, this), j.SoundManager.getInstance().setSounds(a.data), this._soundLoaded = !0, this.checkLoadComplete()
            }, a.prototype.checkLoadComplete = function() {
                this._assetMapLoaded && this._langLoaded && this._soundLoaded && this._fontLoaded && this.initializeBus()
            }, a.prototype.initializeBus = function() {
                this.msgBus = c.GameMsgBus.getInstance(), this.msgBus.addEventListener(c.GameMsgBus.SYSTEM_INIT, this.onSystemInit, this), this.msgBus.addEventListener(c.GameMsgBus.LOAD_PROGRESS, this.onLoadProgress, this), this.msgBus.addEventListener(c.GameMsgBus.CLIENT_SERVICE_GAME_INIT, this.onGameInit, this), this.msgBus.addEventListener(c.GameMsgBus.ACCOUNT_BALANCES, this.onAccountBalance, this), this.msgBus.addEventListener(c.GameMsgBus.BEFORE_SHOW_STAGE, this.onBeforeShowStage, this), this.msgBus.addEventListener(c.GameMsgBus.START_GAME_INITIAL, this.onStartGameInitial, this), this.msgBus.addEventListener(c.GameMsgBus.BEFORE_REQUEST, this.onBeforeRequest, this), this.msgBus.addEventListener(c.GameMsgBus.MAKE_REQUEST, this.onMakeRequest, this), this.msgBus.addEventListener(c.GameMsgBus.RESOLVE_STAGE, this.onResolveStage, this), this.msgBus.addEventListener(c.GameMsgBus.END_GAME, this.onEndGame, this), this.msgBus.addEventListener(c.GameMsgBus.BEGIN_NEW_GAME, this.onBeginNewGame, this), this.msgBus.addEventListener(c.GameMsgBus.EXIT_STAGE, this.onExitStage, this), this.msgBus.addEventListener(c.GameMsgBus.START_GAME_IN_PROGRESS_STAGE, this.onStartGameInProgressStage, this), this.msgBus.addEventListener(c.GameMsgBus.START_GAME_IN_PROGRESS_NEXT_STAGE, this.onStartGameInProgressNextStage, this), this.msgBus.addEventListener(c.GameMsgBus.IN_PROGRESS_STAGE, this.onInProgressStage, this), this.msgBus.addEventListener(c.GameMsgBus.ABORT_NEXT_STAGE, this.onAbortNextStage, this), this.msgBus.addEventListener(c.GameMsgBus.RESET_NEXT_STAGE, this.onResetNextStage, this), this.msgBus.addEventListener(c.GameMsgBus.ENTER_NEXT_STAGE, this.onEnterNextStage, this), this.msgBus.addEventListener(c.GameMsgBus.GAME_CONTROL, this.onGameControl, this), this.msgBus.getIsInit() ? this.onMsgBusInitialize(null) : (this.msgBus.addEventListener(c.GameMsgBus.INITIALIZE, this.onMsgBusInitialize, this), this.msgBus.init())
            }, a.prototype.onMsgBusInitialize = function(a) {
                this.assetLoader = this.createAssetLoader();
                var b = this.assetMap.assetManifest.concat(j.SoundManager.getInstance().soundManifest);
                this.assetLoader.addEventListener(f.loaders.CJSAssetLoader.PROGRESS, this.onAssetLoaderProgress, this), this.assetLoader.addEventListener(f.loaders.CJSAssetLoader.COMPLETE, this.onAssetLoaderComplete, this), this.assetLoader.load(b)
            }, a.prototype.createAssetLoader = function() {
                return new f.loaders.CJSAssetLoader(this.clientConfigData.revisionTag)
            }, a.prototype.onAssetLoaderProgress = function(a) {
                this.msgBus.dispatchEvent(new e.events.Event(c.GameMsgBus.LOAD_PROGRESS, {
                    items: 100,
                    current: a.data.progress,
                    complete: !1
                }))
            }, a.prototype.onAssetLoaderComplete = function(a) {
                this.msgBus.dispatchEvent(new e.events.Event(c.GameMsgBus.LOAD_PROGRESS, {
                    items: 100,
                    current: a.data.progress,
                    complete: !0
                })), this.assetLoader.removeEventListener(f.loaders.CJSAssetLoader.PROGRESS, this.onAssetLoaderProgress, this), this.assetLoader.removeEventListener(f.loaders.CJSAssetLoader.COMPLETE, this.onAssetLoaderComplete, this)
            }, a.prototype.onLoadProgress = function(a) {}, a.prototype.onSystemInit = function(a) {
                this.clientConfigData.filtered = "0" != a.data.serverConfig.filtered, window.document.referrer.match(/&?soundTool=true/) && new k.SoundTool, null != a.data.serverConfig.paramRGS.currencycode && (this.clientConfigData.currencyCode = a.data.serverConfig.paramRGS.currencycode), a.data.serverConfig.autospin && (this.serverConfigData.autoSpin = a.data.serverConfig.autospin)
            }, a.prototype.onGameInit = function(a) {
                i.CurrencyFormatter.getInstance().setCurrencyResponse(a, this.clientConfigData.currencyCode), m.BetManager.getInstance().init(a.data), this._orientationLockScreen = new l.OrientationLockScreen(g.AssetManager.getInstance().getSkin("OrientationLockScreen")), this._orientationLockScreen.init();
                var b = this;
                createjs.Ticker.framerate = 30, createjs.Ticker.addEventListener("tick", function(a) {
                    b._pause || b.stage.update(a)
                }), this._paytableViewController.init(a.data), this._helpViewController.init(a.data)
            }, a.prototype.getPause = function() {
                return this._pause
            }, a.prototype.setPause = function(a) {
                this._pause = a, j.SoundManager.getInstance().orientationMute = this._pause, null != this._orientationLockScreen && (this._orientationLockScreen.visible = this._pause)
            }, a.prototype.onGameControl = function(a) {}, a.prototype.onAccountBalance = function(a) {}, a.prototype.onBeforeShowStage = function(a) {
                g.AssetManager.getInstance().updateOrientation(), this.onResize(null), this.msgBus.addEventListener(c.GameMsgBus.RESIZE, this.onResize, this), this.handleSoundPrompt(a)
            }, a.prototype.handleSoundPrompt = function(a) {
                if ("desktopmini" != this.clientConfigData.assetPack && "tabletmini" != this.clientConfigData.assetPack || (this._muteSound = !0), "desktop" != this.clientConfigData.assetPack) {
                    var b = g.AssetManager.getInstance().getSkin("MobileSoundPrompt");
                    null != b ? (this._mobileSoundPrompt = new n.MobileSoundPromptController(b), this._mobileSoundPrompt.init(a.data), this._mobileSoundPrompt.addEventListener(n.MobileSoundPromptController.YES_CLICK, this.onPromptClick, this), this._mobileSoundPrompt.addEventListener(n.MobileSoundPromptController.NO_CLICK, this.onPromptClick, this), this.stage.addChild(this._mobileSoundPrompt.skin), this.stage.update()) : this.onEnableGame()
                } else this.onEnableGame()
            }, a.prototype.onEnableGame = function() {
                d.ConsoleBusProxy.getInstance().registerSoundButton(), d.ConsoleBusProxy.getInstance().enableSoundButton(!0), d.ConsoleBusProxy.getInstance().muteSound(this._muteSound), o.StageController.getInstance().dispatchStageEvent(o.StageController.ON_ENABLE_GAME)
            }, a.prototype.onPromptClick = function(a) {
                this._mobileSoundPrompt.removeEventListener(n.MobileSoundPromptController.YES_CLICK, this.onPromptClick, this), this._mobileSoundPrompt.removeEventListener(n.MobileSoundPromptController.NO_CLICK, this.onPromptClick, this), this.stage.removeChild(this._mobileSoundPrompt.skin), this.stage.update(), a.type == n.MobileSoundPromptController.YES_CLICK ? this._muteSound = !1 : this._muteSound = !0, this.onEnableGame()
            }, a.prototype.onStartGameInitial = function(a) {}, a.prototype.onResize = function(a) {
                var b = this;
                null == this._resizeTimer && null != this.stage && (this._resizeTimer = setTimeout(function() {
                    var a = window.innerWidth,
                        c = window.innerHeight,
                        d = b.clientConfigData.gameWindowWidth,
                        e = b.clientConfigData.gameWindowHeight;
                    ("mobile" == b.clientConfigData.assetPack || "tablet" == b.clientConfigData.assetPack) && a / c < 1 ? (d = b.clientConfigData.gameWindowHeight, e = b.clientConfigData.gameWindowWidth, g.AssetManager.getInstance().setOrientation("portrait")) : g.AssetManager.getInstance().setOrientation("landscape");
                    var f = window.devicePixelRatio || 1,
                        h = a / d,
                        i = c / e,
                        j = Math.min(h, i),
                        k = f * j,
                        l = document.getElementById("gameCanvas");
                    l.width = d * k, l.height = e * k, b.extendCanvas && "desktop" != b.clientConfigData.assetPack ? (l.style.width = a + "px", l.style.height = c + "px", b.stage.scaleX = k * (d * j) / a, b.stage.scaleY = k * (e * j) / c, b.stage.x = (l.width - d * b.stage.scaleX) / 2, b.stage.y = (l.height - e * b.stage.scaleY) / 2) : (l.style.width = d * j + "px", l.style.height = e * j + "px", b.stage.scaleX = k, b.stage.scaleY = k), null != b._orientationLockScreen && b._orientationLockScreen.setSize(d, e, j, k), b._resizeTimer = null
                }, 50))
            }, a.prototype.onBeforeRequest = function(a) {}, a.prototype.onMakeRequest = function(a) {}, a.prototype.onResolveStage = function(a) {}, a.prototype.onEndGame = function(a) {}, a.prototype.onBeginNewGame = function(a) {}, a.prototype.onExitStage = function(a) {}, a.prototype.onStartGameInProgressStage = function(a) {}, a.prototype.onStartGameInProgressNextStage = function(a) {}, a.prototype.onInProgressStage = function(a) {}, a.prototype.onAbortNextStage = function(a) {}, a.prototype.onResetNextStage = function(a) {}, a.prototype.onEnterNextStage = function(a) {}, a
        }();
        b.GameController = r
    }), define("wcgf/gameComponents/GenericViewTemplate", ["require", "exports", "wcgf/messageBus/GameMsgBus", "wcgf/core/AssetManager", "wcgf/core/events", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b.stageName = "", b._skinList = [], b._prizeNames = [], b._isInit = !1, b._enable = !1, b._msgBus = c.GameMsgBus.getInstance(), b._assetManager = d.AssetManager.getInstance(), b._fpsTextController = new f.TextFieldController(b.skin.txtFps), b
            }
            return __extends(b, a), b.prototype.init = function(a) {
                if (!this._isInit) {
                    this._isInit = !0, this._currentStageName = a.gameLogicResponse.outcomeDetail.stage, this._fpsTextController.init();
                    var b = this;
                    setInterval(function() {
                        b._fpsTextController.setText("FPS:" + createjs.Ticker.getMeasuredFPS().toFixed(0))
                    }, 500)
                }
            }, b.prototype.onBeforeShowStage = function(a) {
                this.nextStage()
            }, b.prototype.onBeforeRequest = function(a) {
                this.nextStage()
            }, b.prototype.onMakeRequest = function(a) {
                this.nextStage()
            }, b.prototype.onAccountBalance = function(a) {}, b.prototype.onResolveStage = function(a) {
                this.nextStage()
            }, b.prototype.onEndGame = function(a) {
                this.nextStage()
            }, b.prototype.onBeginNewGame = function(a) {
                this.nextStage()
            }, b.prototype.onEnterNextStage = function(a) {
                this.nextStage()
            }, b.prototype.onExitStage = function(a) {
                this.nextStage()
            }, b.prototype.addBusListeners = function() {
                this._msgBus.addEventListener(c.GameMsgBus.BEFORE_REQUEST, this.onBeforeRequest, this), this._msgBus.addEventListener(c.GameMsgBus.MAKE_REQUEST, this.onMakeRequest, this), this._msgBus.addEventListener(c.GameMsgBus.RESOLVE_STAGE, this.onResolveStage, this), this._msgBus.addEventListener(c.GameMsgBus.END_GAME, this.onEndGame, this), this._msgBus.addEventListener(c.GameMsgBus.BEGIN_NEW_GAME, this.onBeginNewGame, this), this._msgBus.addEventListener(c.GameMsgBus.ACCOUNT_BALANCES, this.onAccountBalance, this), this._msgBus.addEventListener(c.GameMsgBus.BEFORE_SHOW_STAGE, this.onBeforeShowStage, this), this._msgBus.addEventListener(c.GameMsgBus.ENTER_NEXT_STAGE, this.onEnterNextStage, this), this._msgBus.addEventListener(c.GameMsgBus.EXIT_STAGE, this.onExitStage, this)
            }, b.prototype.removeBusListeners = function() {
                this._msgBus.removeEventListener(c.GameMsgBus.BEFORE_REQUEST, this.onBeforeRequest, this), this._msgBus.removeEventListener(c.GameMsgBus.MAKE_REQUEST, this.onMakeRequest, this), this._msgBus.removeEventListener(c.GameMsgBus.RESOLVE_STAGE, this.onResolveStage, this), this._msgBus.removeEventListener(c.GameMsgBus.END_GAME, this.onEndGame, this), this._msgBus.removeEventListener(c.GameMsgBus.BEGIN_NEW_GAME, this.onBeginNewGame, this), this._msgBus.removeEventListener(c.GameMsgBus.ACCOUNT_BALANCES, this.onAccountBalance, this), this._msgBus.removeEventListener(c.GameMsgBus.BEFORE_SHOW_STAGE, this.onBeforeShowStage, this), this._msgBus.removeEventListener(c.GameMsgBus.ENTER_NEXT_STAGE, this.onEnterNextStage, this), this._msgBus.removeEventListener(c.GameMsgBus.EXIT_STAGE, this.onExitStage, this)
            }, b.prototype.nextStage = function() {
                this._msgBus.dispatchEvent(new e.events.Event(c.GameMsgBus.NEXT_STAGE))
            }, b.prototype.enableControls = function(a) {
                void 0 === a && (a = !0)
            }, b.prototype.addToStage = function(a) {
                a.addChild(this.skin);
                for (var b = 0, c = this._skinList; b < c.length; b++) {
                    var d = c[b];
                    a.addChild(this._assetManager.getSkin(d))
                }
                this.enable = !0
            }, b.prototype.removeFromStage = function(a) {
                a.removeChild(this.skin);
                for (var b = 0, c = this._skinList; b < c.length; b++) {
                    var d = c[b];
                    a.removeChild(this._assetManager.getSkin(d))
                }
                this.enable = !1
            }, b.prototype.removeChild = function(a) {
                this.skin.removeChild(this._assetManager.getSkin(a))
            }, Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable != a && (this._enable = a, a ? (this.addBusListeners(), this.enableControls(!0)) : (this.removeBusListeners(), this.enableControls(!1)))
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(e.events.EventDispatcher);
        b.GenericViewController = g
    }), define("wcgf/gameComponents/LoadingBar", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a(a, b, c) {
                void 0 === c && (c = "game/assets/splashScreen/"), this._totalFrame = 100, this._per = 0, this._path = null, this._stopTimer = null, this._stage = new createjs.Stage(b), this._path = c;
                var d = this,
                    e = new createjs.LoadQueue(!1);
                e.addEventListener("complete", function(a) {
                    d.onLoadingBarLoaded(a)
                }), e.addEventListener("error", function(a) {
                    d.onError(a)
                }), e.loadManifest([{
                    id: "skin",
                    src: a
                }])
            }
            return a.prototype.onLoadingBarLoaded = function(a) {
                if (null != window.LoadingBar.properties.manifest && window.LoadingBar.properties.manifest.length > 0) {
                    for (var b = new Array, c = 0, d = window.LoadingBar.properties.manifest; c < d.length; c++) {
                        var e = d[c];
                        b.push({
                            id: e.id,
                            src: this._path + e.src
                        })
                    }
                    var f = this,
                        g = new createjs.LoadQueue(!1);
                    g.addEventListener("complete", function(a) {
                        f.onManifestLoaded(a)
                    }), g.addEventListener("fileload", function(a) {
                        f.onFileload(a)
                    }), g.addEventListener("error", function(a) {
                        f.onError(a)
                    }), g.loadManifest(b)
                } else this.onManifestLoaded(null)
            }, a.prototype.onFileload = function(a) {
                "image" == a.item.type && (window.images[a.item.id] = a.result)
            }, a.prototype.onManifestLoaded = function(a) {
                if (null != a)
                    for (var b = a.target, c = 0; c < window.LoadingBar.ssMetadata.length;) window.ss[window.LoadingBar.ssMetadata[c].name] = new createjs.SpriteSheet({
                        images: [b.getResult(window.LoadingBar.ssMetadata[c].name)],
                        frames: window.LoadingBar.ssMetadata[c].frames
                    }), c++;
                this._loadBar = createjs.MovieClip = new window.LoadingBar.LoadingBar, this._txt = this._loadBar.txtPer, this._stage.addChild(this._loadBar), this._stage.update(), this.update();
                createjs.Ticker.framerate = 30, createjs.Ticker.addEventListener("tick", this._stage)
            }, a.prototype.update = function() {
                if (null != this._loadBar) {
                    var a = Math.round(this._per * (this._totalFrame / 100));
                    this._loadBar.gotoAndStop(a)
                }
                if (null != this._txt && (this._txt.text = this._per.toFixed(0) + " %"), this._per >= 100 && null == this._stopTimer) {
                    var b = this;
                    setTimeout(function(a) {
                        createjs.Ticker.removeEventListener("tick", b._stage), b._stage = null, clearTimeout(b._stopTimer)
                    }, 1e3)
                }
            }, a.prototype.onError = function(a) {
                throw new Error("[LoadingBar] Error loadind bar")
            }, a.prototype.setPercentage = function(a) {
                this._per = a, this.update()
            }, a
        }();
        b.LoadingBar = c
    }), define("wcgf/gameComponents/MobileBetControls", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/GenericViewController", "wcgf/coreComponents/BasicButtonController", "wcgf/core/AssetManager"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._isOpen = !1, c._closeParams = {
                    portrait: {
                        alpha: 0,
                        x: 0,
                        y: 290
                    },
                    landscape: {
                        alpha: 0,
                        x: -698,
                        y: 0
                    },
                    duration: 200
                }, c._openParams = {
                    portrait: {
                        alpha: 1,
                        x: 0,
                        y: 0
                    },
                    landscape: {
                        alpha: 1,
                        x: 0,
                        y: 0
                    },
                    duration: 200
                }, c._orientation = "landscape", c._enable = !0, c._openStarted = !1, f.AssetManager.getInstance().addEventListener(f.AssetManager.ORIENTATION_CHANGE, c.onOrientationChange, c), c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), this._orientation = f.AssetManager.getInstance().getOrientation(), this._container = f.AssetManager.getInstance().getAsset("mobileBetControllerContainer"), null != this._container && null != this._skin && (this._container.addChild(this._skin), this._container.stage.update(), createjs.Tween.get(this._skin, null).to(this._closeParams[this._orientation], 0), this._skin.visible = !1);
                var c = f.AssetManager.getInstance().getAsset("mobileBetControlsButton");
                if (null != c && (this._openButton = new e.BasicButtonController(c), this._openButton.init(), this._openButton.addEventListener(e.BasicButtonController.MOUSE_CLICK, this.onOpenBtnClick, this)), null != this._skin) {
                    var d = this._skin.closeBtn;
                    null != d && (this._closeBtn = new e.BasicButtonController(d), this._closeBtn.init(), this._closeBtn.addEventListener(e.BasicButtonController.MOUSE_CLICK, this.onCloseBtnClick, this))
                }
            }, b.prototype.onOpenBtnClick = function(a) {
                this._isOpen ? this.close() : (this.open(), this.enable = !1)
            }, b.prototype.onCloseBtnClick = function(a) {
                this._isOpen && (this.close(), this.enable = !0)
            }, b.prototype.open = function() {
                if (!this._isOpen && null != this._skin) {
                    createjs.Tween.removeTweens(this._skin), this._openStarted = !0, this._isOpen = !0, this._skin.visible = !0;
                    var a = this;
                    createjs.Tween.get(this._skin, null).to(this._openParams[this._orientation], this._openParams.duration, createjs.Ease.linear).call(function() {
                        a._openStarted = !1
                    }), this.dispatchEvent(new c.events.Event(b.MOBILE_BET_CONTROLS_OPEN, null, this))
                }
            }, b.prototype.close = function() {
                if (this._isOpen && null != this._skin) {
                    f.AssetManager.getInstance().getOrientation(), createjs.Tween.removeTweens(this._skin), this._isOpen = !1;
                    var a = this;
                    createjs.Tween.get(this._skin, null).to(this._closeParams[this._orientation], this._closeParams.duration, createjs.Ease.linear).call(function() {
                        a._skin.visible = !1
                    }), this.dispatchEvent(new c.events.Event(b.MOBILE_BET_CONTROLS_CLOSE, null, this))
                }
            }, b.prototype.onOrientationChange = function(a) {
                this._orientation = f.AssetManager.getInstance().getOrientation(), null != this._skin && (createjs.Tween.removeTweens(this._skin), this._isOpen ? createjs.Tween.get(this._skin, null).to(this._openParams[this._orientation], 0) : createjs.Tween.get(this._skin, null).to(this._closeParams[this._orientation], 0), this._skin.visible = this._isOpen)
            }, Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable = a, null != this._openButton && (this._openButton.enable = this._enable), this._openStarted || this._enable || this.close()
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "openButton", {
                get: function() {
                    return this._openButton
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "closeParams", {
                get: function() {
                    return this._closeParams
                },
                set: function(a) {
                    this._closeParams = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "openParams", {
                get: function() {
                    return this._openParams
                },
                set: function(a) {
                    this._openParams = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isOpen", {
                get: function() {
                    return this._isOpen
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.GenericViewController);
        g.MOBILE_BET_CONTROLS_OPEN = "MobileBetControlsOpen", g.MOBILE_BET_CONTROLS_CLOSE = "MobileBetControlsClose", b.MobileBetControls = g
    }), define("wcgf/gameComponents/Odometer", ["require", "exports", "wcgf/textFormatters/CurrencyTextFormatter", "wcgf/coreComponents/TextFieldController"], function(a, b, c, d) {
        "use strict";
        var e = function() {
            function a(a, b) {
                void 0 === b && (b = !0);
                var d = this;
                this._padding = " ", this._easingFunction = createjs.Ease.linear, this._textFormatter = new c.CurrencyTextFormatter, this._animated = !0, this._lastUpdate = 0, this.onTick = function(a) {
                    var b = new RegExp("^[" + d._padding + "]+|[" + d._padding + "]+$", "g");
                    if (d._textFormatter.format(d._currentNumberValue.toString()) != d._strValue.replace(b, "")) {
                        var c = Date.now() - d._lastUpdate;
                        d.rollStrTo(d._textFormatter.format(d._currentNumberValue.toString()), c), d._lastUpdate = Date.now()
                    }
                }, this._skin = a, this._animated = b
            }
            return a.prototype.init = function(a) {
                if (void 0 === a && (a = 0), this._currentNumberValue = a, this._animated) {
                    this._topDigits = new Array, this._bottomDigits = new Array;
                    var b = new createjs.Container;
                    b.mask = this._skin.mask, this._skin.parent.addChild(b);
                    for (var c = this._skin.getTransformedBounds().x, e = this._skin.getBounds().height, f = 0; f < this._skin.text.length; f++) {
                        var g = this._skin.clone();
                        g.params = this._skin.params, g.mask = null, g.text = "X", g.y = this._skin.y, g.x = c, b.addChild(g), this._topDigits.push(new d.TextFieldController(g));
                        var h = this._skin.clone();
                        h.params = this._skin.params, h.text = "X", h.mask = null, h.y = this._skin.y + e, h.x = c, b.addChild(h), this._bottomDigits.push(new d.TextFieldController(h)), c += g.getBounds().width
                    }
                    this._skin.visible = !1, this.setStrValue(this._textFormatter.format(this._currentNumberValue.toString()))
                } else this._simpleTxt = new d.TextFieldController(this._skin), this._simpleTxt.textFormatter = this._textFormatter, this.setStrValue(this._textFormatter.format(this._currentNumberValue.toString()))
            }, a.prototype.rollUpTo = function(a, b) {
                createjs.Ticker.removeEventListener("tick", this.onTick), createjs.Tween.removeTweens(this), this._lastUpdate = Date.now() - (Date.now() - this._lastUpdate);
                var c = this;
                createjs.Ticker.addEventListener("tick", this.onTick), createjs.Tween.get(this, null).to({
                    _currentNumberValue: a
                }, b, this._easingFunction).call(function() {
                    createjs.Ticker.removeEventListener("tick", c.onTick)
                })
            }, a.prototype.reset = function(a) {
                createjs.Ticker.removeEventListener("tick", this.onTick), createjs.Tween.removeTweens(this), this._currentNumberValue = a, this.setStrValue(this._textFormatter.format(this._currentNumberValue.toString()))
            }, a.prototype.setStrValue = function(a) {
                if (this._animated) {
                    this._strValue = new Array(this._topDigits.length - a.length + 1).join(this._padding) + a;
                    for (var b = 0; b < this._topDigits.length; b++) createjs.Tween.removeTweens(this._topDigits[b].skin), this._topDigits[b].skin.y = this._skin.y, this._topDigits[b].setText(this._strValue.substr(b, 1)), createjs.Tween.removeTweens(this._bottomDigits[b].skin), this._bottomDigits[b].skin.y = this._skin.y + this._skin.getBounds().height, this._bottomDigits[b].setText(this._padding)
                } else this._strValue = a, this._simpleTxt.setText(this._strValue)
            }, a.prototype.rollStrTo = function(a, b) {
                if (void 0 === b && (b = 100), this._animated) {
                    this.setStrValue(this._strValue), this._strValue = new Array(this._topDigits.length - a.length + 1).join(this._padding) + a;
                    for (var c = this, d = 0; d < this._topDigits.length; d++) ! function(a) {
                        if (c._bottomDigits[a].setText(c._strValue.substr(a, 1)), c._bottomDigits[a].getText() != c._topDigits[a].getText()) {
                            var d = c._topDigits[a].skin.y - c._bottomDigits[a].skin.y,
                                e = c;
                            createjs.Tween.get(c._bottomDigits[a].skin, null).to({
                                y: c._bottomDigits[a].skin.y + d
                            }, b, createjs.Ease.linear).call(function() {
                                e._bottomDigits[a].setText(e._padding), e._bottomDigits[a].skin.y = e._bottomDigits[a].skin.y - d
                            }), createjs.Tween.get(c._topDigits[a].skin, null).to({
                                y: c._topDigits[a].skin.y + d
                            }, b, createjs.Ease.linear).call(function() {
                                e._topDigits[a].setText(e._bottomDigits[a].getText()), e._topDigits[a].skin.y = e._topDigits[a].skin.y - d
                            })
                        }
                    }(d)
                } else this.setStrValue(a)
            }, Object.defineProperty(a.prototype, "padding", {
                get: function() {
                    return this._padding
                },
                set: function(a) {
                    this._padding = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "easingFunction", {
                get: function() {
                    return this._easingFunction
                },
                set: function(a) {
                    this._easingFunction = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "textFormatter", {
                get: function() {
                    return this._textFormatter
                },
                set: function(a) {
                    this._textFormatter = a
                },
                enumerable: !0,
                configurable: !0
            }), a
        }();
        b.Odometer = e
    }), define("wcgf/gameComponents/PaylinesController", ["require", "exports", "wcgf/core/AssetManager", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d) {
        "use strict";
        var e = function() {
            function a() {
                this._currentPaylines = new d.default, this._assetManager = c.AssetManager.getInstance()
            }
            return a.prototype.init = function(a) {
                void 0 === a && (a = null), this._lineMask = this._assetManager.getAsset("LineMask"), null != this._lineMask && (this._maskBounds = this._lineMask.getBounds(), null != this._lineMask.parent && this._lineMask.parent.removeChild(this._lineMask), this._lineMask.visible = !1), this._paylinesContainer = this._assetManager.getAsset("PaylinesContainer")
            }, a.prototype.showLine = function(a, b, c, d) {
                if (void 0 === b && (b = null), void 0 === c && (c = null), void 0 === d && (d = !1), !d && this.paylinesContains(a, b, c)) this._paylinesContainer.addChild(this._currentPaylines.getValue(a).mc);
                else {
                    var e = this._assetManager.getNewAsset("Paylines." + a),
                        f = e.getBounds();
                    if (null != e && null != f) {
                        e.filters = null != b ? [new createjs.ColorFilter(1, 1, 1, 1, b.r, b.g, b.b, b.a)] : [], this._lineMask.uncache(), null != c && this.maskCells(c);
                        var g = this._lineMask.getBounds(),
                            h = e.localToLocal(0, 0, this._lineMask);
                        this._lineMask.cache(h.x, h.y, g.width + g.x, g.height + g.y), e.filters.push(new createjs.AlphaMaskFilter(this._lineMask.cacheCanvas)), e.cache(f.x, f.y, f.width, f.height), this._currentPaylines.setValue(a, {
                            mc: e,
                            maskCells: c,
                            tint: b
                        }), this._paylinesContainer.addChild(e), e = null, f = null
                    }
                }
            }, a.prototype.paylinesContains = function(a, b, c) {
                void 0 === b && (b = null), void 0 === c && (c = null);
                if (!this._currentPaylines.containsKey(a)) return !1;
                var d = this._currentPaylines.getValue(a);
                if (null != b && null != d.tint) {
                    if (b.r != d.tint.r || b.g != d.tint.g || b.b != d.tint.b || b.a != d.tint.a) return !1
                } else if (null == b && null != d.tint || null != b && null == d.tint) return !1;
                if (null != c && null != d.maskCells) {
                    if (c.length != d.maskCells.length) return !1;
                    for (var e = 0, f = c; e < f.length; e++) {
                        var g = f[e];
                        if (d.maskCells.indexOf(g) < 0) return !1
                    }
                } else if (null == c && null == d.maskCells || null != c && null == d.maskCells) return !1;
                return !0
            }, a.prototype.maskCells = function(a) {
                for (var b = 0; b < this._lineMask.numChildren; b++) this._lineMask.getChildAt(b).visible = !0;
                for (var c = 0, d = a; c < d.length; c++) {
                    var e = d[c],
                        f = this._lineMask[e];
                    null != f && (f.visible = !1)
                }
            }, a.prototype.hideLine = function(a) {
                if (this._currentPaylines.containsKey(a)) {
                    var b = this._currentPaylines.getValue(a).mc;
                    this._paylinesContainer.removeChild(b), b.filters = null, b = null
                }
            }, a
        }();
        b.PaylinesController = e
    }), define("wcgf/gameComponents/reels/SymbolSequenceItem", ["require", "exports", "wcgf/core/events", "wcgf/sequencers/ISequenceItem", "wcgf/gameComponents/MovieClipSequenceItem"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(b, c, d, e) {
                void 0 === d && (d = 1), void 0 === e && (e = !0);
                var f = a.call(this) || this;
                return f._isSequenceDone = !1, f._isSequenceEnded = !1, f._isSequenceStarted = !1, f._loop = 0, f._forceReset = !0, f._symbol = b, f._animFrame = c, f._loop = d, f._forceReset = e, f
            }
            return __extends(b, a), b.prototype.startSequence = function(a) {
                if (a || !this._isSequenceStarted) {
                    this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new c.events.Event(d.sequencers.SEQUENCE_START, null, this)), 0 != this._symbol.mc.cacheID && this._symbol.mc.uncache(), this._symbol.mc.symbol.gotoAndStop(this._animFrame);
                    var b = this._symbol.mc.symbol["anim_" + this._animFrame];
                    null != b ? (b.gotoAndStop(0), this._mcSQ = new e.MovieClipSequenceItem(b, "start", "end", this._loop, null, !1, this._forceReset), this._mcSQ.addEventListener(d.sequencers.SEQUENCE_END, this.onSequenceDone, this), this._mcSQ.startSequence()) : this.onSequenceDone(null)
                }
            }, b.prototype.onSequenceDone = function(a) {
                null != this._mcSQ && this._mcSQ.hasEventListener(d.sequencers.SEQUENCE_END, this.onSequenceDone, this) && this._mcSQ.removeEventListener(d.sequencers.SEQUENCE_END, this.onSequenceDone, this), this._mcSQ = null, this._isSequenceDone = !0, this.dispatchEvent(new c.events.Event(d.sequencers.SEQUENCE_DONE, null, this)), this._isSequenceStarted = !1, this._isSequenceEnded = !0, this.dispatchEvent(new c.events.Event(d.sequencers.SEQUENCE_END, null, this))
            }, b.prototype.stopSequence = function(a) {
                null != this._mcSQ && this._mcSQ.stopSequence(a)
            }, b.prototype.resetSequence = function() {
                this._isSequenceStarted = !1, this._isSequenceDone = !1, this._isSequenceEnded = !1
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                set: function(a) {
                    this._isSequenceDone = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                set: function(a) {
                    this._isSequenceEnded = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                set: function(a) {
                    this._isSequenceStarted = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "symbol", {
                get: function() {
                    return this._symbol
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        b.SymbolSequenceItem = f
    }), define("wcgf/gameComponents/reels/SymbolPoolManager", ["require", "exports", "wcgf/core/AssetManager", "wcgf/core/ObjectPool", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
                function b() {
                    return a.apply(this, arguments) || this
                }
                return __extends(b, a), b
            }(d.ObjectPool),
            g = function() {
                function a() {
                    if (this._symbolPools = new e.default, this.createSymbolMc = function(a) {
                            return c.AssetManager.getInstance().getNewAsset(a)
                        }, a._symbolPoolManagerInstance) throw new Error("Error: Instantiation failed: Use GlobalPoolManager.getInstance() instead of new.");
                    a._symbolPoolManagerInstance = this
                }
                return a.getInstance = function() {
                    return a._symbolPoolManagerInstance
                }, a.prototype.initSymbols = function(a, b) {
                    var d = c.AssetManager.getInstance().getMapId(a),
                        e = this._symbolPools.getValue(d);
                    if (null == e) {
                        var g = new f(this.createSymbolMc);
                        e = {
                            staticBounds: g.getObject(a).getBounds().clone(),
                            objectPool: g
                        }, this._symbolPools.setValue(d, e)
                    }
                    this._symbolPools.getValue(d).objectPool.createObjects(b, a)
                }, a.prototype.getSymbolMc = function(a) {
                    var b = c.AssetManager.getInstance().getMapId(a),
                        d = {
                            staticBound: null,
                            symbolMc: null
                        };
                    if (this._symbolPools.containsKey(b)) {
                        var e = this._symbolPools.getValue(b);
                        d = {
                            staticBound: e.staticBounds,
                            symbolMc: e.objectPool.getObject(a)
                        }
                    } else {
                        var g = new f(this.createSymbolMc),
                            h = g.getObject(a),
                            i = h.getBounds().clone();
                        this._symbolPools.setValue(b, {
                            staticBounds: i,
                            objectPool: g
                        }), d = {
                            staticBound: i,
                            symbolMc: h
                        }
                    }
                    return d
                }, a.prototype.returnSymbolMc = function(a, b) {
                    var d = c.AssetManager.getInstance().getMapId(a),
                        e = this._symbolPools.getValue(d);
                    null !== e && e.objectPool.returnObject(b)
                }, a.prototype.printPools = function() {
                    this._symbolPools.forEach(function(a, b) {})
                }, a
            }();
        g._symbolPoolManagerInstance = new g, b.SymbolPoolManager = g
    }), define("wcgf/gameComponents/reels/SymbolsManager", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/gameComponents/reels/Symbol", "wcgf/core/AssetManager", "wcgf/gameComponents/reels/SymbolPoolManager"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function() {
            function a(a, b, d, e, f) {
                void 0 === f && (f = ""), this._symbolsLayers = new c.default, this._symbolsPriority = new c.default,
                    this._symbolsSequenceType = new c.default, this._dynamicSymbols = new c.default, this._symbolMapPrefix = "", this._skinId = a, this._stripsInfo = b, this._symbolMapPrefix = f, this._symbolsContainer = d, null != e && this.initPool(e)
            }
            return a.prototype.getStrip = function(a) {
                return this._stripsInfo.getValue(a)
            }, a.prototype.getSymbolAtIndex = function(a, b, c) {
                return this.getSymbol(this.getSymbolIdAtIndex(a, b, c))
            }, a.prototype.getSymbolIdAtIndex = function(a, b, c) {
                return this._stripsInfo.getValue(a).strips.getValue(b).stops[c].symbolId
            }, a.prototype.initPool = function(a) {
                var b = this;
                a.forEach(function(a, c) {
                    var d = a;
                    b._dynamicSymbols.containsKey(a) && (d = b._dynamicSymbols.getValue(a));
                    e.AssetManager.getInstance().getMapId(d);
                    f.SymbolPoolManager.getInstance().initSymbols(b._symbolMapPrefix + d, c)
                })
            }, a.prototype.getSymbol = function(a) {
                var b = this._symbolMapPrefix + a;
                this._dynamicSymbols.containsKey(a) && (b = this._symbolMapPrefix + this._dynamicSymbols.getValue(a));
                var c = (e.AssetManager.getInstance().getMapId(b), f.SymbolPoolManager.getInstance().getSymbolMc(b));
                if (null != c.symbolMc) {
                    c.staticBound;
                    var g = new d.Symbol(b, c.symbolMc, c.staticBound, this);
                    return this._symbolsPriority.containsKey(b) && (g.priority = this._symbolsPriority.getValue(b)), this._symbolsSequenceType.containsKey(b) && (g.sequenceType = this._symbolsSequenceType.getValue(b)), g
                }
                return null
            }, a.prototype.checkInSymbol = function(a) {
                e.AssetManager.getInstance().getMapId(a.symbolId);
                f.SymbolPoolManager.getInstance().returnSymbolMc(a.symbolId, a.mc), a.clearSequences()
            }, a.prototype.getStripIndex = function(a, b, c, d) {
                var e = this._stripsInfo.getValue(a).strips.getValue(b),
                    f = c + d;
                return f %= e.stops.length, f < 0 && (f = e.stops.length + f), f
            }, a.prototype.addSymbolToReelContainer = function(a) {
                if (!this._symbolsLayers.containsKey(a.priority)) {
                    var b = new createjs.Container;
                    this._symbolsContainer.addChild(b), this._symbolsLayers.setValue(a.priority, b), this.sortSymbolsLayer()
                }
                a.mc, createjs.MovieClip, this._symbolsLayers.getValue(a.priority).addChild(a.mc)
            }, Object.defineProperty(a.prototype, "symbolsSequenceType", {
                get: function() {
                    return this._symbolsSequenceType
                },
                set: function(a) {
                    this._symbolsSequenceType = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "symbolsPriority", {
                get: function() {
                    return this._symbolsPriority
                },
                set: function(a) {
                    this._symbolsPriority = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "dynamicSymbols", {
                get: function() {
                    return this._dynamicSymbols
                },
                set: function(a) {
                    this._dynamicSymbols = a
                },
                enumerable: !0,
                configurable: !0
            }), a.prototype.sortSymbolsLayer = function() {
                var a = new Array;
                this._symbolsLayers.forEach(function(b, c) {
                    a.push({
                        priority: b,
                        container: c
                    })
                }), a.sort(function(a, b) {
                    return a.priority - b.priority
                });
                for (var b = 0; b < a.length; b++) this._symbolsContainer.setChildIndex(a[b].container, b)
            }, a
        }();
        b.SymbolsManager = g
    }), define("wcgf/gameComponents/reels/Symbol", ["require", "exports", "wcgf/sequencers/ISequenceItem", "wcgf/gameComponents/reels/SymbolSequenceItem"], function(a, b, c, d) {
        "use strict";
        var e;
        ! function(a) {
            a[a.Top = 0] = "Top", a[a.Middle = 1] = "Middle", a[a.Bottom = 2] = "Bottom", a[a.None = 3] = "None"
        }(e = b.SymbolSequenceType || (b.SymbolSequenceType = {}));
        var f = function() {
            function a(a, b, c, d) {
                this._index = 0, this._priority = 0, this._sequenceType = e.None, this._targetPosition = {
                    x: 0,
                    y: 0
                }, this._seqs = new Array, this._symbolId = a, this._mc = b, this._symbolsManager = d, this._staticBounds = c, this.setStatic()
            }
            return a.prototype.setStatic = function() {
                if (null != this._mc && 0 == this._mc.cacheID) {
                    null != this._mc.symbol && this._mc.symbol.gotoAndStop("static");
                    var a = null;
                    null != this._mc.border ? a = this._mc.border.getBounds() : null != this._mc.bounds && (a = this._mc.bounds.getBounds());
                    var b = null != this._mc.symbol && this._mc.symbol.scaleX < 1 ? 1 / this._mc.symbol.scaleX : 1;
                    this._mc.cache(this._staticBounds.x, this._staticBounds.y, this._staticBounds.width, this._staticBounds.height, b), null != a && this._mc.setBounds(a.x, a.y, a.width + 2 * a.x, a.height + 2 * a.y), a = null
                }
            }, a.prototype.saveState = function() {
                this._resetSate = {
                    targetPosition: {
                        x: this._targetPosition.x,
                        y: this._targetPosition.y
                    },
                    container: this._mc.parent
                }
            }, a.prototype.reset = function() {
                null != this._resetSate && (Math.round(this._mc.x) == Math.round(this._resetSate.targetPosition.x) && Math.round(this._mc.y) == Math.round(this._resetSate.targetPosition.y) || (this._mc.x = this._resetSate.targetPosition.x, this._mc.y = this._resetSate.targetPosition.y), this._mc.parent != this._resetSate.container && this._resetSate.container.addChild(this._mc)), this.cellName = null, this.setStatic(), this._resetSate = null
            }, a.prototype.swap = function(a, b) {
                if (void 0 === b && (b = !0), a != this._symbolId) {
                    var c = this._symbolsManager.getSymbol(a);
                    if (null != c) {
                        c._mc.x = this._mc.x, c._mc.y = this._mc.y, this._symbolId = c.symbolId, this._priority = c.priority;
                        var d = this._mc.parent;
                        this._mc.parent.removeChild(this._mc), b ? this._symbolsManager.addSymbolToReelContainer(c) : d.addChild(c.mc), this._mc = c._mc, this._staticBounds = c.staticBounds, null != this._resetSate && (this._resetSate.container = this._mc.parent, this._resetSate.targetPosition = {
                            x: c._mc.x,
                            y: c._mc.y
                        }), c = null
                    }
                }
            }, a.prototype.play = function(a, b) {
                this.getSymbolSequenceItem(a, b).startSequence()
            }, a.prototype.gotoAndStop = function(a, b) {
                for (var c = 0, d = this._seqs; c < d.length; c++) {
                    d[c].stopSequence(!0)
                }
                0 != this._mc.cacheID && this._mc.uncache(), this._mc.symbol.gotoAndStop(a);
                var e = this._mc.symbol["anim_" + a];
                null != e && (e.gotoAndStop(b), e = null)
            }, a.prototype.getSymbolSequenceItem = function(a, b, e) {
                void 0 === b && (b = 1), void 0 === e && (e = !0);
                var f = new d.SymbolSequenceItem(this, a, b, e);
                return f.addEventListener(c.sequencers.SEQUENCE_START, this.onSeqeunceStart, this), this._seqs.push(f), f
            }, a.prototype.clearSequences = function() {
                for (var a = 0, b = this._seqs; a < b.length; a++) {
                    var d = b[a];
                    d.removeEventListener(c.sequencers.SEQUENCE_START, this.onSeqeunceStart, this), d.stopSequence(!0)
                }
                this._seqs = []
            }, a.prototype.onSeqeunceStart = function(a) {
                for (var b = 0, c = this._seqs; b < c.length; b++) {
                    var d = c[b];
                    d != a.target && d.stopSequence(!0)
                }
            }, Object.defineProperty(a.prototype, "symbolId", {
                get: function() {
                    return this._symbolId
                },
                set: function(a) {
                    this._symbolId = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "mc", {
                get: function() {
                    return this._mc
                },
                set: function(a) {
                    this._mc = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "index", {
                get: function() {
                    return this._index
                },
                set: function(a) {
                    this._index = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "cellName", {
                get: function() {
                    return this._cellName
                },
                set: function(a) {
                    this._cellName = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "priority", {
                get: function() {
                    return this._priority
                },
                set: function(a) {
                    this._priority = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "targetPosition", {
                get: function() {
                    return this._targetPosition
                },
                set: function(a) {
                    this._targetPosition = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "sequenceType", {
                get: function() {
                    return this._sequenceType
                },
                set: function(a) {
                    this._sequenceType = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "staticBounds", {
                get: function() {
                    return this._staticBounds
                },
                enumerable: !0,
                configurable: !0
            }), a
        }();
        b.Symbol = f
    }), define("wcgf/gameComponents/reels/IReel", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reels/spinStrategies", ["require", "exports"], function(a, b) {
        "use strict";
        ! function(a) {
            function b(b, c, d, e, f) {
                void 0 === e && (e = 0), void 0 === f && (f = 1);
                var g = 0,
                    h = b.concat();
                f > 0 && h.reverse();
                for (var i = 0, j = h; i < j.length; i++) {
                    var k = j[i];
                    createjs.Tween.get(k.mc, null).wait(g).to({
                        y: k.targetPosition.y
                    }, d, createjs.Ease.linear).call(function(b) {
                        a.cleaup(h, c, b.target)
                    }), g += e
                }
            }

            function c(b, c, d, e, f) {
                void 0 === e && (e = 0), void 0 === f && (f = 1);
                var g = 0,
                    h = b.concat();
                f > 0 && h.reverse();
                for (var i = 0, j = h; i < j.length; i++) {
                    var k = j[i];
                    createjs.Tween.get(k.mc, null).wait(g).to({
                        y: k.targetPosition.y
                    }, d, createjs.Ease.quadIn).call(function(b) {
                        a.cleaup(h, c, b.target)
                    }), g += e
                }
            }

            function d(b, c, d, e, f) {
                void 0 === e && (e = 0), void 0 === f && (f = 1);
                var g = 0,
                    h = b.concat();
                f > 0 && h.reverse();
                for (var i = 0; i < h.length; i++) {
                    var j = h[i];
                    createjs.Tween.get(j.mc, null).wait(g).to({
                        y: j.targetPosition.y
                    }, d, createjs.Ease.quadOut).call(function(b) {
                        a.cleaup(h, c, b.target)
                    }), g += e
                }
            }

            function e(b, c, d, e, f) {
                void 0 === e && (e = 0), void 0 === f && (f = 1);
                var g = 0,
                    h = b.concat();
                f > 0 && h.reverse();
                for (var i = 0, j = h; i < j.length; i++) {
                    var k = j[i];
                    createjs.Tween.get(k.mc, null).wait(g).to({
                        y: k.targetPosition.y
                    }, d, createjs.Ease.elasticIn).call(function(b) {
                        a.cleaup(h, c, b.target)
                    }), g += e
                }
            }

            function f(b, c, d, e, f) {
                void 0 === e && (e = 0), void 0 === f && (f = 1);
                var g = 0,
                    h = b.concat();
                f > 0 && h.reverse();
                for (var i = 0, j = h; i < j.length; i++) {
                    var k = j[i];
                    createjs.Tween.get(k.mc, null).wait(g).to({
                        y: k.targetPosition.y
                    }, d, createjs.Ease.elasticOut).call(function(b) {
                        a.cleaup(h, c, b.target)
                    }), g += e
                }
            }

            function g(b, c, d, e, f) {
                void 0 === e && (e = 0), void 0 === f && (f = 1);
                var g = 0,
                    h = b.concat();
                f > 0 && h.reverse();
                for (var i = 0, j = h; i < j.length; i++) {
                    var k = j[i];
                    createjs.Tween.get(k.mc, null).wait(g).to({
                        y: k.targetPosition.y
                    }, d, createjs.Ease.backIn).call(function(b) {
                        a.cleaup(h, c, b.target)
                    }), g += e
                }
            }

            function h(b, c, d, e, f) {
                void 0 === e && (e = 0), void 0 === f && (f = 1);
                var g = 0,
                    h = b.concat();
                f > 0 && h.reverse();
                for (var i = 0, j = h; i < j.length; i++) {
                    var k = j[i];
                    createjs.Tween.get(k.mc, null).wait(g).to({
                        y: k.targetPosition.y
                    }, d, createjs.Ease.backOut).call(function(b) {
                        a.cleaup(h, c, b.target)
                    }), g += e
                }
            }

            function i(a, b, c) {
                createjs.Tween.removeTweens(c);
                for (var d = !1, e = 0, f = a; e < f.length; e++) {
                    var g = f[e];
                    if (createjs.Tween.hasActiveTweens(g.mc)) {
                        d = !0;
                        break
                    }
                }
                d || (null != b && b(), b = null, a = null), c = null
            }
            a.simpleLinear = b, a.quadIn = c, a.quadOut = d, a.elasticIn = e, a.elasticOut = f, a.backIn = g, a.backOut = h, a.cleaup = i
        }(b.spinStrategies || (b.spinStrategies = {}))
    }), define("wcgf/gameComponents/reels/IReelSet", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reels/slotsReelSet/SlotsReel", ["require", "exports", "wcgf/gameComponents/reels/Symbol", "wcgf/core/events"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(c, e, f, g, h) {
                var i = a.call(this) || this;
                return i._currentIndex = 0, i._symbols = new Array, i._spinning = !1, i._stopIndex = -1, i.onStartSpinDone = function() {
                    i.dispatchEvent(new d.events.Event(b.START_SPIN_END, null, i)), createjs.Ticker.addEventListener("tick", i.onTick)
                }, i.onStopSpinDone = function() {
                    i._spinning = !1, i.dispatchEvent(new d.events.Event(b.STOP_SPIN_END, null, i))
                }, i.onTick = function(a) {
                    for (var c, e, f = !1, g = 0, h = i._spinStrategy.spinSpeed * a.delta, j = new Array, k = 0, l = i._symbols; k < l.length; k++) {
                        var m = l[k];
                        h > 0 ? m.mc.y += Math.min(h, m.mc.getBounds().height) : h < 0 && (m.mc.y += Math.max(h, -m.mc.getBounds().height)), null == m.cellName && (m.mc.y > i._bounds.y + i._bounds.height && h > 0 || m.mc.y + m.mc.getBounds().height < i._bounds.y && h < 0) ? j.push(m) : ((null == c || m.mc.y < c) && (c = m.mc.y), (null == e || m.mc.y + m.mc.getBounds().height > e) && (e = m.mc.y + m.mc.getBounds().height)), null != m.cellName && m.index == i._stopIndex && (i._spinStrategy.spinSpeed > 0 && m.mc.y > i._bounds.y + i._spinStrategy.stopOffset.y || i._spinStrategy.spinSpeed < 0 && m.mc.y < i._bounds.y + i._spinStrategy.stopOffset.y) && (f = !0, g = i._bounds.y - m.mc.y)
                    }
                    for (var n = 0, o = j; n < o.length; n++) {
                        var p = o[n];
                        i.removeSymbol(p)
                    }
                    if (h > 0 && c > i._bounds.y) {
                        i._currentIndex = i._symbolsManager.getStripIndex(i._currentStage, i._name, i._currentIndex, -1);
                        var q = i._symbolsManager.getSymbolAtIndex(i._currentStage, i._name, i._currentIndex);
                        q.index = i._currentIndex, q.cellName = null, q.mc.y = i._symbols[0].mc.y - q.mc.getBounds().height, q.mc.x = i._bounds.x, q.targetPosition = {
                            x: q.mc.x,
                            y: q.mc.y
                        }, i.addSymbol(q, !0)
                    } else if (h < 0 && e < i._bounds.y + i._bounds.height) {
                        i._currentIndex = i._symbolsManager.getStripIndex(i._currentStage, i._name, i._currentIndex, 1);
                        var q = i._symbolsManager.getSymbolAtIndex(i._currentStage, i._name, i._currentIndex);
                        q.index = i._currentIndex, q.cellName = null, q.mc.y = i._symbols[i._symbols.length - 1].mc.y + i._symbols[i._symbols.length - 1].mc.getBounds().height, q.mc.x = i._bounds.x, q.targetPosition = {
                            x: q.mc.x,
                            y: q.mc.y
                        }, i.addSymbol(q, !1)
                    }
                    if (f) {
                        for (var r = 0, s = i._symbols; r < s.length; r++) {
                            var m = s[r];
                            m.targetPosition.y = m.mc.y + g, m.saveState()
                        }
                        createjs.Ticker.removeEventListener("tick", i.onTick), i.dispatchEvent(new d.events.Event(b.STOP_SPIN_BEGIN, null, i)), i._spinStrategy.stopSpin(i._symbols, i.onStopSpinDone)
                    }
                }, i._name = c, i._symbolsContainer = e, i._backGround = f, i._bounds = i._backGround.getTransformedBounds(), i._symbolsManager = h, i._spinStrategy = g, i
            }
            return __extends(b, a), b.prototype.init = function(a) {
                this._currentIndex = a.stripIndex;
                for (var b = this._currentIndex, c = this._bounds.y, d = 0, e = a.cells; d < e.length; d++) {
                    var f = e[d],
                        g = this._symbolsManager.getSymbol(f.symbolId);
                    g.index = b, g.cellName = f.name, g.mc.x = this._bounds.x, g.mc.y = c, g.targetPosition = {
                        x: g.mc.x,
                        y: g.mc.y
                    }, this.addSymbol(g), c += g.mc.getBounds().height, b++
                }
                this.addPadding(this._spinStrategy.symbolPadding, this._symbols[0].index, this._symbols[this._symbols.length - 1].index)
            }, b.prototype.addPadding = function(a, b, d) {
                for (var e = b, f = 0; f < a;) {
                    e = this._symbolsManager.getStripIndex(this._currentStage, this._name, e, -1);
                    var g = this._symbolsManager.getSymbolAtIndex(this._currentStage, this._name, e);
                    g.index = e, g.cellName = null, g.mc.y = this._symbols[0].mc.y - g.mc.getBounds().height, g.mc.x = this._bounds.x, g.targetPosition = {
                        x: g.mc.x,
                        y: g.mc.y
                    }, this.addSymbol(g, !0), g.sequenceType != c.SymbolSequenceType.Middle && g.sequenceType != c.SymbolSequenceType.Bottom && f++
                }
                for (e = d, f = 0; f < a;) {
                    e = this._symbolsManager.getStripIndex(this._currentStage, this._name, e, 1);
                    var g = this._symbolsManager.getSymbolAtIndex(this._currentStage, this._name, e);
                    g.index = e, g.cellName = null, g.mc.y = this._symbols[this._symbols.length - 1].mc.y + this._symbols[this._symbols.length - 1].mc.getBounds().height, g.mc.x = this._bounds.x, g.targetPosition = {
                        x: g.mc.x,
                        y: g.mc.y
                    }, this.addSymbol(g, !1), g.sequenceType != c.SymbolSequenceType.Middle && g.sequenceType != c.SymbolSequenceType.Top && f++
                }
            }, b.prototype.spin = function(a) {
                void 0 === a && (a = 0);
                var c = this;
                setTimeout(function() {
                    if (!c._spinning) {
                        c._stopIndex = -1, c._spinning = !0;
                        for (var a = 0, e = c._symbols; a < e.length; a++) {
                            var f = e[a];
                            f.reset(), f.targetPosition.y += c._spinStrategy.startOffset.y
                        }
                        c._spinStrategy.spinSpeed > 0 ? c._currentIndex = c._symbols[0].index : c._spinStrategy.spinSpeed < 0 && (c._currentIndex = c._symbols[c._symbols.length - 1].index), c.dispatchEvent(new d.events.Event(b.START_SPIN_BEGIN, null, c)), c._spinStrategy.startSpin(c._symbols, c.onStartSpinDone)
                    }
                }, a)
            }, b.prototype.stopSpin = function(a, b) {
                var d = this;
                setTimeout(function() {
                    d._stopIndex = b.stripIndex;
                    var a;
                    for (d._spinStrategy.spinSpeed > 0 ? a = d._symbols[0] : d._spinStrategy.spinSpeed < 0 && (a = d._symbols[d._symbols.length - 1]); a.sequenceType == c.SymbolSequenceType.Middle || d._spinStrategy.spinSpeed > 0 && a.sequenceType == c.SymbolSequenceType.Bottom || d._spinStrategy.spinSpeed < 0 && a.sequenceType == c.SymbolSequenceType.Top;) {
                        d._spinStrategy.spinSpeed > 0 ? d._currentIndex = d._symbolsManager.getStripIndex(d._currentStage, d._name, d._currentIndex, -1) : d._spinStrategy.spinSpeed < 0 && (d._currentIndex = d._symbolsManager.getStripIndex(d._currentStage, d._name, d._currentIndex, 1));
                        var e = d._symbolsManager.getSymbolAtIndex(d._currentStage, d._name, d._currentIndex);
                        e.index = -1, e.cellName = null, e.mc.x = d._bounds.x, e.targetPosition.x = e.mc.x, d._spinStrategy.spinSpeed > 0 ? (e.mc.y = d._symbols[0].mc.y - e.mc.getBounds().height, d.addSymbol(e, !0)) : d._spinStrategy.spinSpeed < 0 && (e.mc.y = d._symbols[d._symbols.length - 1].mc.y + d._symbols[d._symbols.length - 1].mc.getBounds().height, d.addSymbol(e, !1)), e.targetPosition.y = e.mc.y, a = e
                    }
                    for (var f = d.addCellPadding(b.cells, d._spinStrategy.symbolPadding); f.length > 0;) {
                        var g = null;
                        d._spinStrategy.spinSpeed > 0 ? g = f.pop() : d._spinStrategy.spinSpeed < 0 && (g = f.shift());
                        var h = d._symbolsManager.getSymbol(g.symbolId);
                        h.index = g.stripIndex, h.cellName = g.name, h.mc.x = d._bounds.x, h.targetPosition.x = h.mc.x, d._spinStrategy.spinSpeed > 0 ? (h.mc.y = d._symbols[0].mc.y - h.mc.getBounds().height, d.addSymbol(h, !0)) : d._spinStrategy.spinSpeed < 0 && (h.mc.y = d._symbols[d._symbols.length - 1].mc.y + d._symbols[d._symbols.length - 1].mc.getBounds().height, d.addSymbol(h, !1)), h.targetPosition.y = h.mc.y
                    }
                }, a)
            }, b.prototype.reset = function(a) {
                if (this.forceStop(), null != this._symbols)
                    for (var b = this._symbols.concat(), c = 0, d = b; c < d.length; c++) {
                        var e = d[c];
                        this.removeSymbol(e)
                    }
                this._currentIndex = 0, this._stopIndex = -1, this.init(a)
            }, b.prototype.forceStop = function() {
                if (createjs.Ticker.removeEventListener("tick", this.onTick), null != this._symbols)
                    for (var a = 0, b = this._symbols; a < b.length; a++) {
                        var c = b[a];
                        createjs.Tween.removeTweens(c.mc)
                    }
                this._spinning = !1
            }, b.prototype.addCellPadding = function(a, b) {
                for (var d = a.concat(), e = a[0].stripIndex, f = 0; f < b;) {
                    e = this._symbolsManager.getStripIndex(this._currentStage, this._name, e, -1);
                    var g = this._symbolsManager.getSymbolIdAtIndex(this._currentStage, this._name, e),
                        h = this._symbolsManager.symbolsSequenceType.getValue(g);
                    d.unshift({
                        name: null,
                        stripIndex: e,
                        symbolId: g,
                        type: ""
                    }), h != c.SymbolSequenceType.Middle && h != c.SymbolSequenceType.Bottom && f++
                }
                for (e = a[a.length - 1].stripIndex, f = 0; f < b;) {
                    e = this._symbolsManager.getStripIndex(this._currentStage, this._name, e, 1);
                    var g = this._symbolsManager.getSymbolIdAtIndex(this._currentStage, this._name, e),
                        h = this._symbolsManager.symbolsSequenceType.getValue(g);
                    d.push({
                        name: null,
                        stripIndex: e,
                        symbolId: g,
                        type: ""
                    }), h != c.SymbolSequenceType.Middle && h != c.SymbolSequenceType.Top && f++
                }
                return d
            }, b.prototype.addSymbol = function(a, b) {
                void 0 === b && (b = !1), b ? this._symbols.unshift(a) : this._symbols.push(a), this._symbolsManager.addSymbolToReelContainer(a)
            }, b.prototype.removeSymbol = function(a) {
                a.mc.parent.removeChild(a.mc);
                var b = this._symbols.indexOf(a, 0);
                b > -1 && this._symbols.splice(b, 1), this._symbolsManager.checkInSymbol(a)
            }, Object.defineProperty(b.prototype, "isSpinning", {
                get: function() {
                    return this._spinning
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentSymbols", {
                get: function() {
                    return this._symbols
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "name", {
                get: function() {
                    return this._name
                },
                set: function(a) {
                    this._name = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "speed", {
                get: function() {
                    return this._spinStrategy.spinSpeed
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentStage", {
                get: function() {
                    return this._currentStage
                },
                set: function(a) {
                    this._currentStage = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        e.START_SPIN_BEGIN = "ReelStartSpinBegin", e.START_SPIN_END = "ReelStartSpinEnf", e.STOP_SPIN_BEGIN = "ReelStopSpinBegin", e.STOP_SPIN_END = "ReelStopSpinEnf", b.SlotsReel = e
    }), define("wcgf/gameComponents/reels/slotsReelSet/SlotsReelSet", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/gameComponents/reels/slotsReelSet/SlotsReel", "wcgf/gameComponents/reels/SymbolsManager", "wcgf/core/events"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b(b, d, e) {
                void 0 === e && (e = "");
                var f = a.call(this) || this;
                return f._stripInfoName = "BaseGame", f._populationOutcomeName = "BaseGame", f._reels = new c.default, f._symbolsPriority = new c.default, f._symbolsSequenceType = new c.default, f._symbolMapPrefix = "", f._symbolSkinId = b, f._reelsContainer = d, f._symbolsContainer = new createjs.Container, f._reelsContainer.addChild(f._symbolsContainer), f._symbolMapPrefix = e, f
            }
            return __extends(b, a), b.prototype.init = function(a, b, c, f, g) {
                var h = this;
                this._symbolsManager = new e.SymbolsManager(this._symbolSkinId, b, this._symbolsContainer, f, this._symbolMapPrefix), null != g && (this._symbolsManager.dynamicSymbols = g), this._symbolsManager.symbolsPriority = this._symbolsPriority, this._symbolsManager.symbolsSequenceType = this._symbolsSequenceType, this._symbolsManager.getStrip(this._stripInfoName).strips.forEach(function(b, e) {
                    var f = new d.SlotsReel(b, h._symbolsContainer, h._reelsContainer[b], a.getValue(b), h._symbolsManager);
                    f.currentStage = h._stripInfoName, h._reels.setValue(f.name, f), f.init(c.getValue(h._populationOutcomeName).reels.getValue(f.name))
                })
            }, b.prototype.reset = function(a, b) {
                void 0 === b && (b = null);
                var c = b || this._populationOutcomeName;
                this._reels.forEach(function(b, d) {
                    d.reset(a.getValue(c).reels.getValue(b))
                })
            }, b.prototype.spin = function(a) {
                void 0 === a && (a = null);
                var b = null;
                null != a && (b = a.concat());
                var c = this;
                this._reels.forEach(function(a, e) {
                    var f = 0;
                    null != b && b.length > 0 && (f = b.shift()), e.addEventListener(d.SlotsReel.START_SPIN_BEGIN, c.onReelStartSpinBegin, c), e.addEventListener(d.SlotsReel.START_SPIN_END, c.onReelStartSpinEnd, c), e.spin(f)
                })
            }, b.prototype.onReelStartSpinBegin = function(a) {
                a.target.removeEventListener(d.SlotsReel.START_SPIN_BEGIN, this.onReelStartSpinBegin, this), this.dispatchEvent(new f.events.Event(b.REEL_START_SPIN_BEGIN, a.target, this))
            }, b.prototype.onReelStartSpinEnd = function(a) {
                a.target.removeEventListener(d.SlotsReel.START_SPIN_END, this.onReelStartSpinBegin, this), this.dispatchEvent(new f.events.Event(b.REEL_START_SPIN_END, a.target, this))
            }, b.prototype.stopSpin = function(a, b) {
                var c = b.concat(),
                    e = this;
                this._reels.forEach(function(b, g) {
                    var h = 0;
                    c.length > 0 && (h = c.shift()), g.isSpinning ? (g.addEventListener(d.SlotsReel.STOP_SPIN_BEGIN, e.onReelStopSpinBegin, e), g.addEventListener(d.SlotsReel.STOP_SPIN_END, e.onReelStopSpinEnd, e), g.stopSpin(h, a.getValue(e._populationOutcomeName).reels.getValue(b))) : e.onReelStopSpinEnd(new f.events.Event(d.SlotsReel.STOP_SPIN_END, null, g))
                })
            }, b.prototype.onReelStopSpinBegin = function(a) {
                null != a && null != a.target && a.target.removeEventListener(d.SlotsReel.STOP_SPIN_BEGIN, this.onReelStopSpinEnd, this), this.dispatchEvent(new f.events.Event(b.REEL_STOP_SPIN_BEGIN, a.target, this))
            }, b.prototype.onReelStopSpinEnd = function(a) {
                null != a && null != a.target && a.target.removeEventListener(d.SlotsReel.STOP_SPIN_END, this.onReelStopSpinEnd, this), this.dispatchEvent(new f.events.Event(b.REEL_STOP_SPIN_END, a.target, this));
                var c = !0;
                this._reels.forEach(function(a, b) {
                    b.isSpinning && (c = !1)
                }), c && this.dispatchEvent(new f.events.Event(b.ALL_REEL_STOP, null, this))
            }, Object.defineProperty(b.prototype, "symbolsSequenceType", {
                get: function() {
                    return this._symbolsSequenceType
                },
                set: function(a) {
                    this._symbolsSequenceType = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "symbolsPriority", {
                get: function() {
                    return this._symbolsPriority
                },
                set: function(a) {
                    this._symbolsPriority = a, null != this._symbolsManager && (this._symbolsManager.symbolsPriority = this._symbolsPriority)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "reels", {
                get: function() {
                    return this._reels
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "stripInfoName", {
                get: function() {
                    return this._stripInfoName
                },
                set: function(a) {
                    if (this._stripInfoName != a) {
                        this._stripInfoName = a;
                        var b = this;
                        this._reels.forEach(function(a, c) {
                            c.currentStage = b._stripInfoName
                        })
                    }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "populationOutcomeName", {
                get: function() {
                    return this._populationOutcomeName
                },
                set: function(a) {
                    this._populationOutcomeName = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "dynamicSymbols", {
                get: function() {
                    return this._symbolsManager.dynamicSymbols
                },
                set: function(a) {
                    this._symbolsManager.dynamicSymbols = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(f.events.EventDispatcher);
        g.REEL_START_SPIN_BEGIN = "ReelSetReelStartSpinBegin", g.REEL_START_SPIN_END = "ReelSetReelStartSpinEnd", g.REEL_STOP_SPIN_BEGIN = "ReelSetReelStopSpinBegin", g.REEL_STOP_SPIN_END = "ReelSetReelStopSpinEnd", g.ALL_REEL_STOP = "ReelSetAllReelStop", b.SlotsReelSet = g
    }), define("wcgf/gameComponents/reels/tumblingReelSet/TumblingReel", ["require", "exports", "wcgf/core/events", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d) {
        "use strict";
        var e = createjs.Tween,
            f = function(a) {
                function b(d, e, f, g, h) {
                    var i = a.call(this) || this;
                    return i._currentIndex = 0, i._symbols = new Array, i._isSpinning = !1, i.onStartSpinDone = function() {
                        i.clear(), i.dispatchEvent(new c.events.Event(b.START_SPIN_END, null, i))
                    }, i.onStopSpinDone = function() {
                        i._isSpinning = !1;
                        for (var a = 0, d = i._symbols; a < d.length; a++) {
                            d[a].saveState()
                        }
                        i.dispatchEvent(new c.events.Event(b.STOP_SPIN_END, null, i))
                    }, i._name = d, i._symbolsContainer = e, i._backGround = f, i._bounds = i._backGround.getTransformedBounds(), i._symbolsManager = h, i._spinStrategy = g, i
                }
                return __extends(b, a), b.prototype.init = function(a) {
                    this._currentIndex = a.stripIndex;
                    for (var b = this._bounds.y, c = 0, d = a.cells; c < d.length; c++) {
                        var e = d[c],
                            f = this._symbolsManager.getSymbol(e.symbolId);
                        null != f && (f.index = e.stripIndex, f.cellName = e.name, f.mc.x = this._bounds.x, f.mc.y = b, f.targetPosition = {
                            x: f.mc.x,
                            y: f.mc.y
                        }, this.addSymbol(f), b += f.mc.getBounds().height)
                    }
                }, b.prototype.spin = function(a) {
                    void 0 === a && (a = 0);
                    var d = this;
                    setTimeout(function() {
                        if (!d._isSpinning) {
                            d._outSymbols = d._symbols.concat(), d._isSpinning = !0;
                            for (var a = 0, e = d._outSymbols; a < e.length; a++) {
                                var f = e[a];
                                f.reset(), d._spinStrategy.spinSpeed > 0 ? f.targetPosition.y += d._bounds.height : f.targetPosition.y -= d._bounds.height
                            }
                            d.dispatchEvent(new c.events.Event(b.START_SPIN_BEGIN, null, d)), d._spinStrategy.startSpin(d._outSymbols, d.onStartSpinDone)
                        }
                    }, a)
                }, b.prototype.clear = function() {
                    if (null != this._outSymbols) {
                        for (; this._outSymbols.length > 0;) this.removeSymbol(this._outSymbols.pop());
                        this._outSymbols = null
                    }
                }, b.prototype.stopSpin = function(a, d) {
                    var e = this;
                    setTimeout(function() {
                        var a = e.getSymbolsByIndex();
                        e._isSpinning = !0;
                        var f = d.cells.concat(),
                            g = 0;
                        g = e._spinStrategy.spinSpeed > 0 ? e._bounds.y : e._bounds.y + e._bounds.height;
                        for (var h = g, i = new Array; f.length > 0;) {
                            var j;
                            j = e._spinStrategy.spinSpeed > 0 ? f.pop() : f.shift();
                            var k, l = !0;
                            a.containsKey(j.stripIndex) ? (l = !1, k = a.getValue(j.stripIndex)) : (l = !0, k = e._symbolsManager.getSymbol(j.symbolId)), k.reset(), k.index = j.stripIndex, k.cellName = j.name, k.mc.x = e._bounds.x, k.targetPosition.x = k.mc.x, e._spinStrategy.spinSpeed > 0 ? (l && (e.addSymbol(k, !0), k.mc.y = h - k.mc.getBounds().height, h -= k.mc.getBounds().height), k.targetPosition.y = g + e._bounds.height - k.mc.getBounds().height, g -= k.mc.getBounds().height, i.unshift(k)) : e._spinStrategy.spinSpeed < 0 && (l && (e.addSymbol(k, !1), k.mc.y = h, h += k.mc.getBounds().height), k.targetPosition.y = g - e._bounds.height, g += k.mc.getBounds().height, i.push(k))
                        }
                        e.dispatchEvent(new c.events.Event(b.STOP_SPIN_BEGIN, null, e)), e._spinStrategy.stopSpin(i, e.onStopSpinDone)
                    }, a)
                }, b.prototype.reset = function(a) {
                    this._isSpinning = !1;
                    for (var b = 0, c = this._symbols; b < c.length; b++) {
                        var d = c[b];
                        e.removeTweens(d.mc)
                    }
                    if (null != this._symbols)
                        for (var f = this._symbols.concat(), g = 0, h = f; g < h.length; g++) {
                            var d = h[g];
                            this.removeSymbol(d)
                        }
                    this._currentIndex = 0, this.init(a)
                }, b.prototype.getSymbolsByIndex = function() {
                    for (var a = new d.default, b = 0, c = this._symbols; b < c.length; b++) {
                        var e = c[b];
                        null != e.index && (null == this._outSymbols || this._outSymbols.indexOf(e) < 0) && a.setValue(e.index, e)
                    }
                    return a
                }, b.prototype.addSymbol = function(a, b) {
                    void 0 === b && (b = !1), b ? this._symbols.unshift(a) : this._symbols.push(a), this._symbolsManager.addSymbolToReelContainer(a)
                }, b.prototype.removeSymbol = function(a) {
                    a.reset(), a.mc.parent.removeChild(a.mc);
                    var b = this._symbols.indexOf(a, 0);
                    b > -1 && this._symbols.splice(b, 1), this._symbolsManager.checkInSymbol(a)
                }, Object.defineProperty(b.prototype, "isSpinning", {
                    get: function() {
                        return this._isSpinning
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "currentSymbols", {
                    get: function() {
                        return this._symbols
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "name", {
                    get: function() {
                        return this._name
                    },
                    set: function(a) {
                        this._name = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "speed", {
                    get: function() {
                        return this._spinStrategy.spinSpeed
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "currentStage", {
                    get: function() {
                        return this._currentStage
                    },
                    set: function(a) {
                        this._currentStage = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), b
            }(c.events.EventDispatcher);
        f.START_SPIN_BEGIN = "TumblingReelStartSpinBegin", f.START_SPIN_END = "TumblingReelStartSpinEnf", f.STOP_SPIN_BEGIN = "TumblingReelStopSpinBegin", f.STOP_SPIN_END = "TumblingReelStopSpinEnf", b.TumblingReel = f
    }), define("wcgf/gameComponents/reels/tumblingReelSet/TumblingReelSet", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/gameComponents/reels/tumblingReelSet/TumblingReel", "wcgf/gameComponents/reels/SymbolsManager", "wcgf/core/events"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b(b, d, e) {
                void 0 === e && (e = "");
                var f = a.call(this) || this;
                return f._stripInfoName = "BaseGame", f._populationOutcomeName = "BaseGame", f._reels = new c.default, f._symbolsPriority = new c.default, f._symbolsSequenceType = new c.default, f._symbolMapPrefix = "", f._skinId = b, f._reelsContainer = d, f._symbolsContainer = new createjs.Container, f._reelsContainer.addChild(f._symbolsContainer), f._symbolMapPrefix = e, f
            }
            return __extends(b, a), b.prototype.init = function(a, b, c, f, g) {
                var h = this;
                this._symbolsManager = new e.SymbolsManager(this._skinId, b, this._symbolsContainer, f, this._symbolMapPrefix), null != g && (this._symbolsManager.dynamicSymbols = g), this._symbolsManager.symbolsPriority = this._symbolsPriority, this._symbolsManager.symbolsSequenceType = this._symbolsSequenceType, this._symbolsManager.getStrip(this._stripInfoName).strips.forEach(function(b, e) {
                    var f = new d.TumblingReel(b, h._symbolsContainer, h._reelsContainer[b], a.getValue(b), h._symbolsManager);
                    f.currentStage = h._stripInfoName, h._reels.setValue(f.name, f), f.init(c.getValue(h._populationOutcomeName).reels.getValue(f.name))
                })
            }, b.prototype.spin = function(a) {
                void 0 === a && (a = null);
                var b = null;
                null != a && (b = a.concat());
                var c = this;
                this._reels.forEach(function(a, e) {
                    var f = 0;
                    null != b && b.length > 0 && (f = b.shift()), e.addEventListener(d.TumblingReel.START_SPIN_BEGIN, c.onReelStartSpinBegin, c), e.addEventListener(d.TumblingReel.START_SPIN_END, c.onReelStartSpinEnd, c), e.spin(f)
                })
            }, b.prototype.onReelStartSpinBegin = function(a) {
                a.target.removeEventListener(d.TumblingReel.START_SPIN_BEGIN, this.onReelStartSpinBegin, this), this.dispatchEvent(new f.events.Event(b.REEL_START_SPIN_BEGIN, a.target, this))
            }, b.prototype.onReelStartSpinEnd = function(a) {
                a.target.removeEventListener(d.TumblingReel.START_SPIN_END, this.onReelStartSpinBegin, this), this.dispatchEvent(new f.events.Event(b.REEL_START_SPIN_END, a.target, this))
            }, b.prototype.stopSpin = function(a, b) {
                var c = b.concat(),
                    e = this;
                this._reels.forEach(function(b, f) {
                    var g = 0;
                    c.length > 0 && (g = c.shift()), f.addEventListener(d.TumblingReel.STOP_SPIN_BEGIN, e.onReelStopSpinBegin, e), f.addEventListener(d.TumblingReel.STOP_SPIN_END, e.onReelStopSpinEnd, e), f.stopSpin(g, a.getValue(e._populationOutcomeName).reels.getValue(b))
                })
            }, b.prototype.reset = function(a, b) {
                void 0 === b && (b = null);
                var c = b || this._populationOutcomeName;
                this._reels.forEach(function(b, d) {
                    d.reset(a.getValue(c).reels.getValue(b))
                })
            }, b.prototype.onReelStopSpinBegin = function(a) {
                null != a && null != a.target && a.target.removeEventListener(d.TumblingReel.STOP_SPIN_BEGIN, this.onReelStopSpinEnd, this), this.dispatchEvent(new f.events.Event(b.REEL_STOP_SPIN_BEGIN, a.target, this))
            }, b.prototype.onReelStopSpinEnd = function(a) {
                null != a && null != a.target && a.target.removeEventListener(d.TumblingReel.STOP_SPIN_END, this.onReelStopSpinEnd, this), this.dispatchEvent(new f.events.Event(b.REEL_STOP_SPIN_END, a.target, this));
                var c = !0;
                this._reels.forEach(function(a, b) {
                    b.isSpinning && (c = !1)
                }), c && this.dispatchEvent(new f.events.Event(b.ALL_REEL_STOP, null, this))
            }, Object.defineProperty(b.prototype, "symbolsSequenceType", {
                get: function() {
                    return this._symbolsSequenceType
                },
                set: function(a) {
                    this._symbolsSequenceType = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "symbolsPriority", {
                get: function() {
                    return this._symbolsPriority
                },
                set: function(a) {
                    this._symbolsPriority = a, null != this._symbolsManager && (this._symbolsManager.symbolsPriority = this._symbolsPriority)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "reels", {
                get: function() {
                    return this._reels
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "stripInfoName", {
                get: function() {
                    return this._stripInfoName
                },
                set: function(a) {
                    this._stripInfoName = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "populationOutcomeName", {
                get: function() {
                    return this._populationOutcomeName
                },
                set: function(a) {
                    this._populationOutcomeName = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "dynamicSymbols", {
                get: function() {
                    return this._symbolsManager.dynamicSymbols
                },
                set: function(a) {
                    this._symbolsManager.dynamicSymbols = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(f.events.EventDispatcher);
        g.REEL_START_SPIN_BEGIN = "TumblingReelSetReelStartSpinBegin", g.REEL_START_SPIN_END = "TumblingReelSetReelStartSpinEnd", g.REEL_STOP_SPIN_BEGIN = "TumblingReelSetReelStopSpinBegin", g.REEL_STOP_SPIN_END = "TumblingReelSetReelStopSpinEnd", g.ALL_REEL_STOP = "TumblingReelSetAllReelStop", b.TumblingReelSet = g
    }),
    define("wcgf/gameComponents/reelsV2/ISymbol", ["require", "exports"], function(a, b) {
        "use strict";
        ! function(a) {
            a[a.Top = 0] = "Top", a[a.Middle = 1] = "Middle", a[a.Bottom = 2] = "Bottom", a[a.None = 3] = "None"
        }(b.SymbolSequenceType || (b.SymbolSequenceType = {}))
    }), define("wcgf/gameComponents/reelsV2/baseReelSet/IBaseReel", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reelsV2/spinStrategies", ["require", "exports"], function(a, b) {
        "use strict";
        ! function(a) {
            function b(b, c, d, e, f, g) {
                void 0 === f && (f = 0), void 0 === g && (g = 1);
                var h = 0,
                    i = b.concat();
                g > 0 && i.reverse();
                for (var j = 0, k = i; j < k.length; j++) {
                    var l = k[j];
                    createjs.Tween.get(l.mcContainer, null).wait(h).to({
                        y: l.targetPosition.y
                    }, e, d).call(function(b) {
                        a.cleanup(i, c, b.target)
                    }), h += f
                }
            }

            function c(a, b, c) {
                createjs.Tween.removeTweens(c);
                for (var d = !1, e = 0, f = a; e < f.length; e++) {
                    var g = f[e];
                    if (createjs.Tween.hasActiveTweens(g.mcContainer)) {
                        d = !0;
                        break
                    }
                }
                d || (null != b && b(), b = null, a = null), c = null
            }
            a.baseTween = b, a.cleanup = c
        }(b.spinStrategies || (b.spinStrategies = {}))
    }), define("wcgf/gameComponents/reelsV2/ISymbolsManager", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a(a, b, c) {
                this.state = a, this.initCount = b, this.max = c
            }
            return a
        }();
        b.SymbolStatePoolInfo = c
    }), define("wcgf/gameComponents/reelsV2/baseReelSet/IBaseReelSet", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reelsV2/tumblingReelSet/ITumblingReel", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reelsV2/slotReelSet/ISlotReel", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reelsV2/slotReelSet/ISpinStrategy", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reelsV2/tumblingReelSet/ITumbleStrategy", ["require", "exports"], function(a, b) {
        "use strict";
        ! function(a) {
            a[a.Up = 0] = "Up", a[a.Down = 1] = "Down"
        }(b.Direction || (b.Direction = {}))
    }), define("wcgf/gameComponents/reelsV2/combinedReelSet/Reel", ["require", "exports", "wcgf/gameComponents/reelsV2/ISymbol", "wcgf/core/events", "wcgf/gameComponents/reelsV2/tumblingReelSet/ITumbleStrategy"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b(c, e, f, g, h) {
                var i = a.call(this) || this;
                return i._isSpinning = !1, i._isTumblingOut = !1, i._isTumblingIn = !1, i._currentSymbols = [], i._stopSymbol = null, i._tumbleOutSymbols = null, i.onStartSpinDone = function() {
                    i.dispatchEvent(new d.events.Event(b.START_SPIN_END, null, i));
                    for (var a = 0, c = i._currentSymbols; a < c.length; a++) {
                        c[a].cellName = null
                    }
                    createjs.Ticker.addEventListener("tick", i.onTick)
                }, i.onTick = function(a) {
                    for (var c = i._spinStrategy.spinSpeed * i._bounds.height / 1e3 * a.delta, e = .1 * i._bounds.height, f = new Array, g = 0, h = i._currentSymbols; g < h.length; g++) {
                        var j = h[g];
                        c > 0 ? j.mcContainer.y += Math.min(c, j.bounds.height) : c < 0 && (j.mcContainer.y += Math.max(c, -j.bounds.height)), null == j.cellName && (i._spinStrategy.spinSpeed < 0 && j.mcContainer.y + j.bounds.height < i._bounds.y - e || i._spinStrategy.spinSpeed > 0 && j.mcContainer.y > i._bounds.y + i._bounds.height + e) && f.push(j)
                    }
                    for (var k = 0, l = f; k < l.length; k++) {
                        var m = l[k];
                        i.removeSymbol(m)
                    }
                    var n = i._spinStrategy.stopOffset / 100 * i._bounds.height;
                    if (null != i._stopSymbol && (i._spinStrategy.spinSpeed >= 0 && i._stopSymbol.mcContainer.y >= i._bounds.y + n || i._spinStrategy.spinSpeed < 0 && i._stopSymbol.mcContainer.y <= i._bounds.y + n)) createjs.Ticker.removeEventListener("tick", i.onTick), i.stopCleanUp(), i.dispatchEvent(new d.events.Event(b.STOP_SPIN_BEGIN, null, i)), i._spinStrategy.stopSpin(i._currentSymbols, i.onStopSpinDone);
                    else if (null == i._stopSymbol) {
                        var o = i._currentSymbols[0],
                            p = i._currentSymbols[i._currentSymbols.length - 1];
                        if (c > 0 && o.mcContainer.y > i._bounds.y - e) {
                            var q = i.getNextValidSymbol(o.index, -1);
                            q.cellName = null, q.mcContainer.y = o.mcContainer.y - q.bounds.height, q.mcContainer.x = i._bounds.x, q.targetPosition = {
                                x: q.mcContainer.x,
                                y: q.mcContainer.y
                            }, q.startBlur(i._spinStrategy.blurSpeed * i._bounds.height / 1e3), i.addSymbol(q, !0)
                        } else if (c < 0 && p.mcContainer.y < i._bounds.y + i._bounds.height + e) {
                            var q = i.getNextValidSymbol(p.index, 1);
                            q.cellName = null, q.mcContainer.y = p.mcContainer.y + p.bounds.height, q.mcContainer.x = i._bounds.x, q.targetPosition = {
                                x: q.mcContainer.x,
                                y: q.mcContainer.y
                            }, q.startBlur(i._spinStrategy.blurSpeed * i._bounds.height / 1e3), i.addSymbol(q, !1)
                        }
                    }
                }, i.onStopSpinDone = function() {
                    i._isSpinning = !1;
                    for (var a = 0, c = i._currentSymbols; a < c.length; a++) {
                        c[a].stopBlur()
                    }
                    i.dispatchEvent(new d.events.Event(b.STOP_SPIN_END, null, i))
                }, i.onTumbleOutDone = function(a) {
                    for (var c = 0, e = i._tumbleOutSymbols; c < e.length; c++) {
                        var f = e[c];
                        f.mcContainer.parent.removeChild(f.mcContainer), f.checkIn()
                    }
                    i._tumbleOutSymbols = null, i._isTumblingOut = !1, i.dispatchEvent(new d.events.Event(b.TUMBLE_OUT_END, null, i))
                }, i.onTumbleInDone = function(a) {
                    i._isTumblingIn = !1;
                    for (var c = 0, e = i._currentSymbols; c < e.length; c++) {
                        e[c].stopBlur()
                    }
                    i.dispatchEvent(new d.events.Event(b.TUMBLE_IN_END, null, i))
                }, i._name = c, i._symbolsContainer = e, i._bounds = f.getTransformedBounds().clone(), i._spinStrategy = g, i._symbolsManager = h, i
            }
            return __extends(b, a), b.prototype.init = function(a) {
                this._currentIndex = a.stripIndex;
                for (var b = this._currentIndex, c = this._bounds.y, d = 0, e = a.cells; d < e.length; d++) {
                    var f = e[d],
                        g = this._symbolsManager.getSymbol(f.symbolId);
                    g.index = b, g.cellName = f.name, g.mcContainer.x = this._bounds.x, g.mcContainer.y = c, g.targetPosition = {
                        x: g.mcContainer.x,
                        y: g.mcContainer.y
                    }, this._currentSymbols.push(g), c += g.bounds.height, b = this._symbolsManager.getStripIndex(this._stripInfoName, this._name, b, 1)
                }
                this.addPadding(this._currentSymbols, this._spinStrategy.symbolTopPadding, this._spinStrategy.symbolBottomPadding);
                for (var h = 0, i = this._currentSymbols; h < i.length; h++) {
                    var g = i[h];
                    this._symbolsManager.addSymbolToReelContainer(g)
                }
            }, b.prototype.addPadding = function(a, b, d) {
                void 0 === b && (b = 0), void 0 === d && (d = 0);
                for (var e = a[0].index, f = a[a.length - 1].index, g = e, h = 0; h < b;) {
                    g = this._symbolsManager.getStripIndex(this._stripInfoName, this._name, g, -1);
                    var i = this._symbolsManager.getSymbolAtIndex(this._stripInfoName, this._name, g);
                    i.index = g, i.cellName = "Padding", i.mcContainer.y = a[0].mcContainer.y - i.bounds.height, i.mcContainer.x = this._bounds.x, i.targetPosition = {
                        x: i.mcContainer.x,
                        y: i.mcContainer.y
                    }, a.unshift(i), (i.sequenceType != c.SymbolSequenceType.Middle && i.sequenceType != c.SymbolSequenceType.Bottom || h < b - 1) && h++
                }
                for (g = f, h = 0; h < d;) {
                    g = this._symbolsManager.getStripIndex(this._stripInfoName, this._name, g, 1);
                    var j = this._symbolsManager.getSymbolAtIndex(this._stripInfoName, this._name, g);
                    j.index = g, j.cellName = "Padding", j.mcContainer.y = a[a.length - 1].mcContainer.y + a[a.length - 1].bounds.height, j.mcContainer.x = this._bounds.x, j.targetPosition = {
                        x: j.mcContainer.x,
                        y: j.mcContainer.y
                    }, a.push(j), (j.sequenceType != c.SymbolSequenceType.Middle && j.sequenceType != c.SymbolSequenceType.Top || h < d - 1) && h++
                }
            }, b.prototype.getNextValidSymbol = function(a, b) {
                var d = !1;
                if (null != this._newStripInfoName) {
                    var e = this._symbolsManager.getSymbolAtIndex(this._stripInfoName, this._name, a);
                    e.sequenceType != c.SymbolSequenceType.Middle && (b < 0 && e.sequenceType != c.SymbolSequenceType.Bottom || b > 0 && e.sequenceType != c.SymbolSequenceType.Top) && (this._stripInfoName = this._newStripInfoName, this._newStripInfoName = null, d = !0)
                }
                var f = this._symbolsManager.getStripIndex(this._stripInfoName, this._name, a, b),
                    g = this._symbolsManager.getSymbolAtIndex(this._stripInfoName, this._name, f);
                if (d)
                    for (; g.sequenceType == c.SymbolSequenceType.Middle || b < 0 && g.sequenceType == c.SymbolSequenceType.Top || b > 0 && g.sequenceType == c.SymbolSequenceType.Bottom;) a++, f = this._symbolsManager.getStripIndex(this._stripInfoName, this._name, a, b), g = this._symbolsManager.getSymbolAtIndex(this._stripInfoName, this._name, f);
                return g.index = f, g
            }, b.prototype.spin = function(a, c) {
                void 0 === c && (c = !0);
                var e = this;
                setTimeout(function() {
                    if (!e._isSpinning) {
                        e._isSpinning = !0, e._stopSymbol = null;
                        for (var a = 0, f = e._currentSymbols; a < f.length; a++) {
                            var g = f[a];
                            g.targetPosition.y += e._spinStrategy.startOffset / 100 * e._bounds.height, g.setStatic(c), g.startBlur(e._spinStrategy.blurSpeed * e._bounds.height / 1e3)
                        }
                        e._spinStrategy.spinSpeed > 0 ? e._currentIndex = e._currentSymbols[0].index : e._spinStrategy.spinSpeed < 0 && (e._currentIndex = e._currentSymbols[e._currentSymbols.length - 1].index), e.dispatchEvent(new d.events.Event(b.START_SPIN_BEGIN, null, e)), e._spinStrategy.startSpin(e._currentSymbols, e.onStartSpinDone)
                    }
                }, a)
            }, b.prototype.stopCleanUp = function() {
                for (var a = [], b = this._bounds.y - this._stopSymbol.mcContainer.y, c = 0, d = this._currentSymbols; c < d.length; c++) {
                    var e = d[c];
                    null != e.cellName ? e.targetPosition.y = e.mcContainer.y + b : a.push(e)
                }
                for (var f = 0, g = a; f < g.length; f++) {
                    var h = g[f];
                    this.removeSymbol(h)
                }
            }, b.prototype.stopSpin = function(a, b) {
                var d = this;
                setTimeout(function() {
                    if (d._isSpinning && null == d._stopSymbol) {
                        var a = [],
                            e = b.stripIndex,
                            f = 0,
                            g = void 0;
                        if (d._spinStrategy.spinSpeed >= 0)
                            for (g = d._currentSymbols[0]; g.sequenceType == c.SymbolSequenceType.Bottom || g.sequenceType == c.SymbolSequenceType.Middle;) {
                                var h = d.getNextValidSymbol(g.index, -1);
                                h.cellName = null, h.mcContainer.y = g.mcContainer.y - h.bounds.height, h.mcContainer.x = d._bounds.x, h.targetPosition = {
                                    x: h.mcContainer.x,
                                    y: h.mcContainer.y
                                }, d.addSymbol(h, !0), g = h
                            } else
                                for (g = d._currentSymbols[d._currentSymbols.length - 1]; g.sequenceType == c.SymbolSequenceType.Top || g.sequenceType == c.SymbolSequenceType.Middle;) {
                                    var h = d.getNextValidSymbol(g.index, 1);
                                    h.cellName = null, h.mcContainer.y = g.mcContainer.y + g.bounds.height, h.mcContainer.x = d._bounds.x, h.targetPosition = {
                                        x: h.mcContainer.x,
                                        y: h.mcContainer.y
                                    }, d.addSymbol(h, !1), g = h
                                }
                        for (var i = 0, j = b.cells; i < j.length; i++) {
                            var k = j[i],
                                l = d._symbolsManager.getSymbol(k.symbolId);
                            l.index = e, l.cellName = k.name, l.mcContainer.x = d._bounds.x, l.mcContainer.y = f, l.targetPosition = {
                                x: l.mcContainer.x,
                                y: l.mcContainer.y
                            }, a.push(l), f += l.bounds.height, e++
                        }
                        d._stopSymbol = a[0], d.addPadding(a, d._spinStrategy.symbolTopPadding, d._spinStrategy.symbolBottomPadding), d._spinStrategy.spinSpeed >= 0 ? (a.reverse(), f = d._currentSymbols[0].mcContainer.y - a[0].bounds.height) : f = d._currentSymbols[d._currentSymbols.length - 1].mcContainer.y + d._currentSymbols[d._currentSymbols.length - 1].bounds.height;
                        for (var m = 0, n = a; m < n.length; m++) {
                            var l = n[m];
                            l.mcContainer.y = f, d._spinStrategy.spinSpeed >= 0 ? (d.addSymbol(l, !0), f -= l.bounds.height) : (d.addSymbol(l, !1), f += l.bounds.height), l.startBlur(d._spinStrategy.blurSpeed * d._bounds.height / 1e3)
                        }
                    }
                }, a)
            }, b.prototype.reset = function(a) {
                if (createjs.Ticker.removeEventListener("tick", this.onTick), this._isSpinning = !1, null != this._currentSymbols)
                    for (var b = 0, c = this._currentSymbols; b < c.length; b++) {
                        var d = c[b];
                        createjs.Tween.removeTweens(d.mcContainer), d.clearSequenceItems(), d.mcContainer.parent.removeChild(d.mcContainer), d.checkIn()
                    }
                if (this._currentSymbols = [], this._currentIndex = 0, this._stopSymbol = null, null != this._tumbleOutSymbols)
                    for (var e = 0, f = this._tumbleOutSymbols; e < f.length; e++) {
                        var d = f[e];
                        createjs.Tween.removeTweens(d.mcContainer), d.clearSequenceItems(), d.mcContainer.parent.removeChild(d.mcContainer), d.checkIn()
                    }
                this._tumbleOutSymbols = null, this.init(a)
            }, b.prototype.forceStop = function() {
                if (createjs.Ticker.removeEventListener("tick", this.onTick), null != this._currentSymbols)
                    for (var a = 0, b = this._currentSymbols; a < b.length; a++) {
                        var c = b[a];
                        createjs.Tween.removeTweens(c.mcContainer)
                    }
                this._isSpinning = !1
            }, b.prototype.removeSymbol = function(a) {
                a.mcContainer.parent.removeChild(a.mcContainer);
                var b = this._currentSymbols.indexOf(a, 0);
                b > -1 && this._currentSymbols.splice(b, 1), a.checkIn()
            }, b.prototype.addSymbol = function(a, b) {
                void 0 === b && (b = !1), b ? this._currentSymbols.unshift(a) : this._currentSymbols.push(a), this._symbolsManager.addSymbolToReelContainer(a)
            }, b.prototype.clearPadding = function() {
                for (var a = 0, b = this._currentSymbols.concat(); a < b.length; a++) {
                    var c = b[a];
                    null != c.cellName && "Padding" != c.cellName || this.removeSymbol(c)
                }
            }, b.prototype.tumbleOut = function(a, c) {
                void 0 === c && (c = !0), this._isTumblingOut = !0, this.clearPadding(), this._tumbleOutSymbols = this._currentSymbols.concat(), this._currentSymbols = [];
                var f = this;
                setTimeout(function() {
                    for (var a = 0, g = f._tumbleOutSymbols; a < g.length; a++) {
                        var h = g[a];
                        h.setStatic(c), h.startBlur(f._spinStrategy.blurSpeed * f._bounds.height / 1e3), f._spinStrategy.direction == e.Direction.Down ? h.targetPosition.y += f._bounds.height : h.targetPosition.y -= f._bounds.height
                    }
                    f.dispatchEvent(new d.events.Event(b.TUMBLE_OUT_BEGIN, null, f)), f._spinStrategy.tumbleOut(f._tumbleOutSymbols, f.onTumbleOutDone)
                }, a)
            }, b.prototype.tumbleIn = function(a, c) {
                this._isTumblingIn = !0, this.clearPadding();
                var f = this;
                setTimeout(function() {
                    var a = c.cells.concat(),
                        g = f._currentSymbols.concat(),
                        h = f._bounds.y,
                        i = f._bounds.y + f._bounds.height;
                    f._spinStrategy.direction == e.Direction.Down && (a.reverse(), g.reverse(), h = f._bounds.y + f._bounds.height, i = f._bounds.y);
                    for (var j = 0, k = 0, l = a; k < l.length; k++) {
                        var m = l[k],
                            n = null;
                        null != g[j] ? (n = g[j], n.symbolId != m.symbolId && n.replace(m.symbolId, !0)) : (n = f._symbolsManager.getSymbol(m.symbolId), n.mcContainer.x = f._bounds.x, n.targetPosition.x = n.mcContainer.x, f._spinStrategy.direction == e.Direction.Down ? (n.mcContainer.y = i - n.bounds.height, i -= n.bounds.height) : (n.mcContainer.y = i, i += n.bounds.height), f.addSymbol(n, f._spinStrategy.direction == e.Direction.Down)), n.cellName = m.name, n.index = m.stripIndex, f._spinStrategy.direction == e.Direction.Down ? (n.targetPosition.y = h - n.bounds.height - 4, h -= n.bounds.height) : (n.targetPosition.y = h, h += n.bounds.height), n.startBlur(f._spinStrategy.blurSpeed * f._bounds.height / 1e3), j++
                    }
                    f.dispatchEvent(new d.events.Event(b.TUMBLE_IN_BEGIN, null, f)), f._spinStrategy.tumbleIn(f._currentSymbols, f.onTumbleInDone)
                }, a)
            }, Object.defineProperty(b.prototype, "isSpinning", {
                get: function() {
                    return this._isSpinning
                },
                set: function(a) {
                    this._isSpinning = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "currentSymbols", {
                get: function() {
                    return this._currentSymbols
                },
                set: function(a) {
                    this._currentSymbols = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "stripInfoName", {
                get: function() {
                    return this._stripInfoName
                },
                set: function(a) {
                    null == this._stripInfoName ? this._stripInfoName = a : this._newStripInfoName = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "name", {
                get: function() {
                    return this._name
                },
                set: function(a) {
                    this._name = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "speed", {
                get: function() {
                    return this._spinStrategy.spinSpeed
                },
                set: function(a) {
                    this._spinStrategy.spinSpeed = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isTumblingOut", {
                get: function() {
                    return this._isTumblingOut
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isTumblingIn", {
                get: function() {
                    return this._isTumblingIn
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        f.START_SPIN_BEGIN = "ReelStartSpinBegin", f.START_SPIN_END = "ReelStartSpinEnd", f.STOP_SPIN_BEGIN = "ReelStopSpinBegin", f.STOP_SPIN_END = "ReelStopSpinEnd", f.TUMBLE_OUT_BEGIN = "ReelTumbleOutBegin", f.TUMBLE_OUT_END = "ReelTumbleOutEnd", f.TUMBLE_IN_BEGIN = "ReelTumbleInBegin", f.TUMBLE_IN_END = "ReelTumbleInEnd", b.Reel = f
    }), define("wcgf/gameComponents/reelsV2/Symbol", ["require", "exports", "wcgf/gameComponents/reelsV2/ISymbol", "wcgf/core/AssetManager", "wcgf/core/AssetPoolManager", "wcgf/gameComponents/MovieClipSequenceItem", "wcgf/sequencers/ISequenceItem", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d, e, f, g, h) {
        "use strict";
        var i = function() {
            function a(a, b) {
                var e = this;
                this._index = 0, this._priority = 0, this._sequenceType = c.SymbolSequenceType.None, this._statesMovieClips = new h.default, this._sequences = new h.default, this._targetPosition = {
                    x: 0,
                    y: 0
                }, this._lastUpdate = null, this._blurTimer = null, this._blurSpeed = 1, this._blurCount = 0, this.onBlurTimer = function() {
                    var a = Date.now() - e._lastUpdate.time,
                        b = e._mcContainer.y - e._lastUpdate.y;
                    0 == b ? e._blurCount++ : e._blurCount = 0, e._blurCount;
                    var c = b / a;
                    e._lastUpdate = {
                        time: Date.now(),
                        y: e._mcContainer.y
                    }, e.setBlur(100 * Math.abs(c) / e._blurSpeed)
                }, this._symbolId = a, this._symbolsManager = b, this._assetId = d.AssetManager.getInstance().getMapId(this._symbolsManager.symbolMapPrefix + this._symbolId), this._mcContainer = new createjs.Container, this._mcContainer.framerate = 30;
                var f = this.getMovieClip("static");
                this._staticMc = f.symbol, this._staticMc.gotoAndStop(0), null == f || f.bounds, this._mcBounds = f.bounds;
                var g = this._mcBounds.getBounds();
                this._bounds = new createjs.Rectangle(0, 0, g.width + 2 * g.x, g.height + 2 * g.y), this._mcContainer.addChild(this._staticMc), this._symbolsManager.symbolsPriority.containsKey(this._symbolId) && (this._priority = this._symbolsManager.symbolsPriority.getValue(this._symbolId)), this._symbolsManager.symbolsSequenceType.containsKey(this._symbolId) && (this._sequenceType = this._symbolsManager.symbolsSequenceType.getValue(this._symbolId))
            }
            return a.prototype.getSequenceItem = function(a, b, c) {
                void 0 === b && (b = 1), void 0 === c && (c = !0);
                var d;
                if (this._sequences.containsKey(a)) d = this._sequences.getValue(a);
                else {
                    var e = this.getMovieClip(a);
                    "static" == a && (e = e.symbol), d = new f.MovieClipSequenceItem(e, "start", "end", b, null, !1, c), d.addEventListener(g.sequencers.SEQUENCE_START, this.onSequenceStart, this), this._sequences.setValue(a, d)
                }
                return d
            }, a.prototype.setStatic = function(a) {
                void 0 === a && (a = !0), this._sequences.forEach(function(a, b) {
                    b.stopSequence(!0)
                }), this._mcContainer.removeAllChildren(), this._mcContainer.addChild(this._staticMc), a && this.resetContainer()
            }, a.prototype.setBlur = function(a) {
                var b = Math.min(Math.max(Math.round(a) - 1, 0), 99);
                this._staticMc.gotoAndStop(b)
            }, a.prototype.startBlur = function(a) {
                void 0 === a && (a = 1), this._blurSpeed = a, this._blurSpeed > 0 && (this._lastUpdate = {
                    time: Date.now(),
                    y: this._mcContainer.y
                }, this._blurTimer = setInterval(this.onBlurTimer, 100))
            }, a.prototype.stopBlur = function() {
                this._blurSpeed > 0 && this.setBlur(0), clearInterval(this._blurTimer)
            }, a.prototype.resetContainer = function() {
                this._symbolsManager.addSymbolToReelContainer(this)
            }, a.prototype.onSequenceStart = function(a) {
                this._sequences.forEach(function(b, c) {
                    c != a.target && c.stopSequence(!0)
                }), this._mcContainer.removeAllChildren(), this._mcContainer.addChild(a.target.mc)
            }, a.prototype.gotoAndStop = function(a, b) {
                this._sequences.forEach(function(a, b) {
                    b.stopSequence(!0)
                });
                var c = this.getMovieClip(a);
                "static" == a && (c = c.symbol), c.gotoAndStop(b)
            }, a.prototype.checkIn = function() {
                this.removeFromStage();
                var a = this;
                this._statesMovieClips.forEach(function(b, c) {
                    e.AssetPoolManager.getInstance().returnAsset(a._assetId + "_" + b, c), a._statesMovieClips.remove(b)
                }), this._statesMovieClips = null, this._mcContainer = null, this._bounds = null, this._sequences = null
            }, a.prototype.removeFromStage = function() {
                this.stopBlur(), null != this._mcContainer.parent && this._mcContainer.parent.removeChild(this._mcContainer), this.clearSequenceItems()
            }, a.prototype.clearSequenceItems = function() {
                var a = this;
                this._sequences.forEach(function(b, c) {
                    c.removeEventListener(g.sequencers.SEQUENCE_START, a.onSequenceStart, this), c.stopSequence(!0)
                }), this._sequences.clear()
            }, a.prototype.replace = function(a, b) {
                void 0 === b && (b = !0);
                var c = this._symbolsManager.getSymbol(a);
                if (null != c) {
                    this.clearSequenceItems(), this._mcContainer.removeAllChildren();
                    var f = this;
                    this._statesMovieClips.forEach(function(a, b) {
                        e.AssetPoolManager.getInstance().returnAsset(f._assetId + "_" + a, b), f._statesMovieClips.remove(a)
                    }), this._symbolId = c.symbolId, this._priority = c.priority, this._sequenceType = c.sequenceType, this._assetId = d.AssetManager.getInstance().getMapId(this._symbolsManager.symbolMapPrefix + this._symbolId);
                    var g = c.getMovieClip("static");
                    this._statesMovieClips.setValue("static", g), this._mcBounds = g.bounds;
                    var h = this._mcBounds.getBounds();
                    this._bounds = new createjs.Rectangle(0, 0, h.width + 2 * h.x, h.height + 2 * h.y);
                    var i = this._staticMc.currentFrame || 0;
                    this._staticMc = g.symbol, this._staticMc.gotoAndStop(i), this._mcContainer.addChild(this._staticMc), b && this._symbolsManager.addSymbolToReelContainer(this)
                }
            }, a.prototype.getMovieClip = function(a) {
                if (!this._statesMovieClips.containsKey(a)) {
                    var b = e.AssetPoolManager.getInstance().getAsset(this._assetId + "_" + a);
                    null != b && this._statesMovieClips.setValue(a, b)
                }
                return this._statesMovieClips.getValue(a)
            }, Object.defineProperty(a.prototype, "symbolId", {
                get: function() {
                    return this._symbolId
                },
                set: function(a) {
                    this._symbolId = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "index", {
                get: function() {
                    return this._index
                },
                set: function(a) {
                    this._index = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "cellName", {
                get: function() {
                    return this._cellName
                },
                set: function(a) {
                    this._cellName = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "priority", {
                get: function() {
                    return this._priority
                },
                set: function(a) {
                    this._priority = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "sequenceType", {
                get: function() {
                    return this._sequenceType
                },
                set: function(a) {
                    this._sequenceType = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "targetPosition", {
                get: function() {
                    return this._targetPosition
                },
                set: function(a) {
                    this._targetPosition = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "mcContainer", {
                get: function() {
                    return this._mcContainer
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "bounds", {
                get: function() {
                    return this._bounds
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "mcBounds", {
                get: function() {
                    return this._mcBounds
                },
                enumerable: !0,
                configurable: !0
            }), a
        }();
        b.Symbol = i
    }), define("wcgf/gameComponents/reelsV2/SymbolsManager", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/gameComponents/reelsV2/Symbol", "wcgf/core/AssetManager", "wcgf/core/AssetPoolManager"], function(a, b, c, d, e, f) {
        "use strict";
        var g;
        ! function(a) {
            a[a.TopToBottom = 0] = "TopToBottom", a[a.BottomToTop = 1] = "BottomToTop"
        }(g = b.SortType || (b.SortType = {}));
        var h = function() {
            function a(a, b, d, e, f) {
                void 0 === d && (d = null), void 0 === e && (e = ""), this._symbolMapPrefix = "", this._dynamicSymbols = new c.default, this._symbolsPriority = new c.default, this._symbolsSequenceType = new c.default, this._symbolsLayers = new c.default, this._sortTopToBottom = null, this._symbolsContainer = a, this._stripsInfo = b, this._symbolMapPrefix = e, this._sortTopToBottom = f, this.initPool(d)
            }
            return a.prototype.initPool = function(a) {
                if (null != a)
                    for (var b = 0, c = a; b < c.length; b++)
                        for (var d = c[b], g = e.AssetManager.getInstance().getMapId(d.symbolId), h = 0, i = d.states; h < i.length; h++) {
                            var j = i[h];
                            f.AssetPoolManager.getInstance().initAsset(g + "_" + j.state, j.initCount, j.max)
                        }
            }, a.prototype.getSymbol = function(a) {
                var b = a;
                return this._dynamicSymbols.containsKey(a) && (b = this._dynamicSymbols.getValue(a)), new d.Symbol(b, this)
            }, a.prototype.addSymbolToReelContainer = function(a) {
                if (this._symbolsLayers.containsKey(a.priority)) null != this._sortTopToBottom && this.sortSymbolsLayer();
                else {
                    var b = new createjs.Container;
                    this._symbolsContainer.addChild(b), this._symbolsLayers.setValue(a.priority, b), this.sortSymbolsLayer()
                }
                var c = this._symbolsLayers.getValue(a.priority);
                a.mcContainer.parent != c && (null != a.mcContainer.parent && a.mcContainer.parent.removeChild(a.mcContainer), this._symbolsLayers.getValue(a.priority).addChild(a.mcContainer))
            }, a.prototype.sortSymbolsLayer = function() {
                var a = new Array;
                this._symbolsLayers.forEach(function(b, c) {
                    a.push({
                        priority: b,
                        container: c
                    })
                }), a.sort(function(a, b) {
                    return a.priority - b.priority
                });
                for (var b = 0; b < a.length; b++) this._sortTopToBottom == g.TopToBottom ? a[b].container.children.sort(function(a, b) {
                    return a.y - b.y
                }) : this._sortTopToBottom == g.BottomToTop && a[b].container.children.sort(function(a, b) {
                    return b.y - a.y
                }), this._symbolsContainer.setChildIndex(a[b].container, b)
            }, a.prototype.getStrip = function(a) {
                return this._stripsInfo.getValue(a)
            }, a.prototype.getSymbolIdAtIndex = function(a, b, c) {
                return this._stripsInfo.getValue(a).strips.getValue(b).stops[c].symbolId
            }, a.prototype.getSymbolAtIndex = function(a, b, c) {
                return this.getSymbol(this.getSymbolIdAtIndex(a, b, c))
            }, a.prototype.getStripIndex = function(a, b, c, d) {
                var e = this._stripsInfo.getValue(a).strips.getValue(b),
                    f = c + d;
                return f %= e.stops.length, f < 0 && (f = e.stops.length + f), f
            }, Object.defineProperty(a.prototype, "dynamicSymbols", {
                get: function() {
                    return this._dynamicSymbols
                },
                set: function(a) {
                    this._dynamicSymbols = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "symbolsSequenceType", {
                get: function() {
                    return this._symbolsSequenceType
                },
                set: function(a) {
                    this._symbolsSequenceType = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "symbolsPriority", {
                get: function() {
                    return this._symbolsPriority
                },
                set: function(a) {
                    this._symbolsPriority = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "symbolMapPrefix", {
                get: function() {
                    return this._symbolMapPrefix
                },
                set: function(a) {
                    this._symbolMapPrefix = a
                },
                enumerable: !0,
                configurable: !0
            }), a
        }();
        b.SymbolsManager = h
    }), define("wcgf/gameComponents/reelsV2/slotReelSet/ISlotReelSet", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reelsV2/tumblingReelSet/ITumblingReelSet", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/gameComponents/reelsV2/combinedReelSet/ReelSet", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/core/events", "wcgf/gameComponents/reelsV2/SymbolsManager", "wcgf/gameComponents/reelsV2/combinedReelSet/Reel"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b(b, d, e, f) {
                void 0 === e && (e = "");
                var g = a.call(this) || this;
                return g._reels = new c.default, g._symbolsPriority = new c.default, g._symbolsSequenceType = new c.default, g._symbolMapPrefix = "", g._sortTopToBottom = null, g._spinStarting = 0, g._isSpinning = !1, g._isTumblingOut = !1, g._isTumblingIn = !1, g._reelsContainer = b, g._symbolMapPrefix = e, g._spinStrategies = d, g._sortTopToBottom = f, g
            }
            return __extends(b, a), b.prototype.init = function(a, b, c, d, g) {
                void 0 === g && (g = null), this._symbolsManager = null == g ? new e.SymbolsManager(this._reelsContainer, a, c, this._symbolMapPrefix, this._sortTopToBottom) : g, this._dynamicSymbols = d, null != this._dynamicSymbols && (this._symbolsManager.dynamicSymbols = this._dynamicSymbols), this._symbolsManager.symbolsPriority = this._symbolsPriority, this._symbolsManager.symbolsSequenceType = this._symbolsSequenceType;
                var h = this;
                this._symbolsManager.getStrip(this._stripInfoName).strips.forEach(function(a, c) {
                    var d = new f.Reel(a, h._reelsContainer, h._reelsContainer[a], h._spinStrategies.getValue(a), h._symbolsManager);
                    d.stripInfoName = h._stripInfoName, h._reels.setValue(d.name, d), d.init(b.getValue(h._populationOutcomeName).reels.getValue(d.name))
                })
            }, b.prototype.spin = function(a, b) {
                if (void 0 === b && (b = !0), !this._isSpinning) {
                    this._spinStarting = this._reels.size(), this._isSpinning = !0;
                    var c = null;
                    null != a && (c = a.concat());
                    var d = this;
                    this._reels.forEach(function(a, e) {
                        var g = 0;
                        null != c && c.length > 0 && (g = c.shift()), e.addEventListener(f.Reel.START_SPIN_BEGIN, d.onReelStartSpinBegin, d), e.addEventListener(f.Reel.START_SPIN_END, d.onReelStartSpinEnd, d), e.spin(g, b)
                    })
                }
            }, b.prototype.onReelStartSpinBegin = function(a) {
                a.target.removeEventListener(f.Reel.START_SPIN_BEGIN, this.onReelStartSpinBegin, this), this.dispatchEvent(new d.events.Event(b.REEL_START_SPIN_BEGIN, a.target, this))
            }, b.prototype.onReelStartSpinEnd = function(a) {
                a.target.removeEventListener(f.Reel.START_SPIN_END, this.onReelStartSpinEnd, this), this._spinStarting -= 1, this.dispatchEvent(new d.events.Event(b.REEL_START_SPIN_END, a.target, this))
            }, b.prototype.stopSpin = function(a, c) {
                if (this._isSpinning)
                    if (this._stopOutcomes = a, this._stopDelays = c, this._spinStarting <= 0) {
                        var e = c.concat(),
                            g = this;
                        this._reels.forEach(function(b, c) {
                            var h = 0;
                            e.length > 0 && (h = e.shift()), c.isSpinning ? (c.addEventListener(f.Reel.STOP_SPIN_BEGIN, g.onReelStopSpinBegin, g), c.addEventListener(f.Reel.STOP_SPIN_END, g.onReelStopSpinEnd, g), c.stopSpin(h, a.getValue(g._populationOutcomeName).reels.getValue(b))) : g.onReelStopSpinEnd(new d.events.Event(f.Reel.STOP_SPIN_END, null, c))
                        })
                    } else this.addEventListener(b.REEL_START_SPIN_END, this.delayStop, this)
            }, b.prototype.delayStop = function(a) {
                this.removeEventListener(b.REEL_START_SPIN_END, this.delayStop, this), this.stopSpin(this._stopOutcomes, this._stopDelays)
            }, b.prototype.onReelStopSpinBegin = function(a) {
                null != a && null != a.target && a.target.removeEventListener(f.Reel.STOP_SPIN_BEGIN, this.onReelStopSpinEnd, this), this.dispatchEvent(new d.events.Event(b.REEL_STOP_SPIN_BEGIN, a.target, this))
            }, b.prototype.onReelStopSpinEnd = function(a) {
                null != a && null != a.target && a.target.removeEventListener(f.Reel.STOP_SPIN_END, this.onReelStopSpinEnd, this), this.dispatchEvent(new d.events.Event(b.REEL_STOP_SPIN_END, a.target, this));
                var c = !0;
                this._reels.forEach(function(a, b) {
                    b.isSpinning && (c = !1)
                }), c && (this.dispatchEvent(new d.events.Event(b.ALL_REEL_STOP, null, this)), this._isSpinning = !1)
            }, b.prototype.reset = function(a, b) {
                var c = b || this._populationOutcomeName;
                this._reels.forEach(function(b, d) {
                    d.reset(a.getValue(c).reels.getValue(b))
                }), this._spinStarting = 0, this._isSpinning = !1
            }, b.prototype.tumbleOut = function(a, b) {
                void 0 === b && (b = !0), this._isTumblingOut = !0;
                var c = null;
                null != a && (c = a.concat());
                var d = this;
                this._reels.forEach(function(a, e) {
                    var g = 0;
                    null != c && c.length > 0 && (g = c.shift()), e.addEventListener(f.Reel.TUMBLE_OUT_BEGIN, d.onReelTumbleOutBegin, d), e.addEventListener(f.Reel.TUMBLE_OUT_END, d.onReelTumbleOutEnd, d), e.tumbleOut(g, b)
                })
            }, b.prototype.onReelTumbleOutBegin = function(a) {
                null != a && null != a.target && a.target.removeEventListener(f.Reel.TUMBLE_OUT_BEGIN, this.onReelTumbleOutBegin, this), this.dispatchEvent(new d.events.Event(b.REEL_TUMBLE_OUT_BEGIN, a.target, this))
            }, b.prototype.onReelTumbleOutEnd = function(a) {
                null != a && null != a.target && a.target.removeEventListener(f.Reel.TUMBLE_OUT_END, this.onReelTumbleOutEnd, this), this.dispatchEvent(new d.events.Event(b.REEL_TUMBLE_OUT_END, a.target, this));
                var c = !0;
                this._reels.forEach(function(a, b) {
                    b.isTumblingOut && (c = !1)
                }), c && (this._isTumblingOut = !1, this.dispatchEvent(new d.events.Event(b.ALL_REEL_TUMBLE_OUT_END, null, this)))
            }, b.prototype.tumbleIn = function(a, b) {
                this._isTumblingIn = !0;
                var c = b.concat(),
                    d = this;
                this._reels.forEach(function(b, e) {
                    var g = 0;
                    c.length > 0 && (g = c.shift()), e.addEventListener(f.Reel.TUMBLE_IN_BEGIN, d.onReelTumbleInBegin, d), e.addEventListener(f.Reel.TUMBLE_IN_END, d.onReelTumbleInEnd, d), e.tumbleIn(g, a.getValue(d._populationOutcomeName).reels.getValue(b))
                })
            }, b.prototype.onReelTumbleInBegin = function(a) {
                null != a && null != a.target && a.target.removeEventListener(f.Reel.TUMBLE_IN_BEGIN, this.onReelTumbleInBegin, this), this.dispatchEvent(new d.events.Event(b.REEL_TUMBLE_IN_BEGIN, a.target, this))
            }, b.prototype.onReelTumbleInEnd = function(a) {
                null != a && null != a.target && a.target.removeEventListener(f.Reel.TUMBLE_IN_END, this.onReelTumbleInEnd, this), this.dispatchEvent(new d.events.Event(b.REEL_TUMBLE_IN_END, a.target, this));
                var c = !0;
                this._reels.forEach(function(a, b) {
                    b.isTumblingIn && (c = !1)
                }), c && (this._isTumblingIn = !1, this.dispatchEvent(new d.events.Event(b.ALL_REEL_TUMBLE_IN_END, null, this)))
            }, Object.defineProperty(b.prototype, "stripInfoName", {
                get: function() {
                    return this._stripInfoName
                },
                set: function(a) {
                    if (this._stripInfoName = a, null != this._reels) {
                        var b = this;
                        this._reels.forEach(function(a, c) {
                            c.stripInfoName = b._stripInfoName
                        })
                    }
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "populationOutcomeName", {
                get: function() {
                    return this._populationOutcomeName
                },
                set: function(a) {
                    this._populationOutcomeName = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "dynamicSymbols", {
                get: function() {
                    return this._dynamicSymbols
                },
                set: function(a) {
                    this._dynamicSymbols = a, null != this._symbolsManager && (this._symbolsManager.dynamicSymbols = this._dynamicSymbols)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "symbolsSequenceType", {
                get: function() {
                    return this._symbolsSequenceType
                },
                set: function(a) {
                    this._symbolsSequenceType = a, null != this._symbolsManager && (this._symbolsManager.symbolsSequenceType = this._symbolsSequenceType)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "symbolsPriority", {
                get: function() {
                    return this._symbolsPriority
                },
                set: function(a) {
                    this._symbolsPriority = a, null != this._symbolsManager && (this._symbolsManager.symbolsPriority = this._symbolsPriority)
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "reels", {
                get: function() {
                    return this._reels
                },
                set: function(a) {
                    this._reels = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isTumblingOut", {
                get: function() {
                    return this._isTumblingOut
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isTumblingIn", {
                get: function() {
                    return this._isTumblingIn
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSpinning", {
                get: function() {
                    return this._isSpinning
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        g.REEL_START_SPIN_BEGIN = "ReelSetReelStartSpinBegin", g.REEL_START_SPIN_END = "ReelSetReelStartSpinEnd", g.REEL_STOP_SPIN_BEGIN = "ReelSetReelStopSpinBegin", g.REEL_STOP_SPIN_END = "ReelSetReelStopSpinEnd", g.ALL_REEL_STOP = "ReelSetAllReelStop", g.REEL_TUMBLE_OUT_BEGIN = "ReelSetReelTumbleOutBegin", g.REEL_TUMBLE_OUT_END = "ReelSetReelTumbleOutEnd", g.ALL_REEL_TUMBLE_OUT_END = "ReelSetAllReelTumbleOutEnd", g.REEL_TUMBLE_IN_BEGIN = "ReelSetReelTumbleInBegin", g.REEL_TUMBLE_IN_END = "ReelSetReelTumbleInEnd", g.ALL_REEL_TUMBLE_IN_END = "ReelSetALLReelTumbleInEnd", b.ReelSet = g
    }), define("wcgf/gameComponents/transitions/TransitionsViewController", ["require", "exports", "wcgf/core/events", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b) {
                var c = a.call(this) || this;
                return c._transitions = new d.default, c._skin = b, c
            }
            return __extends(b, a), b.prototype.init = function(a) {
                for (var b = 0, c = a; b < c.length; b++) {
                    var d = c[b];
                    this._transitions.setValue(d.transitionId, d), d.init()
                }
            }, b.prototype.startOutTransition = function(a) {
                null != this._currentTransition && this._currentTransition.stopTransition(), this._currentTransition = this._transitions.getValue(a), this._currentTransition.addEventListener(b.OUT_SEQ_END, this.onOutSeqEnd, this), this._currentTransition.startOutTransition()
            }, b.prototype.onOutSeqEnd = function(a) {
                this.dispatchEvent(new c.events.Event(b.OUT_SEQ_END, null, this))
            }, b.prototype.startInTransition = function(a) {
                void 0 === a && (a = null), this._transitions.containsKey(a) && (this._currentTransition = this._transitions.getValue(a)), null != this._currentTransition && (this._currentTransition.addEventListener(b.IN_SEQ_END, this.onInSeqEnd, this), this._currentTransition.startInTransition())
            }, b.prototype.onInSeqEnd = function(a) {
                this.dispatchEvent(new c.events.Event(b.IN_SEQ_END, null, this)), this._currentTransition.stopTransition(), this._currentTransition = null
            }, b.prototype.getCurrentTransition = function() {
                return this._currentTransition
            }, b.prototype.getTransition = function(a) {
                return this._transitions.containsKey(a) ? this._transitions.getValue(a) : null
            }, b
        }(c.events.EventDispatcher);
        e.OUT_SEQ_END = "TransitionManagerOnOutSeqEnd", e.IN_SEQ_END = "TransitionManagerOnInSeqEnd", b.TransitionsViewController = e
    }), define("wcgf/gameComponents/transitions/GenericTransition", ["require", "exports", "wcgf/core/events", "wcgf/core/AssetManager", "wcgf/gameComponents/MovieClipSequenceItem", "wcgf/sequencers/ISequenceItem", "wcgf/gameComponents/transitions/TransitionsViewController"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h = function(a) {
            function b(b, c) {
                var d = a.call(this) || this;
                return d._landscapeAnimId = b, d._portraitAnimId = c, d
            }
            return __extends(b, a), b.prototype.init = function() {
                this._landscapeAnim = d.AssetManager.getInstance().getAsset(this._landscapeAnimId), this._portraitAnim = d.AssetManager.getInstance().getAsset(this._portraitAnimId), this.onOrientationChange(null), d.AssetManager.getInstance().addEventListener(d.AssetManager.ORIENTATION_CHANGE, this.onOrientationChange, this)
            }, b.prototype.onOrientationChange = function(a) {
                var b = d.AssetManager.getInstance().getOrientation(),
                    c = "off",
                    e = !0;
                null != this._currentAnim && (e = this._currentAnim.paused, c = this._currentAnim.currentFrame, this._currentAnim.stop()), "landscape" == b && null != this._landscapeAnim ? this._currentAnim = this._landscapeAnim : null != this._portraitAnim && (this._currentAnim = this._portraitAnim), null != this._currentSeq && null != this._currentAnim && (this._currentSeq.mc = this._currentAnim), e ? null != this._currentAnim && this._currentAnim.gotoAndStop(c) : null != this._currentAnim && this._currentAnim.gotoAndPlay(c)
            }, b.prototype.startOutTransition = function() {
                this.stopTransition(), null != this._currentAnim && (this._currentSeq = new e.MovieClipSequenceItem(this._currentAnim, "outStart", "outEnd", 1), this._currentSeq.addEventListener(f.sequencers.SEQUENCE_END, this.onOutSeqDone, this), this._currentSeq.startSequence())
            }, b.prototype.onOutSeqDone = function(a) {
                this.stopTransition(), null != this._currentAnim && (this._currentSeq = new e.MovieClipSequenceItem(this._currentAnim, "loopStart", "loopEnd", 0), this._currentSeq.startSequence()), this.dispatchEvent(new c.events.Event(g.TransitionsViewController.OUT_SEQ_END, null, this))
            }, b.prototype.startInTransition = function() {
                this.stopTransition(), null != this._currentAnim && (this._currentSeq = new e.MovieClipSequenceItem(this._currentAnim, "inStart", "inEnd", 1), this._currentSeq.addEventListener(f.sequencers.SEQUENCE_END, this.onInSeqDone, this), this._currentSeq.startSequence())
            }, b.prototype.onInSeqDone = function(a) {
                this.stopTransition(!0), this.dispatchEvent(new c.events.Event(g.TransitionsViewController.IN_SEQ_END, null, this))
            }, b.prototype.stopTransition = function(a) {
                void 0 === a && (a = !1), null != this._currentSeq && (this._currentSeq.removeEventListener(f.sequencers.SEQUENCE_END, this.onOutSeqDone, this), this._currentSeq.removeEventListener(f.sequencers.SEQUENCE_END, this.onInSeqDone, this), this._currentSeq.stopSequence(!0), this._currentSeq.resetSequence(), this._currentSeq = null), a ? (null != this._landscapeAnim && this._landscapeAnim.gotoAndStop("off"), null != this._portraitAnim && this._portraitAnim.gotoAndStop("off")) : (null != this._landscapeAnim && this._landscapeAnim.stop(), null != this._portraitAnim && this._portraitAnim.stop())
            }, b.prototype.setData = function(a) {}, b
        }(c.events.EventDispatcher);
        b.GenericTransition = h
    }), define("wcgf/gameComponents/tutorial/TutorialManager", ["require", "exports", "wcgf/core/events", "wcgf/core/AssetManager", "wcgf/core/loaders", "wcgf/core/CookieManager"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b() {
                return a.call(this) || this
            }
            return __extends(b, a), b.prototype.init = function(a, b) {
                void 0 === b && (b = null), this._tutorialContainer = a, this._tutorialLoader = b, null != this._tutorialLoader && (this._tutorialLoader.gotoAndStop(0), this._tutorialLoader.visible = !1)
            }, b.prototype.showTutorial = function(a) {
                this._tutorial = a;
                var g = f.CookieManager.getInstance().getObject(this._tutorial.tutorialId);
                if (null == g || 1 != g.donotshow) {
                    this.dispatchEvent(new c.events.Event(b.TUTORIAL_START, null, this));
                    if (null == d.AssetManager.getInstance().getSkin(this._tutorial.tutorialId)) {
                        null != this._tutorialLoader && (this._tutorialLoader.visible = !0, this._tutorialLoader.play());
                        var h = new e.loaders.DeferredAssetLoader;
                        h.addEventListener(e.loaders.CJSAssetLoader.PROGRESS, this.onTutorialLoadProgress, this), h.addEventListener(e.loaders.CJSAssetLoader.COMPLETE, this.onTutorialLoaderComplete, this), h.load([this._tutorial.tutorialId])
                    } else this.onTutorialLoaderComplete(null)
                } else this.dispatchEvent(new c.events.Event(b.TUTORIAL_END, null, this))
            }, b.prototype.onTutorialLoadProgress = function(a) {}, b.prototype.onTutorialLoaderComplete = function(a) {
                null != this._tutorialLoader && (this._tutorialLoader.stop(), this._tutorialLoader.visible = !1), this._tutorialSkin = d.AssetManager.getInstance().getSkin(this._tutorial.tutorialId), null != this._tutorialSkin && (this._tutorialContainer.addChild(this._tutorialSkin), this._tutorialSkin.stage.update(), this._tutorial.init(), this._tutorial.addEventListener(b.TUTORIAL_END, this.onTutorialDone, this), this._tutorial.start())
            }, b.prototype.onTutorialDone = function(a) {
                this._tutorial.removeEventListener(b.TUTORIAL_END, this.onTutorialDone, this), this._tutorial.stop(), this._tutorialContainer.removeChild(this._tutorialSkin), this._tutorial = null, this._tutorialSkin = null, this.dispatchEvent(new c.events.Event(b.TUTORIAL_END, null, this))
            }, b
        }(c.events.EventDispatcher);
        g.TUTORIAL_START = "TutorialManagerTutorialStart", g.TUTORIAL_END = "TutorialManagerTutorialEnd", b.TutorialManager = g
    }), define("wcgf/gameComponents/tutorial/PageControls", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/BasicButtonController"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b) {
                var c = a.call(this) || this;
                return c._page = 0, c._pageCount = 0, c._enable = !0, c._skin = b, c
            }
            return __extends(b, a), b.prototype.init = function(a) {
                var b = this._skin.btnNext;
                null != b && (this._btnNext = new d.BasicButtonController(b), this._btnNext.init(null), this._btnNext.addEventListener(d.BasicButtonController.MOUSE_CLICK, this.onBtnNextClick, this));
                var c = this._skin.btnLast;
                if (null != c && (this._btnLast = new d.BasicButtonController(c), this._btnLast.init(null), this._btnLast.addEventListener(d.BasicButtonController.MOUSE_CLICK, this.onBtnLastClick, this)), this._pageDots = this._skin.pageDots, null != this._pageDots)
                    for (var e = 0; e < this._pageDots.numChildren; e++) this._pageDots.getChildAt(e).gotoAndStop("off")
            }, b.prototype.setPage = function(a, b) {
                if (this._page = a, this._pageCount = b, null != this._btnNext && (this._btnNext.enable = this._page < this._pageCount - 1 && this._enable), null != this._btnLast && (this._btnLast.enable = this._page > 0 && this._enable), null != this._pageDots) {
                    for (var c = 0; c < this._pageDots.numChildren; c++) this._pageDots.getChildAt(c).gotoAndStop("off");
                    var d = this._pageDots["d" + this._page];
                    null != d && d.gotoAndStop("on")
                }
            }, b.prototype.onBtnNextClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.NEXT_BUTTON_CLICK, null, this))
            }, b.prototype.onBtnLastClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.LAST_BUTTON_CLICK, null, this))
            }, Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable = a, this.setPage(this._page, this._pageCount)
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        e.NEXT_BUTTON_CLICK = "PageControlsNextButtonClick", e.LAST_BUTTON_CLICK = "PageControlsLastButtonClick", b.PageControls = e
    }), define("wcgf/gameComponents/tutorial/TutorialControls", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/LabeledCheckBoxController", "wcgf/gameComponents/tutorial/PageControls", "wcgf/core/TextManager", "wcgf/coreComponents/BasicCheckBoxController", "wcgf/coreComponents/BasicButtonController"], function(a, b, c, d, e, f, g, h) {
        "use strict";
        var i = function(a) {
            function b(b, c) {
                var d = a.call(this) || this;
                return d._landscapeSkin = b, d._portraitSkin = c, d
            }
            return __extends(b, a), b.prototype.init = function(a) {
                if (null != this._landscapeSkin) {
                    var b = this._landscapeSkin.checkBox;
                    null != b && (this._chkBox_landscape = new d.LabeledCheckBoxController(b), this._chkBox_landscape.label = f.TextManager.getInstance().getText("DoNotShowAgain"), this._chkBox_landscape.init(a), this._chkBox_landscape.addEventListener(g.BasicCheckBoxController.CHECKED_VALUE_CHANGE, this.onChkBoxValueChange, this));
                    var c = this._landscapeSkin.pageControls;
                    null != c && (this._pageControlsLandscape = new e.PageControls(this._landscapeSkin.pageControls), this._pageControlsLandscape.init(a), this._pageControlsLandscape.addEventListener(e.PageControls.NEXT_BUTTON_CLICK, this.onNextButtonClick, this), this._pageControlsLandscape.addEventListener(e.PageControls.LAST_BUTTON_CLICK, this.onLastButtonClick, this));
                    var i = this._landscapeSkin.btnClose;
                    if (null != i) {
                        var j = new h.BasicButtonController(i);
                        j.init(a), j.addEventListener(h.BasicButtonController.MOUSE_CLICK, this.onBtnCloseClick, this)
                    }
                }
                if (null != this._portraitSkin) {
                    var b = this._portraitSkin.checkBox;
                    null != b && (this._chkBox_portrait = new d.LabeledCheckBoxController(b), this._chkBox_portrait.label = f.TextManager.getInstance().getText("DoNotShowAgain"), this._chkBox_portrait.init(a), this._chkBox_portrait.addEventListener(g.BasicCheckBoxController.CHECKED_VALUE_CHANGE, this.onChkBoxValueChange, this));
                    var c = this._portraitSkin.pageControls;
                    null != c && (this._pageControlsPortrait = new e.PageControls(this._portraitSkin.pageControls), this._pageControlsPortrait.init(a), this._pageControlsPortrait.addEventListener(e.PageControls.NEXT_BUTTON_CLICK, this.onNextButtonClick, this), this._pageControlsPortrait.addEventListener(e.PageControls.LAST_BUTTON_CLICK, this.onLastButtonClick, this));
                    var i = this._portraitSkin.btnClose;
                    if (null != i) {
                        var j = new h.BasicButtonController(i);
                        j.init(a), j.addEventListener(h.BasicButtonController.MOUSE_CLICK, this.onBtnCloseClick, this)
                    }
                }
            }, b.prototype.onChkBoxValueChange = function(a) {
                var b = a.data;
                a.target == this._chkBox_landscape ? null != this._chkBox_portrait && (this._chkBox_portrait.checked = b) : null != this._chkBox_landscape && (this._chkBox_landscape.checked = b), this.dispatchEvent(new c.events.Event(g.BasicCheckBoxController.CHECKED_VALUE_CHANGE, b, this))
            }, b.prototype.onNextButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(e.PageControls.NEXT_BUTTON_CLICK, null, this))
            }, b.prototype.onLastButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(e.PageControls.LAST_BUTTON_CLICK, null, this))
            }, b.prototype.onBtnCloseClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.CLOSE_CLICK, null, this))
            }, b.prototype.setPage = function(a, b) {
                null != this._pageControlsLandscape && this._pageControlsLandscape.setPage(a, b), null != this._pageControlsPortrait && this._pageControlsPortrait.setPage(a, b)
            }, b.prototype.setPageControlEnable = function(a) {
                null != this._pageControlsLandscape && (this._pageControlsLandscape.enable = a), null != this._pageControlsPortrait && (this._pageControlsPortrait.enable = a)
            }, b
        }(c.events.EventDispatcher);
        i.CLOSE_CLICK = "TutorialControlsCloseClick", b.TutorialControls = i
    }), define("wcgf/gameComponents/tutorial/GenericTutorial", ["require", "exports", "wcgf/core/events", "wcgf/gameComponents/tutorial/TutorialManager", "wcgf/core/AssetManager", "wcgf/gameComponents/tutorial/TutorialControls", "wcgf/gameComponents/MovieClipSequenceItem", "wcgf/sequencers/ISequenceItem", "wcgf/gameComponents/tutorial/PageControls", "wcgf/coreComponents/BasicCheckBoxController", "wcgf/core/CookieManager"], function(a, b, c, d, e, f, g, h, i, j, k) {
        "use strict";
        var l = function(a) {
            function b(b, c, d, e) {
                var f = a.call(this) || this;
                return f._currentLabelIndex = 0, f.tutorialId = b, f._landscapeAnimId = c, f._portraitAnimId = d, f._labels = e, f
            }
            return __extends(b, a), b.prototype.init = function() {
                this._skin = e.AssetManager.getInstance().getAsset(this.tutorialId), this._landscapeAnim = this._skin[this._landscapeAnimId], null != this._landscapeAnim && (this._landscapeAnim.gotoAndStop(this._labels[0] || 0), this._landscapeAnim.visible = !1), this._portraitAnim = this._skin[this._portraitAnimId], null != this._portraitAnim && (this._portraitAnim.gotoAndStop(this._labels[0] || 0), this._portraitAnim.visible = !1), this._tutorialControls = new f.TutorialControls(null != this._landscapeAnim ? this._landscapeAnim.tutorialControls : null, null != this._portraitAnim ? this._portraitAnim.tutorialControls : null), this._tutorialControls.init(null), this._tutorialControls.addEventListener(f.TutorialControls.CLOSE_CLICK, this.onTutorialCloseClick, this), this._tutorialControls.addEventListener(i.PageControls.NEXT_BUTTON_CLICK, this.onNextButtonClick, this), this._tutorialControls.addEventListener(i.PageControls.LAST_BUTTON_CLICK, this.onLastButtonClick, this), this._tutorialControls.addEventListener(j.BasicCheckBoxController.CHECKED_VALUE_CHANGE, this.onCheckBoxValueChange, this), this._tutorialControls.setPage(0, this._labels.length - 1), this.onOrientationChange(null), e.AssetManager.getInstance().addEventListener(e.AssetManager.ORIENTATION_CHANGE, this.onOrientationChange, this)
            }, b.prototype.start = function() {
                this._currentLabelIndex = 0, this.playLabel(this._currentLabelIndex), this.dispatchEvent(new c.events.Event(d.TutorialManager.TUTORIAL_START))
            }, b.prototype.playLabel = function(a) {
                null != this._currentAnim && (null != this._tutorialControls && this._tutorialControls.setPageControlEnable(!1), this._currentSeq = new g.MovieClipSequenceItem(this._currentAnim, this._labels[a], this._labels[a + 1], 1), this._currentSeq.addEventListener(h.sequencers.SEQUENCE_END, this.onAnimationEnd, this), this._currentSeq.startSequence())
            }, b.prototype.onAnimationEnd = function(a) {
                a.target.removeEventListener(h.sequencers.SEQUENCE_END, this.onAnimationEnd, this), this._currentSeq = null, this._tutorialControls.setPageControlEnable(!0), this._currentLabelIndex >= this._labels.length - 2 && this.dispatchEvent(new c.events.Event(d.TutorialManager.TUTORIAL_END))
            }, b.prototype.onTutorialCloseClick = function(a) {
                null != this._currentSeq && (this._currentSeq.removeEventListener(h.sequencers.SEQUENCE_END, this.onAnimationEnd, this), this._currentSeq.stopSequence(), this._currentSeq = null), null != this._landscapeAnim && this._landscapeAnim.stop(), null != this._portraitAnim && this._portraitAnim.stop(), this.dispatchEvent(new c.events.Event(d.TutorialManager.TUTORIAL_END))
            }, b.prototype.onNextButtonClick = function(a) {
                this._currentLabelIndex++, this._tutorialControls.setPage(this._currentLabelIndex, this._labels.length - 1), this.playLabel(this._currentLabelIndex)
            }, b.prototype.onLastButtonClick = function(a) {
                this._currentLabelIndex >= 1 && (this._currentLabelIndex--, this.playLabel(this._currentLabelIndex), this._tutorialControls.setPage(this._currentLabelIndex, this._labels.length - 1))
            }, b.prototype.onCheckBoxValueChange = function(a) {
                var b = a.data;
                b ? k.CookieManager.getInstance().setObject(this.tutorialId, {
                    donotshow: !0
                }) : k.CookieManager.getInstance().clearObject(this.tutorialId)
            }, b.prototype.stop = function() {}, b.prototype.onOrientationChange = function(a) {
                var b = e.AssetManager.getInstance().getOrientation(),
                    c = this._labels[0] || 0,
                    d = !0;
                null != this._currentAnim && (d = this._currentAnim.paused, c = this._currentAnim.currentFrame, this._currentAnim.stop()), b == e.AssetManager.LANDSCAPE_ORIENTATION && null != this._landscapeAnim ? (null != this._landscapeAnim && (this._landscapeAnim.visible = !0), null != this._portraitAnim && (this._portraitAnim.visible = !1), this._currentAnim = this._landscapeAnim) : null != this._portraitAnim && (null != this._landscapeAnim && (this._landscapeAnim.visible = !1), null != this._portraitAnim && (this._portraitAnim.visible = !0), this._currentAnim = this._portraitAnim), null != this._currentSeq && null != this._currentAnim && (this._currentSeq.mc = this._currentAnim), d ? null != this._currentAnim && this._currentAnim.gotoAndStop(c) : null != this._currentAnim && this._currentAnim.gotoAndPlay(c), this._tutorialControls.setPage(this._currentLabelIndex, this._labels.length - 1)
            }, b
        }(c.events.EventDispatcher);
        b.GenericTutorial = l
    }), define("wcgf/gameComponents/WebFontHelper", ["require", "exports", "wcgf/core/events", "wcgf/vendors/typescript_collections/util", "../vendors/webfontloader/webfont"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b() {
                var d = a.call(this) || this;
                return d.fontServiceHandlers = {
                    custom: d.handleCustomService,
                    google: d.handleGoogleService,
                    typekit: null,
                    fontdeck: null,
                    monotype: null
                }, d.onLoadComplete = function() {
                    d.dispatchEvent(new c.events.Event(b.FONT_LOAD_COMPLETE, null, d))
                }, d.onLoadFail = function() {
                    d.dispatchEvent(new c.events.Event(b.FONT_LOAD_COMPLETE, null, d))
                }, d.onFontInactive = function(a, e) {
                    d.dispatchEvent(new c.events.Event(b.FONT_ERROR, {
                        familyName: a,
                        fvd: e
                    }, d))
                }, d.initWebFontConfig(), d
            }
            return __extends(b, a), b.prototype.initWebFontConfig = function() {
                this.webFontConfig = {
                    timeout: 2e4,
                    active: this.onLoadComplete,
                    inactive: this.onLoadFail,
                    fontinactive: this.onFontInactive
                }
            }, b.prototype.parse = function(a) {
                for (var b in this.fontServiceHandlers) d.has(this.fontServiceHandlers, b) && null != a[b] && null != this.fontServiceHandlers[b] && this.fontServiceHandlers[b].call(this, a[b])
            }, b.prototype.handleGoogleService = function(a) {
                if (null == this.webFontConfig.google && (this.webFontConfig.google = {
                        families: []
                    }), "object" != typeof a) throw new Error("Google font information is invalid");
                if (a instanceof Array) this.addGoogleFamilies(a);
                else if (this.addGoogleFamilies(a.families), null != a.text) {
                    if ("string" != typeof a.text) throw new Error("Google font explicit character data is invalid");
                    this.webFontConfig.google.text = a.text
                }
            }, b.prototype.addGoogleFamilies = function(a) {
                this.webFontConfig.google.families = this.validateAndCombineArrays(this.webFontConfig.google.families, a, "Google font families")
            }, b.prototype.validateAndCombineArrays = function(a, b, c) {
                if (!(b instanceof Array) || 0 == b.length) throw new Error("Invalid list of " + c);
                return a = 0 == a.length ? b : a.concat(b)
            }, b.prototype.handleCustomService = function(a) {
                null == this.webFontConfig.custom && (this.webFontConfig.custom = {}), this.addCustomFamilies(a.families), this.addCustomUrls(a.urls), this.addCustomTestStrings(a.testStrings)
            }, b.prototype.addCustomFamilies = function(a) {
                null == this.webFontConfig.custom.families && (this.webFontConfig.custom.families = []), this.webFontConfig.custom.families = this.validateAndCombineArrays(this.webFontConfig.custom.families, a, "custom font families")
            }, b.prototype.addCustomUrls = function(a) {
                null == this.webFontConfig.custom.urls && (this.webFontConfig.custom.urls = []), this.webFontConfig.custom.urls = this.validateAndCombineArrays(this.webFontConfig.custom.urls, a, "custom font urls")
            }, b.prototype.addCustomTestStrings = function(a) {
                if (null != a) {
                    if ("object" != typeof a) throw new Error("Invalid list of custom font test strings");
                    var b = this.webFontConfig.custom.testStrings;
                    null == b && (b = {});
                    for (var c in a) d.has(a, c) && (b[c] = this.mergeTestStrings(b[c], a[c]));
                    this.webFontConfig.custom.testStrings = b
                }
            }, b.prototype.mergeTestStrings = function(a, b) {
                if ("string" != typeof b) throw new Error("Invalid test string format: " + b);
                return null == a ? b : a + b
            }, b.prototype.loadFonts = function() {
                e.load(this.webFontConfig)
            }, b
        }(c.events.EventDispatcher);
        f.FONT_LOAD_COMPLETE = "WebFontHelper_FontLoadComplete", f.FONT_ERROR = "WebFontHelper_FontError", b.WebFontHelper = f
    }), define("wcgf/gameComponents/wheel/Wheel", ["require", "exports", "wcgf/coreComponents/LabeledTextFieldController", "wcgf/core/AssetManager", "wcgf/core/events"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b._spinning = !1, b.spinDuration = 2500, b.startSpinSpeed = .8, b.slowDownSpeed = 2, b.wedgeValues = ["1", "2", "5", "6", "8", "2X", "4X", "6X", "10X", "25X", "50X", "10", "20", "30", "40", "50", "60", "70", "12", "123", "1234", "12345", "123456", "1sdfsdfsdfsd234567"], b.easeIn = createjs.Ease.quadIn, b.easeOut = createjs.Ease.quadOut, b._assetManager = d.AssetManager.getInstance(), b.skin = b._assetManager.getSkin("Wheel"), b
            }
            return __extends(b, a), b.prototype.init = function() {
                this._innerWheelContainer = this._assetManager.getAsset("innerWheel"), this.wheelStartButton = this._assetManager.getAsset("innerWheel");
                for (var a = 0; a < this.wedgeValues.length; a++) {
                    for (var c = this.wedgeValues[a], d = "", e = 0; e < c.length; e++) d += c[e] + "\n";
                    this.addWedge(d).rotation = a * (b.WHEEL_DEGREES / this.wedgeValues.length)
                }
            }, b.prototype.addWedge = function(a) {
                var b = d.AssetManager.getInstance().getNewAsset("Wheel.Wedge");
                return this._innerWheelContainer.addChild(b), new c.LabeledTextFieldController(b).setText(a), b
            }, b.prototype.startSpin = function() {
                createjs.Tween.removeTweens(this._innerWheelContainer), this._spinning = !0;
                var a = this,
                    c = this._innerWheelContainer.rotation % b.WHEEL_DEGREES;
                this._innerWheelContainer.rotation = c;
                var d = c + b.WHEEL_DEGREES * this.startSpinSpeed;
                createjs.Tween.get(this._innerWheelContainer, {
                    loop: !1
                }).to({
                    rotation: d
                }, this.spinDuration * this.startSpinSpeed, this.easeIn).call(function() {
                    a._innerWheelContainer.rotation = d, createjs.Tween.get(a._innerWheelContainer, {
                        loop: !0
                    }).to({
                        rotation: d + b.WHEEL_DEGREES
                    }, a.spinDuration / 2), a.dispatchEvent(new e.events.Event(b.START_SPIN_DONE, null, this))
                })
            }, b.prototype.stopSpin = function(a) {
                createjs.Tween.removeTweens(this._innerWheelContainer), this._spinning = !1;
                var c = this._innerWheelContainer.rotation % b.WHEEL_DEGREES;
                this._innerWheelContainer.rotation = c, 0 != a && (a = this.wedgeValues.length - a);
                var d = Math.floor(a * (b.WHEEL_DEGREES / this.wedgeValues.length)) + b.EXTRA_ROTATION,
                    f = b.WHEEL_DEGREES * this.slowDownSpeed + d,
                    g = (f - c) / (b.WHEEL_DEGREES * this.slowDownSpeed) * this.spinDuration * this.slowDownSpeed,
                    h = this;
                createjs.Tween.get(this._innerWheelContainer, {
                    loop: !1
                }).to({
                    rotation: f
                }, g, this.easeOut).call(function() {
                    h.dispatchEvent(new e.events.Event(b.STOP_SPIN_DONE, null, this))
                })
            }, b
        }(e.events.EventDispatcher);
        f.START_SPIN_DONE = "StartSpinDone", f.STOP_SPIN_DONE = "StopSpinDone", f.WHEEL_DEGREES = 360, f.EXTRA_ROTATION = 360, b.Wheel = f
    }), define("wcgf/gameComponents/wheel/WheelDataHandler", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {}
            return a.prototype.init = function() {}, a.prototype.setData = function(a) {
                this._populationOutcome = a.data.gameLogicResponse.populationOutcomes.getValue("WheelBonusSelection"), this._wheelCell = this._populationOutcome.reels.getValue("WheelBonus").cells[0]
            }, Object.defineProperty(a.prototype, "wheelIndex", {
                get: function() {
                    return this._wheelCell.stripIndex
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(a.prototype, "winValue", {
                get: function() {
                    return this._wheelCell.symbolId
                },
                enumerable: !0,
                configurable: !0
            }), a
        }();
        b.WheelDataHandler = c
    }), define("wcgf/gameComponents/wheel/WheelController", ["require", "exports", "wcgf/messageBus/GameMsgBus", "wcgf/core/AssetManager", "wcgf/core/events", "wcgf/gameComponents/wheel/Wheel", "wcgf/gameComponents/wheel/WheelDataHandler"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b.stageName = "WheelBonus", b._isInit = !1, b._enable = !1, b._skinList = [], b._msgBus = c.GameMsgBus.getInstance(), b._assetManager = d.AssetManager.getInstance(), b.skin = b._assetManager.getSkin("Wheel"), b
            }
            return __extends(b, a), b.prototype.init = function(a) {
                this._isInit || (this._isInit = !0, this._currentStageName = a.gameLogicResponse.outcomeDetail.stage, this._wheel = new f.Wheel, this._wheel.init(), this._wheelDataHandler = new g.WheelDataHandler), this.addEventListeners();
                var b = this;
                this._wheel.wheelStartButton.addEventListener("click", function(a) {
                    b._wheel.startSpin()
                })
            }, b.prototype.onBeforeShowStage = function(a) {
                this.nextStage()
            }, b.prototype.onStartGameInitial = function(a) {}, b.prototype.onEnterNextStage = function(a) {}, b.prototype.onStartGameInProgress = function(a) {
                this.nextStage()
            }, b.prototype.onStartGameInProgressNextStage = function(a) {}, b.prototype.onBeforeRequest = function(a) {
                this._eventData = a, this.nextStage()
            }, b.prototype.onMakeRequest = function(a) {
                var b, d;
                a.data.gameLogicResponse.patternSliderInput ? (b = a.data.gameLogicResponse.patternSliderInput.betPerPattern, d = a.data.gameLogicResponse.patternSliderInput.patternsBet) : (b = a.data.paytableResponse.patternSliderInfo.betInfo.steps[0], d = a.data.paytableResponse.patternSliderInfo.patternInfo.steps[0]), this._msgBus.dispatchEvent(new e.events.Event(c.GameMsgBus.PLAY_DATA, {
                    ActionInput: {
                        Action: "play"
                    },
                    PatternSliderInput: {
                        BetPerPattern: b,
                        PatternsBet: d
                    }
                })), this.nextStage()
            }, b.prototype.onAccountBalance = function(a) {}, b.prototype.onResolveStage = function(a) {
                this._wheelDataHandler.setData(a), this._wheel.stopSpin(this._wheelDataHandler.wheelIndex)
            }, b.prototype.onEndGame = function(a) {
                this.nextStage()
            }, b.prototype.onBeginNewGame = function(a) {
                this.nextStage()
            }, b.prototype.onExitStage = function(a) {
                this.nextStage()
            }, b.prototype.addBusListeners = function() {
                this._msgBus.addEventListener(c.GameMsgBus.START_GAME_INITIAL, this.onStartGameInitial, this), this._msgBus.addEventListener(c.GameMsgBus.START_GAME_IN_PROGRESS_STAGE, this.onStartGameInProgress, this), this._msgBus.addEventListener(c.GameMsgBus.START_GAME_IN_PROGRESS_NEXT_STAGE, this.onStartGameInProgressNextStage, this), this._msgBus.addEventListener(c.GameMsgBus.BEFORE_REQUEST, this.onBeforeRequest, this), this._msgBus.addEventListener(c.GameMsgBus.MAKE_REQUEST, this.onMakeRequest, this), this._msgBus.addEventListener(c.GameMsgBus.RESOLVE_STAGE, this.onResolveStage, this), this._msgBus.addEventListener(c.GameMsgBus.END_GAME, this.onEndGame, this), this._msgBus.addEventListener(c.GameMsgBus.BEGIN_NEW_GAME, this.onBeginNewGame, this), this._msgBus.addEventListener(c.GameMsgBus.ACCOUNT_BALANCES, this.onAccountBalance, this), this._msgBus.addEventListener(c.GameMsgBus.BEFORE_SHOW_STAGE, this.onBeforeShowStage, this), this._msgBus.addEventListener(c.GameMsgBus.ENTER_NEXT_STAGE, this.onEnterNextStage, this), this._msgBus.addEventListener(c.GameMsgBus.EXIT_STAGE, this.onExitStage, this)
            }, b.prototype.removeBusListeners = function() {
                this._msgBus.removeEventListener(c.GameMsgBus.START_GAME_INITIAL, this.onStartGameInitial, this), this._msgBus.removeEventListener(c.GameMsgBus.BEFORE_REQUEST, this.onBeforeRequest, this), this._msgBus.removeEventListener(c.GameMsgBus.MAKE_REQUEST, this.onMakeRequest, this), this._msgBus.removeEventListener(c.GameMsgBus.RESOLVE_STAGE, this.onResolveStage, this), this._msgBus.removeEventListener(c.GameMsgBus.END_GAME, this.onEndGame, this), this._msgBus.removeEventListener(c.GameMsgBus.BEGIN_NEW_GAME, this.onBeginNewGame, this), this._msgBus.removeEventListener(c.GameMsgBus.ACCOUNT_BALANCES, this.onAccountBalance, this), this._msgBus.removeEventListener(c.GameMsgBus.BEFORE_SHOW_STAGE, this.onBeforeShowStage, this), this._msgBus.removeEventListener(c.GameMsgBus.ENTER_NEXT_STAGE, this.onEnterNextStage, this), this._msgBus.removeEventListener(c.GameMsgBus.EXIT_STAGE, this.onExitStage, this)
            }, b.prototype.nextStage = function() {
                this._msgBus.dispatchEvent(new e.events.Event(c.GameMsgBus.NEXT_STAGE))
            }, b.prototype.addToStage = function(a) {
                a.addChild(this.skin);
                for (var b = 0, c = this._skinList; b < c.length; b++) {
                    var d = c[b];
                    a.addChild(this._assetManager.getSkin(d))
                }
                this.enable = !0
            }, b.prototype.removeFromStage = function(a) {
                a.removeChild(this.skin);
                for (var b = 0, c = this._skinList; b < c.length; b++) {
                    var d = c[b];
                    a.removeChild(this._assetManager.getSkin(d))
                }
                this.removeEventListeners(), this.enable = !1
            }, b.prototype.removeChild = function(a) {
                this.skin.removeChild(this._assetManager.getSkin(a))
            }, Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable != a && (this._enable = a, a ? this.addBusListeners() : this.removeBusListeners())
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.addEventListeners = function() {
                this._isInit && (this._wheel.addEventListener(f.Wheel.START_SPIN_DONE, this.nextStage, this), this._wheel.addEventListener(f.Wheel.STOP_SPIN_DONE, this.nextStage, this))
            }, b.prototype.removeEventListeners = function() {
                this._isInit && (this._wheel.removeEventListener(f.Wheel.START_SPIN_DONE, this.nextStage, this), this._wheel.removeEventListener(f.Wheel.STOP_SPIN_DONE, this.nextStage, this))
            }, b
        }(e.events.EventDispatcher);
        b.WheelController = h
    }), define("wcgf/gameComponents/WinBoxesController", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/core/AssetManager", "wcgf/gameComponents/MovieClipSequenceItem"], function(a, b, c, d, e) {
        "use strict";
        var f = function(a) {
            function b() {
                var b = a.call(this, null) || this;
                return b._winBoxSeqeunces = new Array, b._animateWinBoxes = !1, b._assetManager = d.AssetManager.getInstance(), b
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), this._winBoxesContainer = this._assetManager.getAsset("WinBoxesContainer"), this.hideAllWinBoxes()
            }, b.prototype.hideAllWinBoxes = function() {
                if (this._animateWinBoxes && null != this._winBoxSeqeunces) {
                    for (var a = 0, b = this._winBoxSeqeunces; a < b.length; a++) {
                        b[a].stopSequence()
                    }
                    this._winBoxSeqeunces = []
                }
                for (var c = 0; c < this._winBoxesContainer.numChildren; c++) {
                    var d = this._winBoxesContainer.getChildAt(c);
                    null != d && (this._animateWinBoxes && d.highlight.gotoAndStop("end"), d.visible = !1)
                }
            }, b.prototype.showWinBoxes = function(a) {
                this.hideAllWinBoxes();
                for (var b = 0, c = a; b < c.length; b++) {
                    var d = c[b];
                    if (null != this._winBoxesContainer[d] && (this._winBoxesContainer[d].visible = !0, this._animateWinBoxes)) {
                        var f = new e.MovieClipSequenceItem(this._winBoxesContainer[d].highlight, "start", "end", 0);
                        f.startSequence(), this._winBoxSeqeunces.push(f)
                    }
                }
            }, b.prototype.setTint = function(a, b) {
                void 0 === b && (b = null);
                for (var c = 0, d = a; c < d.length; c++) {
                    var e = d[c];
                    if (null != this._winBoxesContainer[e]) {
                        var f = this._winBoxesContainer[e],
                            g = f.getBounds();
                        if (null == g) throw new Error("Error: winBoxesContainer." + e + " " + typeof f + " missing bounds ( cache as bitmap may not be set )");
                        f.uncache(), null != b && (f.filters = [new createjs.ColorFilter(1, 1, 1, 1, b.r, b.g, b.b, b.a)]), f.cache(g.x, g.y, g.width, g.height)
                    }
                }
            }, Object.defineProperty(b.prototype, "animateWinBoxes", {
                get: function() {
                    return this._animateWinBoxes
                },
                set: function(a) {
                    this._animateWinBoxes = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.GenericViewController);
        b.WinBoxesController = f
    }), define("wcgf/genericGameComponents/controls/GenericBetControls", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/LabeledTextFieldController", "wcgf/coreComponents/GenericStepperController", "wcgf/coreComponents/GenericPlaqueController", "wcgf/core/AssetManager", "wcgf/core/TextManager", "wcgf/core/CurrencyFormatter", "wcgf/gameComponents/RollupIncrementer", "wcgf/textFormatters/CurrencyTextFormatter", "wcgf/gameComponents/BetManager", "wcgf/gameComponents/BaseGameBetControls"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) {
        "use strict";
        var n = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b._totalBalance = 0, b._assetManager = g.AssetManager.getInstance(), b._plaqueController = new f.GenericPlaqueController, b._betControls = b.createBetControls(b._plaqueController), b
            }
            return __extends(b, a), b.prototype.createBetControls = function(a) {
                return new m.BaseGameBetControllers(a)
            }, b.prototype.init = function(a) {
                void 0 === a && (a = null), this.setDenomination(a), null != a.gameLogicResponse.promotionalFreeSpin ? this.setPromoFreeSpinMeter(a) : this.setBalanceMeter(a), this._betControls.init(a), this.setWinMeter(), this.setPayout(a), this.resetWin(), this.setRollup(), this.setPlaqueController(a), this.updateBalance(a.gameLogicResponse.balances.totalBalance)
            }, b.prototype.setBalanceMeter = function(a) {
                this._assetManager.getAsset(b.PROMO_FREESPIN_METER_NAME).visible = !1, this._balanceMeter = new d.LabeledTextFieldController(this._assetManager.getAsset(b.BALANCE_METER_NAME)), this._balanceMeter.init(), this._balanceMeter.textFormatter = new k.CurrencyTextFormatter({
                    denomination: 1
                }), this._balanceMeter.label = h.TextManager.getInstance().getText(b.BALANCE_LABEL_NAME)
            }, b.prototype.setPromoFreeSpinMeter = function(a) {
                this._assetManager.getAsset(b.BALANCE_METER_NAME).visible = !1, this._promoFSMeter = new d.LabeledTextFieldController(this._assetManager.getAsset(b.PROMO_FREESPIN_METER_NAME)), this._promoFSMeter.init(), this._promoFSMeter.label = h.TextManager.getInstance().getText(b.PROMO_FREESPIN_LABEL_NAME);
                var c = a.gameLogicResponse.promotionalFreeSpin.count.toString();
                this.updatePromoFS(c), this.setPromoFSCount(a)
            }, b.prototype.setWinMeter = function() {
                this._winMeter = new d.LabeledTextFieldController(this._assetManager.getAsset(b.WIN_METER_NAME)), this._winMeter.init(), this._winMeter.label = h.TextManager.getInstance().getText(b.WIN_LABEL_NAME)
            }, b.prototype.setDenomination = function(a) {
                null != a && null != a.paytableResponse && null != a.paytableResponse.denominationList && a.paytableResponse.denominationList.length > 0 && (this._denomination = a.paytableResponse.denominationList[0].value)
            }, b.prototype.setPlaqueController = function(a) {
                this._plaqueController.init(a)
            }, b.prototype.setRollup = function() {
                this._rollup = new j.RollupIncrementer, this._rollup.denomination = this._denomination, this._rollup.updateSteps(this._betControls.betManager.totalBet), this._rollup.textField = this._winMeter
            }, b.prototype.skipRollup = function() {
                this.hasPayout() && this._rollup.stopSequence()
            }, b.prototype.setRollupSequence = function() {
                this.hasPayout() && (this._rollup.targetValue = this._payout, this._rollup.updateSteps(this._betControls.betManager.totalBet))
            }, Object.defineProperty(b.prototype, "rollup", {
                get: function() {
                    return this._rollup
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.thresholdReached = function(a, b) {
                return this._payout >= a && this._payout >= this._totalBet * b
            }, b.prototype.onBalanceChange = function(a) {
                this.updateBalance(a.data)
            }, b.prototype.updateBalance = function(a) {
                this._totalBalance = a, null != this._balanceMeter && this._balanceMeter.setText(this._totalBalance.toString())
            }, b.prototype.updatePromoFS = function(a) {
                this._promoFSMeter.setText(a)
            }, b.prototype.setPromoFSCount = function(a) {
                this._promoFSCount = a.gameLogicResponse.promotionalFreeSpin.count
            }, b.prototype.updateTotalBet = function() {
                this.updateTotalBetFieldMobile(this.formatValue(this._totalBet, this._denomination))
            }, b.prototype.updateTotalBetFieldMobile = function(a) {
                null != this._totalBetMeterMobile && this._totalBetMeterMobile.setText(a)
            }, b.prototype.updateWin = function(a) {
                this.setPayout(a), this.updateWinField(this.formatValue(this._payout, this._denomination))
            }, b.prototype.resetWin = function() {
                this.updateWinField("")
            }, b.prototype.updateWinField = function(a) {
                this._winMeter.setText(a)
            }, b.prototype.onBetLineValueChange = function(a) {
                this.dispatchEvent(new c.events.Event(e.GenericStepperController.VALUE_CHANGE, null, this)), this.updateTotalBet(), this._rollup.updateSteps(this._totalBet)
            }, b.prototype.setPayout = function(a) {
                this.payoutExists(a) ? this._payout = a.gameLogicResponse.prizeOutcomes.getValue(b.PAYOUT_NAME).pay : this._payout = 0
            }, b.prototype.hasPayout = function() {
                return this._payout > 0
            }, b.prototype.payoutExists = function(a) {
                return !!a.gameLogicResponse.prizeOutcomes.nElements
            }, Object.defineProperty(b.prototype, "promoFSCount", {
                get: function() {
                    return this._promoFSCount
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "betControls", {
                get: function() {
                    return this._betControls
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.formatValue = function(a, b) {
                return void 0 === b && (b = this._denomination), i.CurrencyFormatter.getInstance().format(a, b)
            }, b.prototype.addEventListeners = function() {
                l.BetManager.getInstance().addEventListener(l.BetManager.TOTAL_BET_CHANGE, this.onBetLineValueChange, this), l.BetManager.getInstance().addEventListener(l.BetManager.BALANCE_CHANGE, this.onBalanceChange, this)
            }, b.prototype.removeEventListeners = function() {
                l.BetManager.getInstance().removeEventListener(l.BetManager.TOTAL_BET_CHANGE, this.onBetLineValueChange, this), l.BetManager.getInstance().removeEventListener(l.BetManager.BALANCE_CHANGE, this.onBalanceChange, this)
            }, b
        }(c.events.EventDispatcher);
        n.BALANCE_METER_NAME = "balanceMeter", n.BALANCE_LABEL_NAME = "balance", n.WIN_METER_NAME = "winMeter", n.WIN_LABEL_NAME = "win", n.PROMO_FREESPIN_METER_NAME = "promoFSMeter", n.PROMO_FREESPIN_LABEL_NAME = "freespin", n.PAYOUT_NAME = "Game.Total", b.GenericBetControls = n
    }), define("wcgf/genericGameComponents/controls/IGenericControlsStateController", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/genericGameComponents/controls/GenericControlsStateController", ["require", "exports", "wcgf/core/events", "wcgf/core/AssetManager", "wcgf/gameComponents/MobileBetControls", "wcgf/messageBus/ConsoleBusProxy", "wcgf/sounds/SoundManager"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h;
        ! function(a) {
            a[a.Idle = 0] = "Idle", a[a.Disable = 1] = "Disable"
        }(h = b.ControlsState || (b.ControlsState = {}));
        var i = function(a) {
            function b(b) {
                var c = a.call(this) || this;
                return c._state = h.Idle, c._enableBetControls = !0, c._betControls = b, c._assetManager = d.AssetManager.getInstance(), c._consoleProxy = f.ConsoleBusProxy.getInstance(), c
            }
            return __extends(b, a), b.prototype.init = function(a) {
                void 0 === a && (a = null), this.setMobileBetControls()
            }, b.prototype.setMobileBetControls = function() {
                this._mobileBetControl = new e.MobileBetControls(this._assetManager.getSkin("MobileBetControls")), this._mobileBetControl.init()
            }, b.prototype.onMobileBetControlsOpen = function(a) {
                this.dispatchEvent(new c.events.Event(b.MOBILE_CONTROLS_OPEN, null, this)), g.SoundManager.getInstance().execute("ControlsButtonOptionsOpen")
            }, b.prototype.onMobileBetControlsClose = function(a) {
                this.dispatchEvent(new c.events.Event(b.MOBILE_CONTROLS_CLOSE, null, this)), this._state = h.Idle, this.updateState(this._state), g.SoundManager.getInstance().execute("ControlsButtonOptionsClose")
            }, b.prototype.checkInsufficientFunds = function() {
                this._mobileBetControl.isOpen || this.updateState(this._state)
            }, Object.defineProperty(b.prototype, "state", {
                get: function() {
                    return this._state
                },
                set: function(a) {
                    this._state != a && (this._state = a, this.updateState(this._state))
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.updateState = function(a) {
                switch (a) {
                    case h.Idle:
                        this._betControls.enabled = this._enableBetControls, this._mobileBetControl.enable = !0, this._consoleProxy.enableBetControlConsole();
                        break;
                    case h.Disable:
                        this._betControls.enabled = !1, this._mobileBetControl.enable = !1, this._consoleProxy.disableControlConsole()
                }
            }, b.prototype.addEventListeners = function() {
                this._mobileBetControl.addEventListener(e.MobileBetControls.MOBILE_BET_CONTROLS_OPEN, this.onMobileBetControlsOpen, this), this._mobileBetControl.addEventListener(e.MobileBetControls.MOBILE_BET_CONTROLS_CLOSE, this.onMobileBetControlsClose, this)
            }, b.prototype.removeEventListeners = function() {
                this._mobileBetControl.removeEventListener(e.MobileBetControls.MOBILE_BET_CONTROLS_OPEN, this.onMobileBetControlsOpen, this), this._mobileBetControl.removeEventListener(e.MobileBetControls.MOBILE_BET_CONTROLS_CLOSE, this.onMobileBetControlsClose, this)
            }, b
        }(c.events.EventDispatcher);
        i.MOBILE_CONTROLS_OPEN = "MobileControlsOpen", i.MOBILE_CONTROLS_CLOSE = "MobileControlsClose", b.GenericControlsStateController = i
    }), define("wcgf/genericGameComponents/controls/GenericSlotControls", ["require", "exports", "wcgf/core/events", "wcgf/coreComponents/PlayButtonController", "wcgf/coreComponents/AutoPlayButtonController", "wcgf/core/AssetManager", "wcgf/gameComponents/BetManager", "wcgf/messageBus/GameMsgBus", "wcgf/sounds/SoundManager", "wcgf/genericGameComponents/controls/GenericControlsStateController"], function(a, b, c, d, e, f, g, h, i, j) {
        "use strict";
        var k;
        ! function(a) {
            a[a.Idle = 0] = "Idle", a[a.Disable = 1] = "Disable", a[a.Spinning = 2] = "Spinning", a[a.Rollup = 3] = "Rollup", a[a.AutoSpinIdle = 4] = "AutoSpinIdle", a[a.BonusIdle = 5] = "BonusIdle", a[a.BonusTransition = 6] = "BonusTransition"
        }(k = b.ControlsState || (b.ControlsState = {}));
        var l = function(a) {
            function b(b) {
                var c = a.call(this, b) || this;
                return c._state = k.Idle, c._assetManager = f.AssetManager.getInstance(), c._soundManager = i.SoundManager.getInstance(), c
            }
            return __extends(b, a), b.prototype.init = function(b) {
                void 0 === b && (b = null), a.prototype.init.call(this, b), this.setPlayButton(), this.setAutoPlayButton(b)
            }, b.prototype.onMobileBetControlsOpen = function(b) {
                a.prototype.onMobileBetControlsOpen.call(this, b), this._playButton.enable = !1
            }, b.prototype.setPlayButton = function() {
                this._playButton = new d.PlayButtonController(this._assetManager.getAsset(b.PLAY_BUTTON_ASSET)), this._playButton.init(), this._playButton.state = d.PlayButtonState.Spin, this._playButton.addEventListener(d.PlayButtonController.SKIP_BUTTON_CLICK, this.onSkipButtonClick, this), this._playButton.addEventListener(d.PlayButtonController.SPIN_BUTTON_CLICK, this.onSpinButtonClick, this), this._playButton.addEventListener(d.PlayButtonController.START_BUTTON_CLICK, this.onStartButtonClick, this)
            }, b.prototype.setAutoPlayButton = function(a) {
                this._autoPlayButton = new e.AutoPlayButtonController(this._assetManager.getAsset(b.AUTO_PLAY_BUTTON_ASSET)), this._autoPlayButton.init(a), this._autoPlayButton.state = e.AutoPlayButtonState.Play
            }, b.prototype.checkInsufficientFunds = function() {
                g.BetManager.getInstance().insufficientFunds && this.autoSpinIsActive() && (this._autoPlayButton.state = e.AutoPlayButtonState.Play, this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_STOP_CLICK, null, this))), this.autoSpinIsActive() || a.prototype.checkInsufficientFunds.call(this)
            }, b.prototype.handleAutoPlayEnd = function() {
                this._autoPlayButton.handleAutoPlaySpinEnd()
            }, b.prototype.autoSpinIsActive = function() {
                return this._autoPlayButton.state == e.AutoPlayButtonState.Stop
            }, b.prototype.disableAutoSpin = function() {
                this._autoPlayButton.state = e.AutoPlayButtonState.Spin, this._autoPlayButton.enable = !1, this._autoPlayButton.autoPlaySpinning = !1
            }, b.prototype.cancelAutoSpin = function() {
                this._autoPlayButton.state = e.AutoPlayButtonState.Spin, this._autoPlayButton.autoPlaySpinning = !1
            }, Object.defineProperty(b.prototype, "state", {
                get: function() {
                    return this._state
                },
                set: function(a) {
                    this._state != a && (this._state = a, this.updateState(this._state))
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.updateState = function(b) {
                var c;
                switch (b) {
                    case k.Idle:
                        c = this.SetControlsStateIdle(), a.prototype.updateState.call(this, c);
                        break;
                    case k.Rollup:
                        c = this.SetControlsStateRollup(), a.prototype.updateState.call(this, c);
                        break;
                    case k.Spinning:
                        c = this.SetControlsStateSpinning(), a.prototype.updateState.call(this, c);
                        break;
                    case k.AutoSpinIdle:
                        c = this.SetControlsStateAutoSpinIdle(), a.prototype.updateState.call(this, c);
                        break;
                    case k.BonusIdle:
                        c = this.SetControlsStateBonusIdle(), a.prototype.updateState.call(this, c);
                        break;
                    case k.BonusTransition:
                        c = this.SetControlsStateBonusTransition(), a.prototype.updateState.call(this, c);
                        break;
                    case k.Disable:
                        c = this.SetControlsStateDisable(), a.prototype.updateState.call(this, c)
                }
            }, b.prototype.SetControlsStateIdle = function() {
                return this._playButton.state = d.PlayButtonState.Spin, this._playButton.enable = !g.BetManager.getInstance().insufficientFunds, this._playButton.sendReceiveEnable = !1, this._autoPlayButton.handleAutoPlaySpinEnd(), this._autoPlayButton.enable = !g.BetManager.getInstance().insufficientFunds, this._enableBetControls = !this.autoSpinIsActive(), k.Idle
            }, b.prototype.SetControlsStateRollup = function() {
                return this._playButton.enable = !0, this._playButton.state = d.PlayButtonState.Skip, this._playButton.sendReceiveEnable = !1, k.Disable
            }, b.prototype.SetControlsStateSpinning = function() {
                return this._playButton.state = d.PlayButtonState.Spin, this._playButton.enable = !1, this._playButton.sendReceiveEnable = !0, this._autoPlayButton.handleAutoPlaySpinStart(), k.Disable
            }, b.prototype.SetControlsStateAutoSpinIdle = function() {
                return this._playButton.state = d.PlayButtonState.Spin, this._playButton.enable = !0, this._playButton.sendReceiveEnable = !1, this._autoPlayButton.handleAutoPlaySpinEnd(), k.Disable
            }, b.prototype.SetControlsStateBonusIdle = function() {
                return this._playButton.state = d.PlayButtonState.Start, this._playButton.enable = !0, this._playButton.sendReceiveEnable = !1, this.disableAutoSpin(), k.Disable
            }, b.prototype.SetControlsStateBonusTransition = function() {
                return this._playButton.state = d.PlayButtonState.Start, this._playButton.enable = !1, this._playButton.sendReceiveEnable = !1, this.disableAutoSpin(), k.Disable
            }, b.prototype.SetControlsStateDisable = function() {
                return this._playButton.state = d.PlayButtonState.Spin, this._playButton.enable = !1, this._playButton.sendReceiveEnable = !1, this.disableAutoSpin(), k.Disable
            }, b.prototype.onSkipButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.SKIP_BUTTON_CLICK, null, this))
            }, b.prototype.onStartButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.START_BUTTON_CLICK, null, this))
            }, b.prototype.onSpinButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.SPIN_BUTTON_CLICK, null, this)), this._soundManager.execute("ControlsButtonSpin"), this._soundManager.execute("onUiSpin")
            }, b.prototype.onAutoPlayButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_CLICK, null, this)), this._soundManager.execute("ControlsButtonAutoPlayOpen"), this._soundManager.execute("onUiAutoPlayOpen")
            }, b.prototype.onAutoPlayChoicesClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_CHOICES_CLICK, null, this)), this._soundManager.execute("ControlsButtonAutoPlaySelect"), this._soundManager.execute("onUiAutoPlaySelect")
            }, b.prototype.onAutoPlayStopButtonClick = function(a) {
                this.dispatchEvent(new c.events.Event(b.AUTO_PLAY_STOP_CLICK, null, this)), this.checkInsufficientFunds(), this._soundManager.execute("ControlsButtonAutoPlayClose"), this._soundManager.execute("onUiAutoPlayClose")
            }, b.prototype.addEventListeners = function() {
                a.prototype.addEventListeners.call(this), h.GameMsgBus.getInstance().addEventListener(h.GameMsgBus.START_GAME_INITIAL, this.checkInsufficientFunds, this), h.GameMsgBus.getInstance().addEventListener(h.GameMsgBus.BEGIN_NEW_GAME, this.checkInsufficientFunds, this), this._playButton.addEventListener(d.PlayButtonController.SKIP_BUTTON_CLICK, this.onSkipButtonClick, this), this._playButton.addEventListener(d.PlayButtonController.SPIN_BUTTON_CLICK, this.onSpinButtonClick, this), this._playButton.addEventListener(d.PlayButtonController.START_BUTTON_CLICK, this.onStartButtonClick, this), this._autoPlayButton.addEventListener(e.AutoPlayButtonController.AUTO_PLAY_BUTTON_CLICK, this.onAutoPlayButtonClick, this), this._autoPlayButton.addEventListener(e.AutoPlayButtonController.AUTO_PLAY_CHOICES_BUTTON_CLICK, this.onAutoPlayChoicesClick, this), this._autoPlayButton.addEventListener(e.AutoPlayButtonController.AUTO_PLAY_STOP_BUTTON_CLICK, this.onAutoPlayStopButtonClick, this)
            }, b.prototype.removeEventListeners = function() {
                a.prototype.removeEventListeners.call(this), h.GameMsgBus.getInstance().removeEventListener(h.GameMsgBus.START_GAME_INITIAL, this.checkInsufficientFunds, this), h.GameMsgBus.getInstance().removeEventListener(h.GameMsgBus.BEGIN_NEW_GAME, this.checkInsufficientFunds, this), this._playButton.removeEventListener(d.PlayButtonController.SKIP_BUTTON_CLICK, this.onSkipButtonClick, this), this._playButton.removeEventListener(d.PlayButtonController.SPIN_BUTTON_CLICK, this.onSpinButtonClick, this), this._playButton.removeEventListener(d.PlayButtonController.START_BUTTON_CLICK, this.onStartButtonClick, this), this._autoPlayButton.removeEventListener(e.AutoPlayButtonController.AUTO_PLAY_BUTTON_CLICK, this.onAutoPlayButtonClick, this), this._autoPlayButton.removeEventListener(e.AutoPlayButtonController.AUTO_PLAY_CHOICES_BUTTON_CLICK, this.onAutoPlayChoicesClick, this), this._autoPlayButton.removeEventListener(e.AutoPlayButtonController.AUTO_PLAY_STOP_BUTTON_CLICK, this.onAutoPlayStopButtonClick, this)
            }, b
        }(j.GenericControlsStateController);
        l.SPIN_BUTTON_CLICK = "GenericControlsViewSpinClick", l.SKIP_BUTTON_CLICK = "GenericControlsViewSkipClick", l.START_BUTTON_CLICK = "GenericControlsViewStartClick", l.AUTO_PLAY_CLICK = "GenericControlsViewAutoPlayClick", l.AUTO_PLAY_CHOICES_CLICK = "GenericControlsViewAutoPlayChoicesClick", l.AUTO_PLAY_STOP_CLICK = "GenericControlsViewAutoPlayStopClick", l.PLAY_BUTTON_ASSET = "playButton", l.AUTO_PLAY_BUTTON_ASSET = "autoPlay", b.GenericSlotControls = l
    }), define("wcgf/genericGameComponents/core/sequenceItems/events/ViewEvent", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {}
            return a
        }();
        c.PROCESSING = "processing", c.PROCESSING_COMPLETE = "processingComplete", c.NEXT_STAGE = "nextStage", b.ViewEvent = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/events/PlatformEvent", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {}
            return a
        }();
        c.SYSTEM_INIT = "platformMsg/Kernel/System.init", c.CLIENT_SERVICE_GAME_INIT = "platformMsg/ClientService/Game.Init", c.ACCOUNT_BALANCES = "platformMsg/ClientService/Account.Balances", c.BEFORE_SHOW_STAGE = "platformMsg/Clientservice/onBeforeShowStage", c.START_GAME_INITIAL = "platformMsg/Clientservice/onStartGameInitial", c.BEFORE_REQUEST = "platformMsg/Clientservice/onBeforeRequest", c.MAKE_REQUEST = "platformMsg/Clientservice/onMakeRequest", c.RESOLVE_STAGE = "platformMsg/Clientservice/onResolveStage", c.END_GAME = "platformMsg/Clientservice/onEndGame", c.BEGIN_NEW_GAME = "platformMsg/Clientservice/onBeginNewGame", c.EXIT_STAGE = "platformMsg/Clientservice/onExitStage", c.START_GAME_IN_PROGRESS_STAGE = "platformMsg/Clientservice/onStartGameInProgressStage", c.START_GAME_IN_PROGRESS_NEXT_STAGE = "platformMsg/Clientservice/onStartGameInProgressNextStage", c.IN_PROGRESS_STAGE = "platformMsg/Clientservice/onInProgressStage", c.ENTER_NEXT_STAGE = "platformMsg/Clientservice/onEnterNextStage", c.ABORT_NEXT_STAGE = "platformMsg/Clientservice/onAbortNextStage", c.RESET_NEXT_STAGE = "platformMsg/Clientservice/onResetNextStage", c.JACKPOT_PLAYER_MESSAGE_UPDATE = "platformMsg/ClientService/Jackpot.PlayerMessageUpdate", c.JACKPOT_METER_UPDATE = "platformMsg/ClientService/Jackpot.MeterUpdate", c.RESIZE = "platformMsg/Kernel/System.Resize", c.FULLSCREEN = "GameMsgBusFullScreen", c.GAME_CONTROL = "platformMsg/ConsoleService/Game.Control", c.REGISTER = "GameMsgBusRegister", c.INITIALIZE = "GameMsgBusInitialize", c.LOAD_PROGRESS = "GameMsgBusLoadProgress", c.PLAY_DATA = "GameMsgBusPlayData", c.DEDUCT_STAKE = "GameMsgBusDeductStake", c.GAME_INIT_DONE = "GameMsgBusInitDone", c.NEXT_STAGE = "GameMsgBusNextState", c.TOTAL_BET_CHANGE = "GameMsgBusOnTotalBetChange", c.CONTROL = "GameMsgBusControl", c.DEDUCT = "GameMsgBusDeduct", c.JACKPOT_PLAYER_MESSAGE_REQUEST = "GameMsgBusJackpotPlayerMessageRequest", c.JACKPOT_METER_REQUEST = "GameMsgBusJackpotMeterRequest", b.PlatformEvent = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/IControlSequenceItem", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/genericGameComponents/core/controller/StageController", ["require", "exports", "wcgf/core/events", "wcgf/messageBus/GameMsgBus", "wcgf/genericGameComponents/core/sequenceItems/events/ViewEvent", "wcgf/genericGameComponents/core/sequenceItems/events/PlatformEvent"], function(a, b, c, d, e, f) {
        "use strict";
        var g = c.events.Event,
            h = function(a) {
                function b() {
                    var c = a.call(this) || this;
                    if (c._currentActionIndex = 0, c._processingAction = !1, c._viewsProcessing = new Array, c._inProcess = !1, b._stageControllerInstance) throw new Error("Error: Instantiation failed: Use StageController.getInstance() instead of new.");
                    return b._stageControllerInstance = c, c
                }
                return __extends(b, a), b.getInstance = function() {
                    return b._stageControllerInstance
                }, b.prototype.init = function() {
                    this.printFlowEvent("initializeBus"), this._msgBus = d.GameMsgBus.getInstance(), this.addMsgBusEvents(), this._msgBus.getIsInit() ? this.onInitialize(null) : (this._msgBus.addEventListener(d.GameMsgBus.INITIALIZE, this.onInitialize, this), this._msgBus.init())
                }, b.prototype.printFlowEvent = function(a, b) {
                    void 0 === b && (b = "default")
                }, b.prototype.addMsgBusEvents = function() {
                    this._msgBus.addEventListener(d.GameMsgBus.SYSTEM_INIT, this.onSystemInit, this), this._msgBus.addEventListener(f.PlatformEvent.LOAD_PROGRESS, this.onLoadProgress, this), this._msgBus.addEventListener(f.PlatformEvent.CLIENT_SERVICE_GAME_INIT, this.onGameInit, this), this._msgBus.addEventListener(f.PlatformEvent.ACCOUNT_BALANCES, this.onAccountBalance, this), this._msgBus.addEventListener(f.PlatformEvent.GAME_CONTROL, this.onGameControl, this), this._msgBus.addEventListener(f.PlatformEvent.RESIZE, this.onResize, this), this._msgBus.addEventListener(f.PlatformEvent.BEFORE_SHOW_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.START_GAME_INITIAL, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.BEFORE_REQUEST, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.MAKE_REQUEST, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.RESOLVE_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.END_GAME, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.BEGIN_NEW_GAME, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.EXIT_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.START_GAME_IN_PROGRESS_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.START_GAME_IN_PROGRESS_NEXT_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.IN_PROGRESS_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.ABORT_NEXT_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.RESET_NEXT_STAGE, this.handlePlatformStage, this), this._msgBus.addEventListener(f.PlatformEvent.ENTER_NEXT_STAGE, this.handlePlatformStage, this)
                }, b.prototype.initViewEvents = function(a) {
                    for (var b = 0, c = a; b < c.length; b++) {
                        var d = c[b];
                        this.changeViewEventListener(d, "addEventListener")
                    }
                }, b.prototype.handleProcessing = function(a) {
                    this._viewsProcessing.push(a.target), this._processingAction = !0
                }, b.prototype.handleProcessingComplete = function(a) {
                    for (var b = new Array, c = 0, d = this._viewsProcessing; c < d.length; c++) {
                        var e = d[c];
                        if (e == a.target) {
                            b.push(e);
                            break
                        }
                    }
                    for (var f = 0, g = b; f < g.length; f++) {
                        var h = g[f];
                        this._viewsProcessing.splice(this._viewsProcessing.indexOf(h), 1)
                    }
                    this._viewsProcessing.length <= 0 && (this._processingAction = !1, this.processActions())
                }, b.prototype.processActions = function() {
                    if (!this._inProcess) {
                        if (this._inProcess = !0, !this._processingAction) {
                            if (!this.hasSubAction()) return void this.nextMsgBusStage();
                            this._currentAction = this._currentActionList[this._currentActionIndex], this._currentActionIndex++, this.callNextSubAction()
                        }
                        this._inProcess = !1, this._viewsProcessing.length <= 0 && this.processActions()
                    }
                }, b.prototype.hasSubAction = function() {
                    return null != this._currentActionList && this._currentActionList.length > 0 && this._currentActionIndex < this._currentActionList.length
                }, b.prototype.callNextSubAction = function() {
                    this.printFlowEvent(this._currentAction, "cyan"), this.dispatchEvent(new g(this._currentAction, this._eventData.data))
                }, b.prototype.handlePlatformStage = function(a) {
                    var b = a.data.state;
                    this.printFlowEvent(b, "orange"), this._eventData = a, this._currentSequence = this.getCurrentSequence(b), this.setSubAction(), this._inProcess = !0, this.dispatchEvent(new g(this._currentSequence.name, a.data)), this._inProcess = !1, this._viewsProcessing.length <= 0 && this.processActions()
                }, b.prototype.getCurrentSequence = function(a) {
                    for (var b = 0, c = this.sequenceList; b < c.length; b++) {
                        var d = c[b];
                        if (d.name == a) return d
                    }
                }, b.prototype.setSubAction = function() {
                    this._currentActionList = this._currentSequence.actions, this._currentActionIndex = 0
                }, b.prototype.changeViewEventListener = function(a, b) {
                    a[b](e.ViewEvent.PROCESSING, this.handleProcessing, this), a[b](e.ViewEvent.PROCESSING_COMPLETE, this.handleProcessingComplete, this)
                }, b.prototype.dispatchEvent = function(b) {
                    a.prototype.dispatchEvent.call(this, b)
                }, b.prototype.nextMsgBusStage = function() {
                    this._msgBus.dispatchEvent(new c.events.Event(d.GameMsgBus.NEXT_STAGE))
                }, b.prototype.onSystemInit = function(a) {
                    this.dispatchEvent(new g(f.PlatformEvent.SYSTEM_INIT, a.data))
                }, b.prototype.onLoadProgress = function(a) {
                    this.dispatchEvent(new g(f.PlatformEvent.LOAD_PROGRESS, a.data))
                }, b.prototype.onGameInit = function(a) {
                    this.printFlowEvent("onGameInit"), this.dispatchEvent(new g(f.PlatformEvent.CLIENT_SERVICE_GAME_INIT, a.data))
                }, b.prototype.onInitialize = function(a) {
                    this.printFlowEvent("onInitialize"), this.dispatchEvent(new g(f.PlatformEvent.INITIALIZE, a.data));
                    for (var b = 0, c = this.dataTranslators; b < c.length; b++) {
                        var d = c[b];
                        this._msgBus.dataTranslators.push(d)
                    }
                }, b.prototype.onGameControl = function(a) {
                    this.printFlowEvent("onGameControl"), this.dispatchEvent(new g(f.PlatformEvent.GAME_CONTROL, a.data))
                }, b.prototype.onAccountBalance = function(a) {
                    this.printFlowEvent("onAccountBalance"), this.dispatchEvent(new g(f.PlatformEvent.ACCOUNT_BALANCES, a.data))
                }, b.prototype.onResize = function(a) {
                    this.printFlowEvent("onResize"), this.dispatchEvent(new g(f.PlatformEvent.RESIZE, a.data))
                }, b
            }(c.events.EventDispatcher);
        h._stageControllerInstance = new h, b.StageController = h
    }), define("wcgf/genericGameComponents/core/controller/LoadController", ["require", "exports", "wcgf/core/TextManager", "wcgf/core/AssetManager", "wcgf/core/loaders", "wcgf/core/events", "wcgf/sounds/SoundManager", "wcgf/messageBus/GameMsgBus", "wcgf/gameComponents/WebFontHelper"], function(a, b, c, d, e, f, g, h, i) {
        "use strict";
        var j = function(a) {
            function b(b) {
                var c = a.call(this) || this;
                return c._clientConfigData = {
                    assetPack: null,
                    language: null,
                    gameWindowWidth: 0,
                    gameWindowHeight: 0,
                    revisionTag: null
                }, c._assetMapLoaded = !1, c._langLoaded = !1, c._fontLoaded = !1, c._soundLoaded = !1, c._clientConfigData = b, c.onDependencyLoaded(c._clientConfigData), c
            }
            return __extends(b, a), b.prototype.onDependencyLoaded = function(a) {
                var b = this.createJsonLoader();
                b.addEventListener(e.loaders.JsonLoader.COMPLETE, this.onAssetMap, this), b.load("./game/assets/" + a.assetPack + "/assetMap.json"), c.TextManager.getInstance().language = a.language;
                var d = this.createJsonLoader();
                d.addEventListener(e.loaders.JsonLoader.COMPLETE, this.onLangLoaded, this), d.load("./game/i18n/" + a.language + ".json");
                var f = this.createJsonLoader();
                f.addEventListener(e.loaders.JsonLoader.COMPLETE, this.onSoundLoaded, this), f.load("./game/sounds/sounds.json")
            }, b.prototype.createJsonLoader = function() {
                return new e.loaders.JsonLoader(this._clientConfigData.revisionTag)
            }, b.prototype.onAssetMap = function(a) {
                a.target.removeEventListener(e.loaders.JsonLoader.COMPLETE, this.onAssetMap, this), this.assetMap = a.data, d.AssetManager.getInstance().setAssetIds(this.assetMap.assetIds), d.AssetManager.getInstance().setDeferredLoading(this.assetMap.deferredLoading), this._clientConfigData.gameWindowWidth = this.assetMap.config.gameWindowWidth, this._clientConfigData.gameWindowHeight = this.assetMap.config.gameWindowHeight, this._fontLoaded = this.handleFonts(), this._assetMapLoaded = !0, this.checkLoadComplete()
            }, b.prototype.handleFonts = function() {
                return null == this.assetMap.fonts || (this._webFontHelper = new i.WebFontHelper, this._webFontHelper.addEventListener(i.WebFontHelper.FONT_LOAD_COMPLETE, this.onWebFontLoadComplete, this), this._webFontHelper.parse(this.assetMap.fonts), this._webFontHelper.loadFonts(), !1)
            }, b.prototype.onWebFontLoadComplete = function(a) {
                this._webFontHelper.removeEventListener(i.WebFontHelper.FONT_LOAD_COMPLETE, this.onWebFontLoadComplete, this), this._webFontHelper = null, this.setFontLoaded()
            }, b.prototype.onLangLoaded = function(a) {
                a.target.removeEventListener(e.loaders.JsonLoader.COMPLETE, this.onLangLoaded, this), c.TextManager.getInstance().setData(a.data), this._langLoaded = !0, this.checkLoadComplete()
            }, b.prototype.onFontLoaded = function(a) {
                c.TextManager.getInstance().removeEventListener(c.TextManager.WEB_FONT_LOADED, this.onFontLoaded, this), this.setFontLoaded()
            }, b.prototype.setFontLoaded = function() {
                this._fontLoaded = !0, this.checkLoadComplete()
            }, b.prototype.onSoundLoaded = function(a) {
                a.target.removeEventListener(e.loaders.JsonLoader.COMPLETE, this.onSoundLoaded, this), g.SoundManager.getInstance().setSounds(a.data), this._soundLoaded = !0, this.checkLoadComplete()
            }, b.prototype.checkLoadComplete = function() {
                this._assetMapLoaded && this._langLoaded && this._soundLoaded && this._fontLoaded && this.dispatchEvent(new f.events.Event(b.LOAD_COMPLETE, this))
            }, b.prototype.onAssetLoaderStart = function() {
                this.assetLoader = this.createAssetLoader();
                var a = this.assetMap.assetManifest.concat(g.SoundManager.getInstance().soundManifest);
                this.assetLoader.addEventListener(e.loaders.CJSAssetLoader.PROGRESS, this.onAssetLoaderProgress, this), this.assetLoader.addEventListener(e.loaders.CJSAssetLoader.COMPLETE, this.onAssetLoaderComplete, this), this.assetLoader.load(a)
            }, b.prototype.createAssetLoader = function() {
                return new e.loaders.CJSAssetLoader(this._clientConfigData.revisionTag)
            }, b.prototype.onAssetLoaderProgress = function(a) {
                h.GameMsgBus.getInstance().dispatchEvent(new f.events.Event(h.GameMsgBus.LOAD_PROGRESS, {
                    items: 100,
                    current: a.data.progress,
                    complete: !1
                }))
            }, b.prototype.onAssetLoaderComplete = function(a) {
                h.GameMsgBus.getInstance().dispatchEvent(new f.events.Event(h.GameMsgBus.LOAD_PROGRESS, {
                    items: 100,
                    current: a.data.progress,
                    complete: !0
                })), this.assetLoader.removeEventListener(e.loaders.CJSAssetLoader.PROGRESS, this.onAssetLoaderProgress, this), this.assetLoader.removeEventListener(e.loaders.CJSAssetLoader.COMPLETE, this.onAssetLoaderComplete, this)
            }, b.prototype.onLoadProgress = function(a) {}, b
        }(f.events.EventDispatcher);
        j.LOAD_COMPLETE = "loadComplete", b.LoadController = j
    }), define("wcgf/genericGameComponents/core/controller/OrientationController", ["require", "exports", "wcgf/gameComponents/OrientationLockScreen", "wcgf/core/AssetManager", "wcgf/sounds/SoundManager"], function(a, b, c, d, e) {
        "use strict";
        var f = function() {
            function a(a, b) {
                this._pause = !1, this._resizeTimer = null, this._clientConfigData = {
                    assetPack: null,
                    language: null,
                    gameWindowWidth: 0,
                    gameWindowHeight: 0,
                    revisionTag: null
                }, this._extendCanvas = !0, this._stage = a, this._clientConfigData = b
            }
            return a.prototype.init = function() {
                this._orientationLockScreen = new c.OrientationLockScreen(d.AssetManager.getInstance().getSkin("OrientationLockScreen")), this._orientationLockScreen.init()
            }, a.prototype.getPause = function() {
                return this._pause
            }, a.prototype.setPause = function(a) {
                this._pause = a, e.SoundManager.getInstance().orientationMute = this._pause, null != this._orientationLockScreen && (this._orientationLockScreen.visible = this._pause)
            }, a.prototype.onResize = function(a) {
                var b = this;
                null == this._resizeTimer && null != this._stage && (this._resizeTimer = setTimeout(function() {
                    var a = window.innerWidth,
                        c = window.innerHeight,
                        e = b._clientConfigData.gameWindowWidth,
                        f = b._clientConfigData.gameWindowHeight;
                    ("mobile" == b._clientConfigData.assetPack || "tablet" == b._clientConfigData.assetPack) && a / c < 1 ? (e = b._clientConfigData.gameWindowHeight, f = b._clientConfigData.gameWindowWidth, d.AssetManager.getInstance().setOrientation("portrait")) : d.AssetManager.getInstance().setOrientation("landscape");
                    var g = window.devicePixelRatio || 1,
                        h = a / e,
                        i = c / f,
                        j = Math.min(h, i),
                        k = g * j,
                        l = document.getElementById("gameCanvas");
                    l.width = e * k, l.height = f * k, b._extendCanvas && "desktop" != b._clientConfigData.assetPack ? (l.style.width = a + "px", l.style.height = c + "px", b._stage.scaleX = k * (e * j) / a, b._stage.scaleY = k * (f * j) / c, b._stage.x = (l.width - e * b._stage.scaleX) / 2, b._stage.y = (l.height - f * b._stage.scaleY) / 2) : (l.style.width = e * j + "px", l.style.height = f * j + "px", b._stage.scaleX = k, b._stage.scaleY = k), null != b._orientationLockScreen && b._orientationLockScreen.setSize(e, f, j, k), b._resizeTimer = null
                }, 50))
            }, a
        }();
        b.OrientationController = f
    }), define("wcgf/genericGameComponents/core/sequenceItems/events/PlatformGameEvent", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {}
            return a
        }();
        c.BEFORE_SHOW_STAGE = "onBeforeShowStage", c.START_GAME_INITIAL = "onStartGameInitial", c.BEFORE_REQUEST = "onBeforeRequest", c.MAKE_REQUEST = "onMakeRequest",
            c.RESOLVE_STAGE = "onResolveStage", c.END_GAME = "onEndGame", c.BEGIN_NEW_GAME = "onBeginNewGame", c.EXIT_STAGE = "onExitStage", c.START_GAME_IN_PROGRESS_STAGE = "onStartGameInProgressStage", c.START_GAME_IN_PROGRESS_NEXT_STAGE = "onStartGameInProgressNextStage", c.IN_PROGRESS_STAGE = "onInProgressStage", c.ENTER_NEXT_STAGE = "onEnterNextStage", c.ABORT_NEXT_STAGE = "onAbortNextStage", c.RESET_NEXT_STAGE = "onResetNextStage", b.PlatformGameEvent = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/events/GameEvent", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {}
            return a
        }();
        c.ENABLE_GAME = "onEnableGame", c.GAME_READY = "onGameReady", b.GameEvent = c
    }), define("wcgf/genericGameComponents/view/GenericViewEventDispatcher", ["require", "exports", "wcgf/core/events", "wcgf/genericGameComponents/core/controller/StageController", "wcgf/genericGameComponents/core/sequenceItems/events/ViewEvent"], function(a, b, c, d, e) {
        "use strict";
        var f = c.events.Event,
            g = c.events.EventDispatcher,
            h = function() {
                function a() {}
                return a
            }();
        b.EventObject = h;
        var i = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b._stageControllerEvents = [], b._stageController = d.StageController.getInstance(), b.addPlatformGameEvents(), b.addGameEvents(), b
            }
            return __extends(b, a), b.prototype.addPlatformGameEvents = function() {}, b.prototype.addGameEvents = function() {}, b.prototype.createEventObject = function(a, b, c) {
                void 0 === c && (c = null);
                var d = new h;
                return d.eventName = a, d.callBack = b, d.context = c || this, d
            }, b.prototype.changeStageControllerEventListener = function(a) {
                for (var b = 0, c = this._stageControllerEvents; b < c.length; b++) {
                    var d = c[b];
                    this._stageController[a](d.eventName, d.callBack, d.context)
                }
            }, b.prototype.processing = function() {
                this.dispatchEvent(new f(e.ViewEvent.PROCESSING, null, this))
            }, b.prototype.processingComplete = function() {
                this.dispatchEvent(new f(e.ViewEvent.PROCESSING_COMPLETE, null, this))
            }, b
        }(g);
        b.GenericViewEventDispatcher = i
    }), define("wcgf/genericGameComponents/core/controller/GameController", ["require", "exports", "wcgf/messageBus/ConsoleBusProxy", "wcgf/core/AssetManager", "wcgf/core/TextManager", "wcgf/core/CurrencyFormatter", "wcgf/sounds/soundTool/SoundTool", "wcgf/gameComponents/BetManager", "wcgf/gameComponents/MobileSoundPromptController", "wcgf/gameComponents/PaytableViewController", "wcgf/gameComponents/HelpViewController", "wcgf/genericGameComponents/core/controller/LoadController", "wcgf/genericGameComponents/core/controller/OrientationController", "wcgf/genericGameComponents/core/sequenceItems/events/PlatformGameEvent", "wcgf/genericGameComponents/core/sequenceItems/events/GameEvent", "wcgf/genericGameComponents/core/sequenceItems/events/PlatformEvent", "wcgf/genericGameComponents/view/GenericViewEventDispatcher"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) {
        "use strict";
        var r = function(a) {
            function b() {
                var b = a.call(this) || this;
                return b.clientConfigData = {
                    assetPack: null,
                    language: null,
                    gameWindowWidth: 0,
                    gameWindowHeight: 0,
                    revisionTag: null,
                    filtered: !1,
                    currencyCode: null
                }, b.serverConfigData = {
                    autoSpin: null
                }, b._muteSound = !1, e.TextManager.getInstance().overrideCreateJs(), b.initClientConfig(), d.AssetManager.getInstance().clientConfigData = b.clientConfigData, b.createStage(), b._loadController = new l.LoadController(b.clientConfigData), b._loadController.addEventListener(l.LoadController.LOAD_COMPLETE, b.initializeStageController, b), b._orientationController = new m.OrientationController(b.stage, b.clientConfigData), b._paytableViewController = new j.PaytableViewController, b._helpViewController = new k.HelpViewController, b
            }
            return __extends(b, a), b.prototype.initClientConfig = function() {
                window.document.referrer.match(/&?forceDevice=([^&]+)&?/) ? this.clientConfigData.assetPack = window.document.referrer.match(/&?forceDevice=([^&]+)&?/)[1] : this.clientConfigData.assetPack = window.location.search.match(/&?assetPack=([^&]+)&?/)[1], this.clientConfigData.language = window.location.search.match(/&?language=([^&]+)&?/)[1], this.clientConfigData.revisionTag = window.location.search.match(/&?revisionTag=([^&]+)&?/)[1]
            }, b.prototype.createStage = function() {
                this.stage = new createjs.Stage(document.getElementById("gameCanvas")), "desktop" == this.clientConfigData.assetPack.toLowerCase() && this.stage.enableMouseOver(30)
            }, b.prototype.initializeStageController = function() {
                this._stageControllerEvents.push(this.createEventObject(p.PlatformEvent.SYSTEM_INIT, this.onSystemInit, this)), this._stageControllerEvents.push(this.createEventObject(p.PlatformEvent.LOAD_PROGRESS, this._loadController.onLoadProgress, this)), this._stageControllerEvents.push(this.createEventObject(p.PlatformEvent.INITIALIZE, this.onInitialize, this)), this._stageControllerEvents.push(this.createEventObject(p.PlatformEvent.CLIENT_SERVICE_GAME_INIT, this.onClientServiceInit, this)), this._stageControllerEvents.push(this.createEventObject(n.PlatformGameEvent.BEFORE_SHOW_STAGE, this.onBeforeShowStage, this)), this._stageControllerEvents.push(this.createEventObject(n.PlatformGameEvent.EXIT_STAGE, this.onExitStage, this)), this._stageControllerEvents.push(this.createEventObject(n.PlatformGameEvent.ENTER_NEXT_STAGE, this.onEnterNextStage, this)), this._stageControllerEvents.push(this.createEventObject(n.PlatformGameEvent.START_GAME_INITIAL, this.onGameInit, this)), this._stageControllerEvents.push(this.createEventObject(n.PlatformGameEvent.START_GAME_IN_PROGRESS_STAGE, this.onGameInit, this)), this._stageControllerEvents.push(this.createEventObject(o.GameEvent.ENABLE_GAME, this.onEnableGame, this)), this.changeStageControllerEventListener("addEventListener"), this._stageController.init()
            }, b.prototype.onSystemInit = function(a) {
                this.clientConfigData.filtered = "0" != a.data.serverConfig.filtered, window.document.referrer.match(/&?soundTool=true/) && new g.SoundTool, null != a.data.serverConfig.paramRGS.currencycode && (this.clientConfigData.currencyCode = a.data.serverConfig.paramRGS.currencycode), a.data.serverConfig.autospin && (this.serverConfigData.autoSpin = a.data.serverConfig.autospin)
            }, b.prototype.onInitialize = function(a) {
                this._loadController.onAssetLoaderStart(), this._stageController.dataTranslators = this._dataTranslatorList
            }, b.prototype.onClientServiceInit = function(a) {
                f.CurrencyFormatter.getInstance().setCurrencyResponse(a, this.clientConfigData.currencyCode), h.BetManager.getInstance().init(a.data), this._orientationController.init();
                var b = this;
                createjs.Ticker.framerate = 30, createjs.Ticker.addEventListener("tick", function(a) {
                    b._orientationController.getPause() || b.stage.update(a)
                }), this._stageController.sequenceList = this._sequenceList, this._paytableViewController.init(a.data), this._helpViewController.init(a.data)
            }, b.prototype.initViewEvents = function(a) {
                a.push(this), this._stageController.initViewEvents(a)
            }, b.prototype.onBeforeShowStage = function(a) {
                d.AssetManager.getInstance().updateOrientation(), this.onResize(null), this._stageController.addEventListener(p.PlatformEvent.RESIZE, this.onResize, this)
            }, b.prototype.onGameInit = function(a) {
                this.processing(), this.handleSoundPrompt(a)
            }, b.prototype.onResize = function(a) {
                this._orientationController.onResize(null)
            }, b.prototype.handleSoundPrompt = function(a) {
                "desktopmini" != this.clientConfigData.assetPack && "tabletmini" != this.clientConfigData.assetPack || (this._muteSound = !0);
                var b = d.AssetManager.getInstance().getSkin("MobileSoundPrompt");
                "desktop" != this.clientConfigData.assetPack && null != b ? (this._mobileSoundPrompt = new i.MobileSoundPromptController(b), this._mobileSoundPrompt.addEventListener(i.MobileSoundPromptController.YES_CLICK, this.onPromptClick, this), this._mobileSoundPrompt.addEventListener(i.MobileSoundPromptController.NO_CLICK, this.onPromptClick, this), this.stage.addChild(this._mobileSoundPrompt.skin), this.stage.update(), this._mobileSoundPrompt.init(a.data)) : this.processingComplete()
            }, b.prototype.onEnableGame = function(a) {
                c.ConsoleBusProxy.getInstance().registerSoundButton(), c.ConsoleBusProxy.getInstance().enableSoundButton(!0), c.ConsoleBusProxy.getInstance().muteSound(this._muteSound)
            }, b.prototype.onPromptClick = function(a) {
                this._mobileSoundPrompt.removeEventListener(i.MobileSoundPromptController.YES_CLICK, this.onPromptClick, this), this._mobileSoundPrompt.removeEventListener(i.MobileSoundPromptController.NO_CLICK, this.onPromptClick, this), this.stage.removeChild(this._mobileSoundPrompt.skin), this.stage.update(), a.type == i.MobileSoundPromptController.YES_CLICK ? this._muteSound = !1 : this._muteSound = !0, this.processingComplete()
            }, b.prototype.onExitStage = function(a) {}, b.prototype.onEnterNextStage = function(a) {}, b
        }(q.GenericViewEventDispatcher);
        b.GameController = r
    }), define("wcgf/genericGameComponents/core/sequenceItems/AbortNextStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onAbortNextStage", this.actions = []
            }
            return a
        }();
        b.AbortNextStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/BeforeRequestSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onBeforeRequest", this.actions = []
            }
            return a
        }();
        b.BeforeRequestSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/BeforeShowStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onBeforeShowStage", this.actions = []
            }
            return a
        }();
        b.BeforeShowStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/BeginNewGameSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onBeginNewGame", this.actions = []
            }
            return a
        }();
        b.BeginNewGameSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/EndGameSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onEndGame", this.actions = []
            }
            return a
        }();
        b.EndGameSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/EnterNextStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onEnterNextStage", this.actions = []
            }
            return a
        }();
        b.EnterNextStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/ExitStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onExitStage", this.actions = []
            }
            return a
        }();
        b.ExitStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/InProgressStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onInProgressStage", this.actions = []
            }
            return a
        }();
        b.InProgressStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/MakeRequestSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onMakeRequest", this.actions = []
            }
            return a
        }();
        b.MakeRequestSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/ResetNextStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onResetNextStage", this.actions = []
            }
            return a
        }();
        b.ResetNextStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/ResolveStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onResolveStage", this.actions = []
            }
            return a
        }();
        b.ResolveStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/StartGameInitialSeqItem", ["require", "exports", "wcgf/genericGameComponents/core/sequenceItems/events/GameEvent"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a() {
                this.name = "onStartGameInitial", this.actions = [c.GameEvent.ENABLE_GAME, c.GameEvent.GAME_READY]
            }
            return a
        }();
        b.StartGameInitialSeqItem = d
    }), define("wcgf/genericGameComponents/core/sequenceItems/StartGameInProgressNextStageSeqItem", ["require", "exports"], function(a, b) {
        "use strict";
        var c = function() {
            function a() {
                this.name = "onStartGameInProgressStage", this.actions = []
            }
            return a
        }();
        b.StartGameInProgressNextStageSeqItem = c
    }), define("wcgf/genericGameComponents/core/sequenceItems/StartGameInProgressStageSeqItem", ["require", "exports", "wcgf/genericGameComponents/core/sequenceItems/events/GameEvent"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a() {
                this.name = "onStartGameInProgressNextStage", this.actions = [c.GameEvent.ENABLE_GAME, c.GameEvent.GAME_READY]
            }
            return a
        }();
        b.StartGameInProgressStageSeqItem = d
    }), define("wcgf/genericGameComponents/view/IViewController", ["require", "exports"], function(a, b) {
        "use strict"
    }), define("wcgf/genericGameComponents/view/GenericGameManager", ["require", "exports", "wcgf/messageBus/GameMsgBus", "wcgf/genericGameComponents/core/controller/GameController", "wcgf/core/events", "wcgf/core/AssetManager", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/genericGameComponents/core/sequenceItems/AbortNextStageSeqItem", "wcgf/core/loaders", "wcgf/genericGameComponents/core/sequenceItems/BeforeShowStageSeqItem", "wcgf/genericGameComponents/core/sequenceItems/StartGameInitialSeqItem", "wcgf/genericGameComponents/core/sequenceItems/BeforeRequestSeqItem", "wcgf/genericGameComponents/core/sequenceItems/MakeRequestSeqItem", "wcgf/genericGameComponents/core/sequenceItems/ResolveStageSeqItem", "wcgf/genericGameComponents/core/sequenceItems/EndGameSeqItem", "wcgf/genericGameComponents/core/sequenceItems/BeginNewGameSeqItem", "wcgf/genericGameComponents/core/sequenceItems/StartGameInProgressStageSeqItem", "wcgf/genericGameComponents/core/sequenceItems/StartGameInProgressNextStageSeqItem", "wcgf/genericGameComponents/core/sequenceItems/InProgressStageSeqItem", "wcgf/genericGameComponents/core/sequenceItems/EnterNextStageSeqItem", "wcgf/genericGameComponents/core/sequenceItems/ExitStageSeqItem", "wcgf/genericGameComponents/core/sequenceItems/ResetNextStageSeqItem"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) {
        "use strict";
        var w = createjs.Container,
            x = function(a) {
                function b() {
                    var b = a.call(this) || this;
                    return b._viewControllers = new g.default, b._viewControllerConstructor = new Array, b._assetManager = f.AssetManager.getInstance(), b
                }
                return __extends(b, a), b.prototype.onInitialize = function(b) {
                    a.prototype.onInitialize.call(this, b), this.setSequenceList()
                }, b.prototype.setSequenceList = function() {
                    this._sequenceList = [new j.BeforeShowStageSeqItem, new k.StartGameInitialSeqItem, new l.BeforeRequestSeqItem, new m.MakeRequestSeqItem, new n.ResolveStageSeqItem, new o.EndGameSeqItem, new p.BeginNewGameSeqItem, new u.ExitStageSeqItem, new q.StartGameInProgressStageSeqItem, new r.StartGameInProgressNextStageSeqItem, new s.InProgressStageSeqItem, new t.EnterNextStageSeqItem, new h.AbortNextStageSeqItem, new v.ResetNextStageSeqItem]
                }, b.prototype.onClientServiceInit = function(b) {
                    a.prototype.onClientServiceInit.call(this, b), this.createViewControllers(), this.addGameContainerToStage(), this.addContainersToStage(this._containers), c.GameMsgBus.getInstance().dispatchEvent(new e.events.Event(c.GameMsgBus.GAME_INIT_DONE, {
                        version: {
                            gameVersion: "1,0",
                            gleVersion: "1.0"
                        }
                    }))
                }, b.prototype.onBeforeShowStage = function(b) {
                    this.initTransition(), this.viewHandler(b), a.prototype.onBeforeShowStage.call(this, b)
                }, b.prototype.initTransition = function() {}, b.prototype.onGameInit = function(b) {
                    a.prototype.onGameInit.call(this, b), this._activeViewController.enable = !1
                }, b.prototype.onEnableGame = function(b) {
                    a.prototype.onEnableGame.call(this, b), this._activeViewController.enable = !0
                }, b.prototype.onExitStage = function(b) {
                    a.prototype.onExitStage.call(this, b), this.processing(), this.handleTransitionOut(b)
                }, b.prototype.handleTransitionOut = function(a) {
                    this._exitStageEvent = a
                }, b.prototype.onTransitionOutDone = function(a) {
                    this.viewHandler(this._exitStageEvent)
                }, b.prototype.onTransitionInDone = function(a) {
                    this.processingComplete()
                }, b.prototype.viewHandler = function(a) {
                    this.processing(), this._viewHandlerData = a.data;
                    var b = this.getNextViewName(this._viewHandlerData),
                        c = this._viewControllers.getValue(b);
                    c.addEventListener(i.loaders.CJSAssetLoader.COMPLETE, this.onViewLoadComplete, this), c.load()
                }, b.prototype.onViewLoadComplete = function(a) {
                    a.target.removeEventListener(i.loaders.CJSAssetLoader.COMPLETE, this.onViewLoadComplete, this);
                    var b = this.getNextViewName(this._viewHandlerData);
                    this.handleNextActiveStage(b), this.stage.update(), this._activeViewController.init(this._viewHandlerData), this.processingComplete()
                }, b.prototype.getNextViewName = function(a) {
                    return a.gameLogicResponse.outcomeDetail.nextStage
                }, b.prototype.createViewControllers = function() {
                    if (null != this._viewControllerConstructor) {
                        for (var a = new Array, b = 0, c = this._viewControllerConstructor; b < c.length; b++) {
                            var d = c[b];
                            this._viewControllers.setValue(d.stageName, d), a.push(d)
                        }
                        this.initViewEvents(a)
                    }
                }, b.prototype.addGameContainerToStage = function() {
                    this._gameContainer = new w, this.stage.addChild(this._gameContainer)
                }, b.prototype.addContainersToStage = function(a) {
                    if (null != a)
                        for (var b = 0, c = this._containers; b < c.length; b++) {
                            var d = c[b];
                            d = new w, this.stage.addChild(d)
                        }
                }, b.prototype.handleNextActiveStage = function(a) {
                    null != this._activeViewController && this._activeViewController.removeFromStage(this._gameContainer), null != this._viewControllers.getValue(a) && (this._activeViewController = this._viewControllers.getValue(a), this._activeViewController.addToStage(this._gameContainer))
                }, b.prototype.getViewController = function(a) {
                    return this._viewControllers.getValue(a)
                }, b
            }(d.GameController);
        x.DESKTOP_ASSET_PACK = "desktop", b.GenericGameManager = x
    }), define("wcgf/genericGameComponents/view/GenericView", ["require", "exports", "wcgf/core/loaders", "wcgf/core/events", "wcgf/genericGameComponents/core/sequenceItems/events/GameEvent", "wcgf/genericGameComponents/view/GenericViewEventDispatcher", "wcgf/genericGameComponents/core/sequenceItems/events/PlatformGameEvent"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h = function(a) {
            function b() {
                return a.call(this) || this
            }
            return __extends(b, a), Object.defineProperty(b.prototype, "enable", {
                get: function() {
                    return this._enable
                },
                set: function(a) {
                    this._enable = a
                },
                enumerable: !0,
                configurable: !0
            }), b.prototype.load = function() {
                this.dispatchEvent(new d.events.Event(c.loaders.CJSAssetLoader.COMPLETE, {
                    progress: 100
                }, this))
            }, b.prototype.addPlatformGameEvents = function() {
                a.prototype.addPlatformGameEvents.call(this), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.BEFORE_SHOW_STAGE, this.stageController_onBeforeShowStage)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.START_GAME_INITIAL, this.stageController_onStartGameInitial)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.BEFORE_REQUEST, this.stageController_onBeforeRequest)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.MAKE_REQUEST, this.stageController_onMakeRequest)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.RESOLVE_STAGE, this.stageController_onResolveStage)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.END_GAME, this.stageController_onEndGame)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.BEGIN_NEW_GAME, this.stageController_onBeginNewGame)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.EXIT_STAGE, this.stageController_onExitStage)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.START_GAME_IN_PROGRESS_STAGE, this.stageController_onStartInProgress)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.START_GAME_IN_PROGRESS_NEXT_STAGE, this.stageController_onStartInProgressNextStage)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.IN_PROGRESS_STAGE, this.stageController_onInProgress)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.ENTER_NEXT_STAGE, this.stageController_onEnterNextStage)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.ABORT_NEXT_STAGE, this.stageController_onAbortNextStage)), this._stageControllerEvents.push(this.createEventObject(g.PlatformGameEvent.RESET_NEXT_STAGE, this.stageController_onResetNextStage))
            }, b.prototype.addGameEvents = function() {
                a.prototype.addGameEvents.call(this), this._stageControllerEvents.push(this.createEventObject(e.GameEvent.ENABLE_GAME, this.stageController_onEnableGame)), this._stageControllerEvents.push(this.createEventObject(e.GameEvent.GAME_READY, this.stageController_onGameReady))
            }, b.prototype.addToStage = function(a) {
                this.changeStageControllerEventListener("addEventListener"), this.enable = !0
            }, b.prototype.removeFromStage = function(a) {
                this.changeStageControllerEventListener("removeEventListener"), this.enable = !1
            }, b.prototype.stageController_onBeforeShowStage = function(a) {}, b.prototype.stageController_onStartGameInitial = function(a) {}, b.prototype.stageController_onBeforeRequest = function(a) {}, b.prototype.stageController_onMakeRequest = function(a) {}, b.prototype.stageController_onResolveStage = function(a) {}, b.prototype.stageController_onEndGame = function(a) {}, b.prototype.stageController_onBeginNewGame = function(a) {}, b.prototype.stageController_onExitStage = function(a) {}, b.prototype.stageController_onStartInProgress = function(a) {}, b.prototype.stageController_onStartInProgressNextStage = function(a) {}, b.prototype.stageController_onInProgress = function(a) {}, b.prototype.stageController_onEnterNextStage = function(a) {}, b.prototype.stageController_onAbortNextStage = function(a) {}, b.prototype.stageController_onResetNextStage = function(a) {}, b.prototype.stageController_onEnableGame = function(a) {}, b.prototype.stageController_onGameReady = function(a) {}, b
        }(f.GenericViewEventDispatcher);
        b.GenericView = h
    }), define("wcgf/genericGameComponents/view/GenericSlotViewController", ["require", "exports", "wcgf/core/AssetManager", "wcgf/gameComponents/reelsV2/combinedReelSet/ReelSet", "wcgf/genericGameComponents/controls/GenericBetControls", "wcgf/genericGameComponents/controls/GenericSlotControls", "wcgf/core/events", "wcgf/coreComponents/GenericMessageController", "wcgf/coreComponents/GenericStepperController", "wcgf/coreComponents/GenericPlaqueController", "wcgf/gameComponents/RollupIncrementer", "wcgf/sequencers/ISequenceItem", "wcgf/sequencers/TimerEventSequenceItem", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/gameComponents/BetManager", "wcgf/genericGameComponents/view/GenericView", "wcgf/gameComponents/reelsV2/ISymbolsManager"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) {
        "use strict";
        var r = g.events.Event,
            s = function(a) {
                function b() {
                    var b = a.call(this) || this;
                    return b._isInit = !1, b._spinStarted = !1, b._firstCycleComplete = !1, b._beginNewGame = !1, b._exitStage = !1, b._autoSpinPauseSeq = new m.TimerEventSequenceItem(1e3), b._assetManager = c.AssetManager.getInstance(), b._skin = b._assetManager.getSkin(b.viewSkinName), b._genericBetControls = new e.GenericBetControls, b._genericSlotControls = new f.GenericSlotControls(b._genericBetControls.betControls), b._messageController = new h.GenericMessageController, b._plaqueController = new j.GenericPlaqueController, b
                }
                return __extends(b, a), b.prototype.init = function(a) {
                    this._isInit || (this._isInit = !0, this._genericSlotControls.init(a), this._genericBetControls.init(a), this._genericSlotControls.checkInsufficientFunds(), this._reelSet.stripInfoName = this._stripInfoName, this._reelSet.populationOutcomeName = this._populationOutcomeName, this._spinStrategies = this.getSpinStrategies(this._reelNumber, this._spinStrategy), this._reelSet.init(a.paytableResponse.stripsInfo, a.gameLogicResponse.populationOutcomes, this.getPool(this._symbolNames), this.getDynamicSymbolsMap(a)), this._messageController.init(), this._plaqueController.init(a)), this._genericSlotControls.state = f.ControlsState.Disable, this.addEventListeners()
                }, b.prototype.getSpinStrategies = function(a, c) {
                    for (var d = new n.default, e = 0; e < a; e++) d.setValue(b.REEL_NAME + e, c);
                    return d
                }, b.prototype.getPool = function(a, b) {
                    void 0 === b && (b = 10);
                    var c = [];
                    if (a)
                        for (var d = 0, e = a; d < e.length; d++) {
                            var f = e[d];
                            c.push({
                                symbolId: f,
                                states: [new q.SymbolStatePoolInfo("static", b), new q.SymbolStatePoolInfo("land", null, b / 2), new q.SymbolStatePoolInfo("high", null, b / 2)]
                            })
                        }
                    return c
                }, b.prototype.getDynamicSymbolsMap = function(a) {}, b.prototype.stageController_onGameReady = function(b) {
                    a.prototype.stageController_onGameReady.call(this, b), this.processing()
                }, b.prototype.onSpinButtonClick = function(a) {
                    this.startSpin()
                }, b.prototype.startSpin = function() {
                    o.BetManager.getInstance().deductBalance(), this.clearEvents(), this._plaqueController.hideCurrentPlaque(), this._genericSlotControls.state = f.ControlsState.Spinning, this._genericBetControls.resetWin(), this._firstCycleComplete = !1, this._beginNewGame = !1, this._spinStarted = !0, this._reelSet.spin(null), this.processingComplete()
                }, b.prototype.onSkipButtonClick = function(a) {
                    this._genericBetControls.skipRollup()
                }, b.prototype.onAutoPlayChoicesClick = function(a) {
                    this.startSpin()
                }, b.prototype.onAutoPlayStopClick = function(a) {
                    this._autoSpinPauseSeq.hasEventListener(l.sequencers.SEQUENCE_END, this.startSpin, this) && this._autoSpinPauseSeq.removeEventListener(l.sequencers.SEQUENCE_END, this.startSpin, this), this._genericSlotControls.state == f.ControlsState.AutoSpinIdle && (this._genericSlotControls.state = f.ControlsState.Idle)
                }, b.prototype.onBetLineValueChange = function(a) {
                    this._plaqueController.hideCurrentPlaque(), this.clearEvents(), this._genericBetControls.resetWin(), this._genericSlotControls.checkInsufficientFunds()
                }, b.prototype.stageController_onMakeRequest = function(b) {
                    a.prototype.stageController_onMakeRequest.call(this, b), o.BetManager.getInstance().playAction()
                }, b.prototype.stageController_onResolveStage = function(b) {
                    a.prototype.stageController_onResolveStage.call(this, b), this.processing(), this._eventData = b, this.onStopSpin_handler(b)
                }, b.prototype.onStopSpin_handler = function(a) {
                    if (a.data.gameLogicResponse.outcomeDetail.nextStage != this.stageName && (this._exitStage = !0), null != a.data.gameLogicResponse.promotionalFreeSpin) {
                        var b = a.data.gameLogicResponse.promotionalFreeSpin.count.toString();
                        this._genericBetControls.updatePromoFS(b), this._genericBetControls.setPromoFSCount(a.data)
                    }
                    this._spinStarted ? (this._spinStarted = !1, this._reelSet.stopSpin(a.data.gameLogicResponse.populationOutcomes, this._spinDuration)) : this.handleWinCelebration(a)
                }, b.prototype.onReelStopSpinBegin = function(a) {}, b.prototype.onAllReelStop = function(a) {
                    this.handleWinCelebration(this._eventData)
                }, b.prototype.handleWinCelebration = function(a) {
                    a.data.gameLogicResponse.awardCapOutcome.awardCapExceeded ? (this._plaqueController.displayLabeledTextField(this._plaqueController.maxAwardPlaque, this._eventData.data.paytableResponse.awardCapInfo.currencyCap.awardCap), this._genericSlotControls.state = f.ControlsState.Idle, this._genericBetControls.updateWin(this._eventData.data), this.processingComplete()) : this.dispatchEvent(new g.events.Event(b.BEGIN_WIN_CELEBRATION, this._eventData))
                }, b.prototype.setPayoutSequence = function(a) {
                    this._genericBetControls.setPayout(a.data), this._genericBetControls.setRollupSequence(), this._genericSlotControls.state = f.ControlsState.Rollup, this._genericBetControls.rollup.addEventListener(k.RollupIncrementer.ROLLUP_COMPLETE, this.onRollupComplete, this)
                }, b.prototype.skipWinCelebration = function() {
                    this._firstCycleComplete = !0, this.processingComplete()
                }, b.prototype.onFirstCycle_Complete = function(a) {
                    this._firstCycleComplete = !0, this._genericSlotControls.autoSpinIsActive() && (this.dispatchEvent(new g.events.Event(b.STOP_WIN_CELEBRATION)), this.handleAutoSpin())
                }, b.prototype.onRollupComplete = function(a) {
                    this._genericBetControls.rollup.removeEventListener(k.RollupIncrementer.ROLLUP_COMPLETE, this.onRollupComplete, this), this.processingComplete()
                }, b.prototype.handleAutoSpin = function() {
                    this._genericSlotControls.autoSpinIsActive() && this._firstCycleComplete && this._beginNewGame && (this._autoSpinPauseSeq.addEventListener(l.sequencers.SEQUENCE_END, this.startSpin, this), this._autoSpinPauseSeq.startSequence())
                }, b.prototype.clearEvents = function() {
                    this.dispatchEvent(new r(b.STOP_WIN_CELEBRATION)), this._genericBetControls.rollup.hasEventListener(k.RollupIncrementer.ROLLUP_COMPLETE, this.onRollupComplete, this) && this._genericBetControls.rollup.removeEventListener(k.RollupIncrementer.ROLLUP_COMPLETE, this.onRollupComplete, this), this._autoSpinPauseSeq.hasEventListener(l.sequencers.SEQUENCE_END, this.startSpin, this) && this._autoSpinPauseSeq.removeEventListener(l.sequencers.SEQUENCE_END, this.startSpin, this)
                }, b.prototype.handleIdleControlState = function() {
                    this._genericSlotControls.handleAutoPlayEnd(), this._genericBetControls.promoFSCount <= 0 ? this._genericSlotControls.state = f.ControlsState.Disable : this._genericSlotControls.autoSpinIsActive() ? this._genericSlotControls.state = f.ControlsState.AutoSpinIdle : this._genericSlotControls.state = f.ControlsState.Idle
                }, b.prototype.stageController_onEndGame = function(c) {
                    a.prototype.stageController_onEndGame.call(this, c), this.processing(), c.data.gameLogicResponse.outcomeDetail.stage != this.stageName ? (this.dispatchEvent(new r(b.ON_TRANSITION_IN_DONE)), this.handleWinCelebration(c)) : this.processingComplete()
                }, b.prototype.stageController_onBeginNewGame = function(b) {
                    a.prototype.stageController_onBeginNewGame.call(this, b), this.processing(), this._beginNewGame = !0, this.handleIdleControlState(), this.handleAutoSpin()
                }, b.prototype.stageController_onExitStage = function(c) {
                    a.prototype.stageController_onExitStage.call(this, c), this.processing(), this.dispatchEvent(new g.events.Event(b.ON_TRANSITION_IN_START))
                }, b.prototype.beginTransitionOut = function() {
                    this.clearEvents(), this._plaqueController.hideCurrentPlaque(), this._genericSlotControls.state = f.ControlsState.BonusTransition, this.processingComplete()
                }, b.prototype.stageController_onAbortNextStage = function(b) {
                    a.prototype.stageController_onAbortNextStage.call(this, b), this._genericSlotControls.state = f.ControlsState.Disable, this._reelSet.reset(b.data.gameLogicResponse.populationOutcomes, null)
                }, b.prototype.stageController_onResetNextStage = function(b) {
                    a.prototype.stageController_onResetNextStage.call(this, b), this.processing(), this._genericSlotControls.state = f.ControlsState.Idle
                }, b.prototype.onStartButtonClick = function(a) {}, b.prototype.enableControls = function(a) {
                    void 0 === a && (a = !0), this._genericSlotControls.state = a ? f.ControlsState.Idle : f.ControlsState.Disable
                }, b.prototype.addToStage = function(b) {
                    a.prototype.addToStage.call(this, b), b.addChild(this._skin);
                    for (var c = 0, d = this._skinList; c < d.length; c++) {
                        var e = d[c];
                        b.addChild(this._assetManager.getSkin(e))
                    }
                }, b.prototype.removeFromStage = function(b) {
                    a.prototype.removeFromStage.call(this, b), b.removeChild(this._skin);
                    for (var c = 0, d = this._skinList; c < d.length; c++) {
                        var e = d[c];
                        b.removeChild(this._assetManager.getSkin(e))
                    }
                    this.removeEventListeners()
                }, b.prototype.removeChild = function(a) {
                    this._skin.removeChild(this._assetManager.getSkin(a))
                }, Object.defineProperty(b.prototype, "isInit", {
                    get: function() {
                        return this._isInit
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "spinStarted", {
                    get: function() {
                        return this._spinStarted
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "assetManager", {
                    get: function() {
                        return this._assetManager
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "reelSet", {
                    get: function() {
                        return this._reelSet
                    },
                    set: function(a) {
                        this._reelSet = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "genericControls", {
                    get: function() {
                        return this._genericBetControls
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "genericSlotControls", {
                    get: function() {
                        return this._genericSlotControls
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "enable", {
                    get: function() {
                        return this._enable
                    },
                    set: function(a) {
                        this._enable != a && (this._enable = a, a ? this.enableControls(!0) : this.enableControls(!1))
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "spinStrategies", {
                    get: function() {
                        return this._spinStrategies
                    },
                    enumerable: !0,
                    configurable: !0
                }), b.prototype.addEventListeners = function() {
                    this._isInit && (this._genericSlotControls.addEventListener(f.GenericSlotControls.SPIN_BUTTON_CLICK, this.onSpinButtonClick, this), this._genericSlotControls.addEventListener(f.GenericSlotControls.SKIP_BUTTON_CLICK, this.onSkipButtonClick, this), this._genericSlotControls.addEventListener(f.GenericSlotControls.START_BUTTON_CLICK, this.onStartButtonClick, this), this._genericSlotControls.addEventListener(f.GenericSlotControls.AUTO_PLAY_CHOICES_CLICK, this.onAutoPlayChoicesClick, this), this._genericSlotControls.addEventListener(f.GenericSlotControls.AUTO_PLAY_STOP_CLICK, this.onAutoPlayStopClick, this),
                        this._genericBetControls.addEventListener(i.GenericStepperController.VALUE_CHANGE, this.onBetLineValueChange, this), this._reelSet.addEventListener(d.ReelSet.REEL_STOP_SPIN_BEGIN, this.onReelStopSpinBegin, this), this._reelSet.addEventListener(d.ReelSet.ALL_REEL_STOP, this.onAllReelStop, this), this._genericBetControls.addEventListeners(), this._genericSlotControls.addEventListeners())
                }, b.prototype.removeEventListeners = function() {
                    this._isInit && (this._genericSlotControls.removeEventListener(f.GenericSlotControls.SPIN_BUTTON_CLICK, this.onSpinButtonClick, this), this._genericSlotControls.removeEventListener(f.GenericSlotControls.SKIP_BUTTON_CLICK, this.onSkipButtonClick, this), this._genericSlotControls.removeEventListener(f.GenericSlotControls.START_BUTTON_CLICK, this.onStartButtonClick, this), this._genericSlotControls.removeEventListener(f.GenericSlotControls.AUTO_PLAY_CHOICES_CLICK, this.onAutoPlayChoicesClick, this), this._genericSlotControls.removeEventListener(f.GenericSlotControls.AUTO_PLAY_STOP_CLICK, this.onAutoPlayStopClick, this), this._genericBetControls.removeEventListener(i.GenericStepperController.VALUE_CHANGE, this.onBetLineValueChange, this), this._reelSet.removeEventListener(d.ReelSet.REEL_STOP_SPIN_BEGIN, this.onReelStopSpinBegin, this), this._reelSet.removeEventListener(d.ReelSet.ALL_REEL_STOP, this.onAllReelStop, this), this._genericBetControls.removeEventListeners(), this._genericSlotControls.removeEventListeners())
                }, b
            }(p.GenericView);
        s.REEL_NAME = "Reel", s.ON_TRANSITION_IN_START = "GenericViewTransitionOutStart", s.ON_TRANSITION_IN_DONE = "GenericViewTransitionInDone", s.BEGIN_WIN_CELEBRATION = "GenericViewBeginWinCelebration", s.STOP_WIN_CELEBRATION = "GenericViewStopWinCelebration", b.GenericSlotViewController = s
    }), define("wcgf/particles/Particle", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/gameComponents/MovieClipSequenceItem", "wcgf/sequencers/LinearSequencer", "wcgf/sequencers/ISequenceItem", "wcgf/core/events"], function(a, b, c, d, e, f, g) {
        "use strict";
        var h = createjs.Ticker,
            i = function(a) {
                function b(b) {
                    var c = a.call(this, b) || this;
                    return c._velocity = {
                        x: 0,
                        y: 0
                    }, c._acceleration = {
                        x: 0,
                        y: 0
                    }, c._lifeTime = 1e3, c._rotationSpeed = 0, c.onFrame = function(a) {
                        c.skin.x += c._velocity.x * (a.delta / c._frameTime), c.skin.y += c._velocity.y * (a.delta / c._frameTime), c.skin.rotation += c._rotationSpeed * (a.delta / c._frameTime), c._velocity.x += c._acceleration.x * (a.delta / c._frameTime), c._velocity.y += c._acceleration.y * (a.delta / c._frameTime)
                    }, c.skin.gotoAndStop("SpawnStart"), c._frameTime = 1e3 / h.framerate, c._spawnAnim = new d.MovieClipSequenceItem(c.skin, "SpawnStart", "SpawnEnd", 1), c._spawnAnim.addEventListener(f.sequencers.SEQUENCE_END, c.onSpawnEnd, c), c._loopAnim = new d.MovieClipSequenceItem(c.skin, "LoopStart", "LoopEnd", 0), c._deathAnim = new d.MovieClipSequenceItem(c.skin, "DeathStart", "DeathEnd", 1), c._anim = new e.LinearSequencer([c._spawnAnim, c._loopAnim, c._deathAnim]), c._anim.startSequence(), createjs.Ticker.addEventListener("tick", c.onFrame), c
                }
                return __extends(b, a), b.prototype.onSpawnEnd = function(a) {
                    this._spawnAnim.removeEventListener(f.sequencers.SEQUENCE_END, this.onSpawnEnd, this);
                    var b = this,
                        c = setTimeout(function() {
                            b._loopAnim.stopSequence(), b._deathAnim.addEventListener(f.sequencers.SEQUENCE_END, b.onDeathEnd, b), clearTimeout(c)
                        }, this._lifeTime)
                }, b.prototype.onDeathEnd = function(a) {
                    this._deathAnim.removeEventListener(f.sequencers.SEQUENCE_END, this.onDeathEnd, this), this._anim.stopSequence(!0), this._anim = null, this._deathAnim.stopSequence(!0), this._deathAnim = null, this._loopAnim.stopSequence(!0), this._loopAnim = null, this._spawnAnim.stopSequence(!0), this._spawnAnim = null, createjs.Ticker.removeEventListener("tick", this.onFrame), this.dispatchEvent(new g.events.Event(b.PARTICLE_DONE, null, this))
                }, Object.defineProperty(b.prototype, "lifeTime", {
                    get: function() {
                        return this._lifeTime
                    },
                    set: function(a) {
                        this._lifeTime = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "velocity", {
                    get: function() {
                        return this._velocity
                    },
                    set: function(a) {
                        this._velocity = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "acceleration", {
                    get: function() {
                        return this._acceleration
                    },
                    set: function(a) {
                        this._acceleration = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), Object.defineProperty(b.prototype, "rotationSpeed", {
                    get: function() {
                        return this._rotationSpeed
                    },
                    set: function(a) {
                        this._rotationSpeed = a
                    },
                    enumerable: !0,
                    configurable: !0
                }), b
            }(c.GenericViewController);
        i.PARTICLE_DONE = "ParticleParticleDone", b.Particle = i
    }), define("wcgf/particles/ParticleEmitter", ["require", "exports", "wcgf/coreComponents/GenericViewController", "wcgf/particles/Particle", "wcgf/core/AssetManager", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function(a) {
            function b(b, c, g) {
                void 0 === g && (g = null);
                var h = a.call(this, b) || this;
                return h._pool = new f.default, h._particleNames = new Array, h._spawnVelocity = {
                    minX: 0,
                    minY: 0,
                    maxX: 0,
                    maxY: 0
                }, h._particuleAcceleration = {
                    minX: 0,
                    minY: 0,
                    maxX: 0,
                    maxY: 0
                }, h._spawnRate = {
                    min: 0,
                    max: 0
                }, h._spawnCount = {
                    min: 1,
                    max: 1
                }, h._spawnRotation = {
                    min: 0,
                    max: 0
                }, h._spawnScale = {
                    min: 1,
                    max: 1
                }, h._emitterSize = 0, h._particleLifeTime = {
                    min: 1e3,
                    max: 1e3
                }, h._particleRotationSpeed = {
                    min: 0,
                    max: 0
                }, h._running = !1, h._compositeOperation = null, h.spawn = function() {
                    for (var a = 0; a < h.getRandom(h._spawnCount.min, h._spawnCount.max); a++) {
                        var b = Math.round(h.getRandom(0, h._particleNames.length - 1)),
                            c = h._assetManager.getNewAsset(h._particleNames[b]),
                            e = new d.Particle(c);
                        null != h._compositeOperation && (c.compositeOperation = h._compositeOperation), e.addEventListener(d.Particle.PARTICLE_DONE, h.onParticleDone, h);
                        var f = h.getRandom(0, 1),
                            g = h.skin.x + Math.cos(f) * h.getRandom(-h._emitterSize, h._emitterSize),
                            i = h.skin.y + Math.sin(f) * h.getRandom(-h._emitterSize, h._emitterSize),
                            j = h.skin.parent.localToLocal(g, i, h._container);
                        e.skin.x = j.x, e.skin.y = j.y;
                        var k = h.getRandom(h._spawnVelocity.minX, h._spawnVelocity.maxX),
                            l = h.getRandom(h._spawnVelocity.minY, h._spawnVelocity.maxY),
                            f = h.localToLocalRotation(h._container);
                        e.velocity.x = k * Math.cos(f) + l * Math.sin(f), e.velocity.y = k * Math.sin(f) + l * Math.cos(f), e.acceleration.x = h.getRandom(h._particuleAcceleration.minX, h._particuleAcceleration.maxY), e.acceleration.y = h.getRandom(h._particuleAcceleration.minY, h._particuleAcceleration.maxY), e.skin.rotation = h.getRandom(h._spawnRotation.min, h._spawnRotation.max), e.skin.scaleX = e.skin.scaleY = h.getRandom(h._spawnScale.min, h._spawnScale.max), e.lifeTime = h.getRandom(h._particleLifeTime.min, h._particleLifeTime.max), e.rotationSpeed = h.getRandom(h._particleRotationSpeed.min, h._particleRotationSpeed.max), h._container.addChild(e.skin)
                    }
                    if (clearTimeout(h._spawnTimer), h._running) {
                        var m = Math.random() * (h._spawnRate.max - h._spawnRate.min) + h._spawnRate.min,
                            n = h;
                        h._spawnTimer = setTimeout(function() {
                            n.spawn()
                        }, m)
                    }
                }, h._assetManager = e.AssetManager.getInstance(), h._particleNames = c, h._container = null != g ? g : h.skin.parent, h
            }
            return __extends(b, a), b.prototype.start = function() {
                this._running = !0;
                var a = Math.random() * (this._spawnRate.max = this._spawnRate.min) + this._spawnRate.min,
                    b = this;
                this._spawnTimer = setTimeout(function() {
                    b.spawn()
                }, a)
            }, b.prototype.onParticleDone = function(a) {
                var b = a.target;
                this._container.removeChild(b.skin), b.skin = null, b.removeEventListener(d.Particle.PARTICLE_DONE, this.onParticleDone, this), b = null
            }, b.prototype.stop = function() {
                clearTimeout(this._spawnTimer), this._running = !1
            }, b.prototype.getRandom = function(a, b) {
                return Math.random() * (b - a) + a
            }, b.prototype.localToLocalRotation = function(a) {
                var b = this.skin.localToLocal(0, 0, a),
                    c = this.skin.localToLocal(0, 1, a);
                return Math.atan2(c.x - b.x, c.y - b.y)
            }, Object.defineProperty(b.prototype, "spawnRate", {
                get: function() {
                    return this._spawnRate
                },
                set: function(a) {
                    this._spawnRate = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "spawnCount", {
                get: function() {
                    return this._spawnCount
                },
                set: function(a) {
                    this._spawnCount = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "spawnVelocity", {
                get: function() {
                    return this._spawnVelocity
                },
                set: function(a) {
                    this._spawnVelocity = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "spawnRotation", {
                get: function() {
                    return this._spawnRotation
                },
                set: function(a) {
                    this._spawnRotation = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "spawnScale", {
                get: function() {
                    return this._spawnScale
                },
                set: function(a) {
                    this._spawnScale = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "emitterSize", {
                get: function() {
                    return this._emitterSize
                },
                set: function(a) {
                    this._emitterSize = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "particleLifeTime", {
                get: function() {
                    return this._particleLifeTime
                },
                set: function(a) {
                    this._particleLifeTime = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "particuleAcceleration", {
                get: function() {
                    return this._particuleAcceleration
                },
                set: function(a) {
                    this._particuleAcceleration = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "particleRotationSpeed", {
                get: function() {
                    return this._particleRotationSpeed
                },
                set: function(a) {
                    this._particleRotationSpeed = a
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "compositeOperation", {
                get: function() {
                    return this._compositeOperation
                },
                set: function(a) {
                    this._compositeOperation = a
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.GenericViewController);
        b.ParticleEmitter = g
    }), define("wcgf/sequencers/EventListenerSequenceItem", ["require", "exports", "wcgf/sequencers/ISequenceItem", "wcgf/core/events"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c, d) {
                var e = a.call(this) || this;
                return e._isSequenceDone = !0, e._isSequenceEnded = !0, e._isSequenceStarted = !0, e._target = b, e._eventType = c, e._context = d, e
            }
            return __extends(b, a), b.prototype.startSequence = function(a) {
                void 0 === a && (a = !1), !a && this._isSequenceStarted || (this.resetSequence(), this._isSequenceStarted = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_START, null, this)), this._target.addEventListener(this._eventType, this.onEvent, this))
            }, b.prototype.onEvent = function(a) {
                this._target.removeEventListener(this._eventType, this.onEvent, this._context), this._isSequenceDone = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_DONE, null, this)), this._isSequenceStarted = !1, this._isSequenceEnded = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_END, null, this))
            }, b.prototype.resetSequence = function() {
                this._target.removeEventListener(this._eventType, this.onEvent, this._context), this._isSequenceDone = !1, this._isSequenceEnded = !1, this._isSequenceStarted = !1
            }, b.prototype.stopSequence = function() {
                this.resetSequence(), this._isSequenceDone = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_DONE, null, this)), this._isSequenceEnded = !0, this.dispatchEvent(new d.events.Event(c.sequencers.SEQUENCE_END, null, this))
            }, Object.defineProperty(b.prototype, "isSequenceDone", {
                get: function() {
                    return this._isSequenceDone
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceEnded", {
                get: function() {
                    return this._isSequenceEnded
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "isSequenceStarted", {
                get: function() {
                    return this._isSequenceStarted
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(d.events.EventDispatcher);
        b.EventListenerSequenceItem = e
    }), define("wcgf/textFormatters/TextValueFormatter", ["require", "exports", "wcgf/core/TextManager"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a(a) {
                this.textName = null, this._formatData = null, this.setFormatData(a)
            }
            return a.prototype.setFormatData = function(a) {
                this._formatData = a
            }, a.prototype.format = function(a) {
                var b = c.TextManager.getInstance().getText(this.textName);
                return b = b.replace(/\[.*?\]/g, ""), a += b
            }, a
        }();
        b.TextValueFormatter = d
    }), define("wcgf/tools/SymbolDisplayTool/Settings", ["require", "exports", "wcgf/core/events"], function(a, b, c) {
        "use strict";
        var d = function(a) {
            function b() {
                var b = a.call(this) || this;
                b._addCount = 1, b._defaultAnim = "static";
                var c = b;
                return b._settingsDiv = document.getElementById("settingsDiv"), b._chkShowBg = document.getElementById("settingsChkShowBg"), b._addCountInput = document.getElementById("settingsAddCount"), b._defauttAnimSelect = document.getElementById("settingsDefaultAnim"), b._btnOk = document.getElementById("settingsBtnOk"), b._btnOk.onclick = function() {
                    c.hide()
                }, b
            }
            return __extends(b, a), b.prototype.setStates = function(a) {
                this._defauttAnimSelect.innerHTML = "";
                for (var b = 0, c = a; b < c.length; b++) {
                    var d = c[b],
                        e = document.createElement("option");
                    e.innerText = d, e.value = d, this._defauttAnimSelect.appendChild(e)
                }
            }, b.prototype.show = function() {
                this._settingsDiv.style.display = "block"
            }, b.prototype.hide = function() {
                this._settingsDiv.style.display = "none", this.dispatchEvent(new c.events.Event(b.CLOSE, null, this))
            }, Object.defineProperty(b.prototype, "displayBackGround", {
                get: function() {
                    return !!this._chkShowBg && this._chkShowBg.checked
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "addCount", {
                get: function() {
                    return null != this._addCountInput ? parseInt(this._addCountInput.value) : 1
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "defaultAnim", {
                get: function() {
                    return null != this._defauttAnimSelect ? this._defauttAnimSelect.value : "static"
                },
                enumerable: !0,
                configurable: !0
            }), Object.defineProperty(b.prototype, "visible", {
                get: function() {
                    return null != this._settingsDiv && "block" == this._settingsDiv.style.display
                },
                enumerable: !0,
                configurable: !0
            }), b
        }(c.events.EventDispatcher);
        d.CLOSE = "symbolDisplaySettingsClose", b.Settings = d
    }), define("wcgf/tools/SymbolDisplayTool/SymbolDisplayTool", ["require", "exports", "wcgf/core/loaders", "wcgf/core/AssetManager", "wcgf/gameComponents/reelsV2/SymbolsManager", "wcgf/tools/SymbolDisplayTool/Settings"], function(a, b, c, d, e, f) {
        "use strict";
        var g = function() {
            function a() {
                this._symbolList = [], this._selectedSymbol = null, this._maxWidth = 0, this._mcX = 0, this._mcY = 0, this._stage = new createjs.Stage(document.getElementById("gameCanvas")), this._stage.enableMouseOver(30);
                var a = this;
                createjs.Ticker.framerate = 30, createjs.Ticker.addEventListener("tick", function(b) {
                    a._stage.update()
                }), this._settings = new f.Settings, this._settings.addEventListener(f.Settings.CLOSE, this.onSettingClose, this), this._bgContainer = new createjs.Container, this._symbolContainer = new createjs.Container, this._stage.addChild(this._bgContainer), this._stage.addChild(this._symbolContainer), this._symbolManager = new e.SymbolsManager(this._symbolContainer, null), this._txtFps = document.getElementById("txtFPS");
                setInterval(function() {
                    a._txtFps.innerText = "FPS:" + createjs.Ticker.getMeasuredFPS().toFixed(0)
                }, 500);
                this._stageMenu = document.getElementById("stageMenu"), this._symbolMenu = document.getElementById("symbolMenu"), this._btnSetting = document.getElementById("btnSettings"), this._btnSetting.onclick = function() {
                    a._stageMenu.style.display = "none", a._symbolMenu.style.display = "none", a._settings.show()
                }, document.getElementById("gameCanvas").addEventListener("click", function(b) {
                    a._stageMenu.style.left = a._symbolMenu.style.left = b.clientX + "px", a._stageMenu.style.top = a._symbolMenu.style.top = b.clientY + "px", a._settings.visible || (null != a._selectedSymbol ? (a._stageMenu.style.display = "none", a._symbolMenu.style.display = "block", a._symbolMenu.selectedIndex = 0, a._symbolMenu.focus()) : (a._symbolMenu.style.display = "none", a._stageMenu.style.display = "block", a._stageMenu.selectedIndex = 0, a._stageMenu.focus()))
                }), this._stageMenu.onchange = function(b) {
                    a._stageMenu.style.display = "none", "clearAll" == a._stageMenu.value ? a.clearAll() : "cancel" != a._stageMenu.value && a.addSymbol(a._stageMenu.value)
                }, this._symbolMenu.onchange = function(b) {
                    if (a._symbolMenu.style.display = "none", "cancel" != a._symbolMenu.value && null != a._selectedSymbol)
                        if ("static" == a._symbolMenu.value) a._selectedSymbol.setStatic();
                        else {
                            var c = a._selectedSymbol.getSequenceItem(a._symbolMenu.value, 0);
                            null != c.mc && c.startSequence()
                        }
                }, this._stage.on("stagemousedown", function(b) {
                    a._selectedSymbol = null
                }), this.onResize(null), window.addEventListener("resize", function() {
                    a.onResize(null)
                });
                var b = new c.loaders.JsonLoader;
                b.addEventListener(c.loaders.JsonLoader.COMPLETE, this.onAssetMapLoaded, this), b.load("SymbolMap.json")
            }
            return a.prototype.onSettingClose = function(a) {
                if (this._settings.displayBackGround && 0 == this._bgContainer.numChildren) {
                    var b = d.AssetManager.getInstance().getNewAsset("background");
                    null != b && this._bgContainer.addChild(b)
                } else !this._settings.displayBackGround && this._bgContainer.numChildren > 0 && this._bgContainer.removeAllChildren()
            }, a.prototype.onAssetMapLoaded = function(a) {
                a.target.removeEventListener(c.loaders.JsonLoader.COMPLETE, this.onAssetMapLoaded, this), this._symbolMap = a.data;
                var b = JSON.parse(JSON.stringify(this._symbolMap.symbols));
                b.background = JSON.parse(JSON.stringify(this._symbolMap.background)), d.AssetManager.getInstance().setAssetIds(b);
                var e = new c.loaders.CJSAssetLoader;
                e.addEventListener(c.loaders.CJSAssetLoader.COMPLETE, this.onAssetsLoaded, this), e.load(this._symbolMap.assetManifest), this.createStageMenu(), this.createSymbolMenu(), this._settings.setStates(this._symbolMap.states)
            }, a.prototype.onAssetsLoaded = function(a) {
                a.target.removeEventListener(c.loaders.JsonLoader.COMPLETE, this.onAssetsLoaded, this)
            }, a.prototype.createStageMenu = function() {
                for (var a in this._symbolMap.symbols) {
                    var b = document.createElement("option");
                    b.innerText = a, b.value = a, this._stageMenu.appendChild(b)
                }
            }, a.prototype.createSymbolMenu = function() {
                for (var a = 0, b = this._symbolMap.states; a < b.length; a++) {
                    var c = b[a],
                        d = document.createElement("option");
                    d.innerText = c, d.value = c, this._symbolMenu.appendChild(d)
                }
            }, a.prototype.addSymbol = function(a) {
                for (var b = this, c = 0; c < this._settings.addCount; c++) ! function(c) {
                    var d = b._symbolManager.getSymbol(a);
                    b._mcX + d.bounds.width > b._maxWidth && (b._mcX = 0, b._mcY += d.bounds.height), d.mcContainer.x += b._mcX, d.mcContainer.y += b._mcY;
                    var e = new createjs.Shape;
                    e.graphics.beginFill("#000").drawRect(0, 0, d.bounds.width, d.bounds.height), d.mcContainer.hitArea = e;
                    var f = b;
                    if (d.mcContainer.addEventListener("click", function(a) {
                            f._selectedSymbol = d
                        }), b._mcX += d.bounds.width, b._symbolManager.addSymbolToReelContainer(d), b._symbolList.push(d), "static" != b._settings.defaultAnim) {
                        var g = d.getSequenceItem(b._settings.defaultAnim, 0);
                        null != g.mc && g.startSequence()
                    }
                }()
            }, a.prototype.updateLayout = function() {
                this._mcX = this._mcY = 0;
                for (var a = 0, b = this._symbolList; a < b.length; a++) {
                    var c = b[a];
                    this._mcX + c.bounds.width > this._maxWidth && (this._mcX = 0, this._mcY += c.bounds.height), c.mcContainer.x = this._mcX, c.mcContainer.y = this._mcY, this._mcX += c.bounds.width
                }
            }, a.prototype.clearAll = function() {
                for (var a = 0, b = this._symbolList; a < b.length; a++) {
                    b[a].checkIn()
                }
                this._symbolList = [], this._mcX = 0, this._mcY = 0
            }, a.prototype.onResize = function(a) {
                var b = this;
                null == this._resizeTimer && null != this._stage && (this._resizeTimer = setTimeout(function() {
                    var a = window.innerWidth,
                        c = window.innerHeight,
                        d = 960,
                        e = 540;
                    a < c && (d = 540, e = 960);
                    var f = window.devicePixelRatio || 1,
                        g = a / d,
                        h = c / e,
                        i = Math.min(g, h),
                        j = f * i,
                        k = document.getElementById("gameCanvas");
                    k.width = d * j, k.height = e * j, k.style.width = a + "px", k.style.height = c + "px", b._stage.scaleX = j * (d * i) / a, b._stage.scaleY = j * (e * i) / c, b._maxWidth = k.width / b._stage.scaleX, b._resizeTimer = null, b.updateLayout()
                }, 100))
            }, a
        }();
        b.SymbolDisplayTool = g, new g
    }), define("wcgf/vendors/typescript_collections/Set", ["require", "exports", "wcgf/vendors/typescript_collections/util", "wcgf/vendors/typescript_collections/arrays", "wcgf/vendors/typescript_collections/Dictionary"], function(a, b, c, d, e) {
        "use strict";
        var f = function() {
            function a(a) {
                this.dictionary = new e.default(a)
            }
            return a.prototype.contains = function(a) {
                return this.dictionary.containsKey(a)
            }, a.prototype.add = function(a) {
                return !this.contains(a) && !c.isUndefined(a) && (this.dictionary.setValue(a, a), !0)
            }, a.prototype.intersection = function(a) {
                var b = this;
                this.forEach(function(c) {
                    return a.contains(c) || b.remove(c), !0
                })
            }, a.prototype.union = function(a) {
                var b = this;
                a.forEach(function(a) {
                    return b.add(a), !0
                })
            }, a.prototype.difference = function(a) {
                var b = this;
                a.forEach(function(a) {
                    return b.remove(a), !0
                })
            }, a.prototype.isSubsetOf = function(a) {
                if (this.size() > a.size()) return !1;
                var b = !0;
                return this.forEach(function(c) {
                    return !!a.contains(c) || (b = !1, !1)
                }), b
            }, a.prototype.remove = function(a) {
                return !!this.contains(a) && (this.dictionary.remove(a), !0)
            }, a.prototype.forEach = function(a) {
                this.dictionary.forEach(function(b, c) {
                    return a(c)
                })
            }, a.prototype.toArray = function() {
                return this.dictionary.values()
            }, a.prototype.isEmpty = function() {
                return this.dictionary.isEmpty()
            }, a.prototype.size = function() {
                return this.dictionary.size()
            }, a.prototype.clear = function() {
                this.dictionary.clear()
            }, a.prototype.toString = function() {
                return d.toString(this.toArray())
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = f
    }), define("wcgf/vendors/typescript_collections/Bag", ["require", "exports", "wcgf/vendors/typescript_collections/util", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/vendors/typescript_collections/Set"], function(a, b, c, d, e) {
        "use strict";
        var f = function() {
            function a(a) {
                this.toStrF = a || c.defaultToString, this.dictionary = new d.default(this.toStrF), this.nElements = 0
            }
            return a.prototype.add = function(a, b) {
                if (void 0 === b && (b = 1), c.isUndefined(a) || b <= 0) return !1;
                if (this.contains(a)) this.dictionary.getValue(a).copies += b;
                else {
                    var d = {
                        value: a,
                        copies: b
                    };
                    this.dictionary.setValue(a, d)
                }
                return this.nElements += b, !0
            }, a.prototype.count = function(a) {
                return this.contains(a) ? this.dictionary.getValue(a).copies : 0
            }, a.prototype.contains = function(a) {
                return this.dictionary.containsKey(a)
            }, a.prototype.remove = function(a, b) {
                if (void 0 === b && (b = 1), c.isUndefined(a) || b <= 0) return !1;
                if (this.contains(a)) {
                    var d = this.dictionary.getValue(a);
                    return b > d.copies ? this.nElements -= d.copies : this.nElements -= b, d.copies -= b, d.copies <= 0 && this.dictionary.remove(a), !0
                }
                return !1
            }, a.prototype.toArray = function() {
                for (var a = [], b = this.dictionary.values(), c = 0, d = b; c < d.length; c++)
                    for (var e = d[c], f = e.value, g = e.copies, h = 0; h < g; h++) a.push(f);
                return a
            }, a.prototype.toSet = function() {
                for (var a = new e.default(this.toStrF), b = this.dictionary.values(), c = 0, d = b; c < d.length; c++) {
                    var f = d[c],
                        g = f.value;
                    a.add(g)
                }
                return a
            }, a.prototype.forEach = function(a) {
                this.dictionary.forEach(function(b, c) {
                    for (var d = c.value, e = c.copies, f = 0; f < e; f++)
                        if (!1 === a(d)) return !1;
                    return !0
                })
            }, a.prototype.size = function() {
                return this.nElements
            }, a.prototype.isEmpty = function() {
                return 0 === this.nElements
            }, a.prototype.clear = function() {
                this.nElements = 0, this.dictionary.clear()
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = f
    }), define("wcgf/vendors/typescript_collections/Heap", ["require", "exports", "wcgf/vendors/typescript_collections/util", "wcgf/vendors/typescript_collections/arrays"], function(a, b, c, d) {
        "use strict";
        var e = function() {
            function a(a) {
                this.data = [], this.compare = a || c.defaultCompare
            }
            return a.prototype.leftChildIndex = function(a) {
                return 2 * a + 1
            }, a.prototype.rightChildIndex = function(a) {
                return 2 * a + 2
            }, a.prototype.parentIndex = function(a) {
                return Math.floor((a - 1) / 2)
            }, a.prototype.minIndex = function(a, b) {
                return b >= this.data.length ? a >= this.data.length ? -1 : a : this.compare(this.data[a], this.data[b]) <= 0 ? a : b
            }, a.prototype.siftUp = function(a) {
                for (var b = this.parentIndex(a); a > 0 && this.compare(this.data[b], this.data[a]) > 0;) d.swap(this.data, b, a), a = b, b = this.parentIndex(a)
            }, a.prototype.siftDown = function(a) {
                for (var b = this.minIndex(this.leftChildIndex(a), this.rightChildIndex(a)); b >= 0 && this.compare(this.data[a], this.data[b]) > 0;) d.swap(this.data, b, a), a = b, b = this.minIndex(this.leftChildIndex(a), this.rightChildIndex(a))
            }, a.prototype.peek = function() {
                return this.data.length > 0 ? this.data[0] : void 0
            }, a.prototype.add = function(a) {
                if (!c.isUndefined(a)) return this.data.push(a), this.siftUp(this.data.length - 1), !0
            }, a.prototype.removeRoot = function() {
                if (this.data.length > 0) {
                    var a = this.data[0];
                    return this.data[0] = this.data[this.data.length - 1], this.data.splice(this.data.length - 1, 1), this.data.length > 0 && this.siftDown(0), a
                }
            }, a.prototype.contains = function(a) {
                var b = c.compareToEquals(this.compare);
                return d.contains(this.data, a, b)
            }, a.prototype.size = function() {
                return this.data.length
            }, a.prototype.isEmpty = function() {
                return this.data.length <= 0
            }, a.prototype.clear = function() {
                this.data.length = 0
            }, a.prototype.forEach = function(a) {
                d.forEach(this.data, a)
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = e
    }), define("wcgf/vendors/typescript_collections/Queue", ["require", "exports", "wcgf/vendors/typescript_collections/LinkedList"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a() {
                this.list = new c.default
            }
            return a.prototype.enqueue = function(a) {
                return this.list.add(a)
            }, a.prototype.add = function(a) {
                return this.list.add(a)
            }, a.prototype.dequeue = function() {
                if (0 !== this.list.size()) {
                    var a = this.list.first();
                    return this.list.removeElementAtIndex(0), a
                }
            }, a.prototype.peek = function() {
                if (0 !== this.list.size()) return this.list.first()
            }, a.prototype.size = function() {
                return this.list.size()
            }, a.prototype.contains = function(a, b) {
                return this.list.contains(a, b)
            }, a.prototype.isEmpty = function() {
                return this.list.size() <= 0
            }, a.prototype.clear = function() {
                this.list.clear()
            }, a.prototype.forEach = function(a) {
                this.list.forEach(a)
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = d
    }), define("wcgf/vendors/typescript_collections/BSTree", ["require", "exports", "wcgf/vendors/typescript_collections/util", "wcgf/vendors/typescript_collections/Queue"], function(a, b, c, d) {
        "use strict";
        var e = function() {
            function a(a) {
                this.root = null, this.compare = a || c.defaultCompare, this.nElements = 0
            }
            return a.prototype.add = function(a) {
                return !c.isUndefined(a) && (null !== this.insertNode(this.createNode(a)) && (this.nElements++, !0))
            }, a.prototype.clear = function() {
                this.root = null, this.nElements = 0
            }, a.prototype.isEmpty = function() {
                return 0 === this.nElements
            }, a.prototype.size = function() {
                return this.nElements
            }, a.prototype.contains = function(a) {
                return !c.isUndefined(a) && null !== this.searchNode(this.root, a)
            }, a.prototype.remove = function(a) {
                var b = this.searchNode(this.root, a);
                return null !== b && (this.removeNode(b), this.nElements--, !0)
            }, a.prototype.inorderTraversal = function(a) {
                this.inorderTraversalAux(this.root, a, {
                    stop: !1
                })
            }, a.prototype.preorderTraversal = function(a) {
                this.preorderTraversalAux(this.root, a, {
                    stop: !1
                })
            }, a.prototype.postorderTraversal = function(a) {
                this.postorderTraversalAux(this.root, a, {
                    stop: !1
                })
            }, a.prototype.levelTraversal = function(a) {
                this.levelTraversalAux(this.root, a)
            }, a.prototype.minimum = function() {
                if (!this.isEmpty()) return this.minimumAux(this.root).element
            }, a.prototype.maximum = function() {
                if (!this.isEmpty()) return this.maximumAux(this.root).element
            }, a.prototype.forEach = function(a) {
                this.inorderTraversal(a)
            }, a.prototype.toArray = function() {
                var a = [];
                return this.inorderTraversal(function(b) {
                    return a.push(b), !0
                }), a
            }, a.prototype.height = function() {
                return this.heightAux(this.root)
            }, a.prototype.searchNode = function(a, b) {
                for (var c = null; null !== a && 0 !== c;) c = this.compare(b, a.element), c < 0 ? a = a.leftCh : c > 0 && (a = a.rightCh);
                return a
            }, a.prototype.transplant = function(a, b) {
                null === a.parent ? this.root = b : a === a.parent.leftCh ? a.parent.leftCh = b : a.parent.rightCh = b, null !== b && (b.parent = a.parent)
            }, a.prototype.removeNode = function(a) {
                if (null === a.leftCh) this.transplant(a, a.rightCh);
                else if (null === a.rightCh) this.transplant(a, a.leftCh);
                else {
                    var b = this.minimumAux(a.rightCh);
                    b.parent !== a && (this.transplant(b, b.rightCh), b.rightCh = a.rightCh, b.rightCh.parent = b), this.transplant(a, b), b.leftCh = a.leftCh, b.leftCh.parent = b
                }
            }, a.prototype.inorderTraversalAux = function(a, b, c) {
                null === a || c.stop || (this.inorderTraversalAux(a.leftCh, b, c), c.stop || (c.stop = !1 === b(a.element), c.stop || this.inorderTraversalAux(a.rightCh, b, c)))
            }, a.prototype.levelTraversalAux = function(a, b) {
                var c = new d.default;
                for (null !== a && c.enqueue(a); !c.isEmpty();) {
                    if (a = c.dequeue(), !1 === b(a.element)) return;
                    null !== a.leftCh && c.enqueue(a.leftCh), null !== a.rightCh && c.enqueue(a.rightCh)
                }
            }, a.prototype.preorderTraversalAux = function(a, b, c) {
                null === a || c.stop || (c.stop = !1 === b(a.element), c.stop || (this.preorderTraversalAux(a.leftCh, b, c), c.stop || this.preorderTraversalAux(a.rightCh, b, c)))
            }, a.prototype.postorderTraversalAux = function(a, b, c) {
                null === a || c.stop || (this.postorderTraversalAux(a.leftCh, b, c), c.stop || (this.postorderTraversalAux(a.rightCh, b, c), c.stop || (c.stop = !1 === b(a.element))))
            }, a.prototype.minimumAux = function(a) {
                for (; null !== a.leftCh;) a = a.leftCh;
                return a
            }, a.prototype.maximumAux = function(a) {
                for (; null !== a.rightCh;) a = a.rightCh;
                return a
            }, a.prototype.heightAux = function(a) {
                return null === a ? -1 : Math.max(this.heightAux(a.leftCh), this.heightAux(a.rightCh)) + 1
            }, a.prototype.insertNode = function(a) {
                for (var b = null, c = this.root, d = null; null !== c;) {
                    if (0 === (d = this.compare(a.element, c.element))) return null;
                    d < 0 ? (b = c, c = c.leftCh) : (b = c, c = c.rightCh)
                }
                return a.parent = b, null === b ? this.root = a : this.compare(a.element, b.element) < 0 ? b.leftCh = a : b.rightCh = a, a
            }, a.prototype.createNode = function(a) {
                return {
                    element: a,
                    leftCh: null,
                    rightCh: null,
                    parent: null
                }
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = e
    }), define("wcgf/vendors/typescript_collections/FactoryDictionary", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/vendors/typescript_collections/util"], function(a, b, c, d) {
        "use strict";
        var e = function(a) {
            function b(b, c) {
                var d = a.call(this, c) || this;
                return d.defaultFactoryFunction = b, d
            }
            return __extends(b, a), b.prototype.setDefault = function(b, c) {
                var e = a.prototype.getValue.call(this, b);
                return d.isUndefined(e) ? (this.setValue(b, c), c) : e
            }, b.prototype.getValue = function(a) {
                return this.setDefault(a, this.defaultFactoryFunction())
            }, b
        }(c.default);
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = e
    }), define("wcgf/vendors/typescript_collections/LinkedDictionary", ["require", "exports", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/vendors/typescript_collections/util"], function(a, b, c, d) {
        "use strict";
        var e = function() {
                function a(a, b) {
                    this.key = a, this.value = b
                }
                return a.prototype.unlink = function() {
                    this.prev.next = this.next, this.next.prev = this.prev
                }, a
            }(),
            f = function(a) {
                function b(b) {
                    var c = a.call(this, b) || this;
                    return c.head = new e(null, null), c.tail = new e(null, null), c.head.next = c.tail, c.tail.prev = c.head, c
                }
                return __extends(b, a), b.prototype.appendToTail = function(a) {
                    var b = this.tail.prev;
                    b.next = a, a.prev = b, a.next = this.tail, this.tail.prev = a
                }, b.prototype.getLinkedDictionaryPair = function(a) {
                    if (!d.isUndefined(a)) {
                        var b = "$" + this.toStr(a);
                        return this.table[b]
                    }
                }, b.prototype.getValue = function(a) {
                    var b = this.getLinkedDictionaryPair(a);
                    if (!d.isUndefined(b)) return b.value
                }, b.prototype.remove = function(b) {
                    var c = this.getLinkedDictionaryPair(b);
                    if (!d.isUndefined(c)) return a.prototype.remove.call(this, b), c.unlink(), c.value
                }, b.prototype.clear = function() {
                    a.prototype.clear.call(this), this.head.next = this.tail, this.tail.prev = this.head
                }, b.prototype.replace = function(a, b) {
                    var c = "$" + this.toStr(b.key);
                    b.next = a.next, b.prev = a.prev, this.remove(a.key), b.prev.next = b, b.next.prev = b, this.table[c] = b, ++this.nElements
                }, b.prototype.setValue = function(a, b) {
                    if (!d.isUndefined(a) && !d.isUndefined(b)) {
                        var c = this.getLinkedDictionaryPair(a),
                            f = new e(a, b),
                            g = "$" + this.toStr(a);
                        return d.isUndefined(c) ? (this.appendToTail(f), this.table[g] = f, void++this.nElements) : (this.replace(c, f), c.value)
                    }
                }, b.prototype.keys = function() {
                    var a = [];
                    return this.forEach(function(b, c) {
                        a.push(b)
                    }), a
                }, b.prototype.values = function() {
                    var a = [];
                    return this.forEach(function(b, c) {
                        a.push(c)
                    }), a
                }, b.prototype.forEach = function(a) {
                    for (var b = this.head.next; null != b.next;) {
                        if (!1 === a(b.key, b.value)) return;
                        b = b.next
                    }
                }, b
            }(c.default);
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = f
    }), define("wcgf/vendors/typescript_collections/MultiDictionary", ["require", "exports", "wcgf/vendors/typescript_collections/util", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/vendors/typescript_collections/arrays"], function(a, b, c, d, e) {
        "use strict";
        var f = function() {
            function a(a, b, e) {
                void 0 === e && (e = !1), this.dict = new d.default(a), this.equalsF = b || c.defaultEquals, this.allowDuplicate = e
            }
            return a.prototype.getValue = function(a) {
                var b = this.dict.getValue(a);
                return c.isUndefined(b) ? [] : e.copy(b)
            }, a.prototype.setValue = function(a, b) {
                if (c.isUndefined(a) || c.isUndefined(b)) return !1;
                if (!this.containsKey(a)) return this.dict.setValue(a, [b]), !0;
                var d = this.dict.getValue(a);
                return !(!this.allowDuplicate && e.contains(d, b, this.equalsF)) && (d.push(b), !0)
            }, a.prototype.remove = function(a, b) {
                if (c.isUndefined(b)) {
                    var d = this.dict.remove(a);
                    return !c.isUndefined(d)
                }
                var f = this.dict.getValue(a);
                return !!e.remove(f, b, this.equalsF) && (0 === f.length && this.dict.remove(a), !0)
            }, a.prototype.keys = function() {
                return this.dict.keys()
            }, a.prototype.values = function() {
                for (var a = this.dict.values(), b = [], c = 0, d = a; c < d.length; c++)
                    for (var e = d[c], f = 0, g = e; f < g.length; f++) {
                        var h = g[f];
                        b.push(h)
                    }
                return b
            }, a.prototype.containsKey = function(a) {
                return this.dict.containsKey(a)
            }, a.prototype.clear = function() {
                this.dict.clear()
            }, a.prototype.size = function() {
                return this.dict.size()
            }, a.prototype.isEmpty = function() {
                return this.dict.isEmpty()
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = f
    }), define("wcgf/vendors/typescript_collections/PriorityQueue", ["require", "exports", "wcgf/vendors/typescript_collections/util", "wcgf/vendors/typescript_collections/Heap"], function(a, b, c, d) {
        "use strict";
        var e = function() {
            function a(a) {
                this.heap = new d.default(c.reverseCompareFunction(a))
            }
            return a.prototype.enqueue = function(a) {
                return this.heap.add(a)
            }, a.prototype.add = function(a) {
                return this.heap.add(a)
            }, a.prototype.dequeue = function() {
                if (0 !== this.heap.size()) {
                    var a = this.heap.peek();
                    return this.heap.removeRoot(), a
                }
            }, a.prototype.peek = function() {
                return this.heap.peek()
            }, a.prototype.contains = function(a) {
                return this.heap.contains(a)
            }, a.prototype.isEmpty = function() {
                return this.heap.isEmpty()
            }, a.prototype.size = function() {
                return this.heap.size()
            }, a.prototype.clear = function() {
                this.heap.clear()
            }, a.prototype.forEach = function(a) {
                this.heap.forEach(a)
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = e
    }), define("wcgf/vendors/typescript_collections/Stack", ["require", "exports", "wcgf/vendors/typescript_collections/LinkedList"], function(a, b, c) {
        "use strict";
        var d = function() {
            function a() {
                this.list = new c.default
            }
            return a.prototype.push = function(a) {
                return this.list.add(a, 0)
            }, a.prototype.add = function(a) {
                return this.list.add(a, 0)
            }, a.prototype.pop = function() {
                return this.list.removeElementAtIndex(0)
            }, a.prototype.peek = function() {
                return this.list.first()
            }, a.prototype.size = function() {
                return this.list.size()
            }, a.prototype.contains = function(a, b) {
                return this.list.contains(a, b)
            }, a.prototype.isEmpty = function() {
                return this.list.isEmpty()
            }, a.prototype.clear = function() {
                this.list.clear()
            }, a.prototype.forEach = function(a) {
                this.list.forEach(a)
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = d
    }), define("wcgf/vendors/typescript_collections/MultiRootTree", ["require", "exports"], function(a, b) {
        "use strict";
        var c;
        ! function(a) {
            a[a.BEFORE = 0] = "BEFORE", a[a.AFTER = 1] = "AFTER", a[a.INSIDE_AT_END = 2] = "INSIDE_AT_END", a[a.INSIDE_AT_START = 3] = "INSIDE_AT_START"
        }(c || (c = {}));
        var d = function() {
            function a(a, b) {
                void 0 === a && (a = []), void 0 === b && (b = {}), this.rootIds = a, this.nodes = b, this.initRootIds(), this.initNodes()
            }
            return a.prototype.initRootIds = function() {
                for (var a = 0, b = this.rootIds; a < b.length; a++) {
                    var c = b[a];
                    this.createEmptyNodeIfNotExist(c)
                }
            }, a.prototype.initNodes = function() {
                for (var a in this.nodes)
                    if (this.nodes.hasOwnProperty(a))
                        for (var b = 0, c = this.nodes[a]; b < c.length; b++) {
                            var d = c[b];
                            this.createEmptyNodeIfNotExist(d)
                        }
            }, a.prototype.createEmptyNodeIfNotExist = function(a) {
                this.nodes[a] || (this.nodes[a] = [])
            }, a.prototype.getRootIds = function() {
                return this.rootIds.slice()
            }, a.prototype.getNodes = function() {
                var a = {};
                for (var b in this.nodes) this.nodes.hasOwnProperty(b) && (a[b] = this.nodes[b].slice());
                return a
            }, a.prototype.getObject = function() {
                return {
                    rootIds: this.getRootIds(),
                    nodes: this.getNodes()
                }
            }, a.prototype.toObject = function() {
                return this.getObject()
            }, a.prototype.flatten = function() {
                function a(b, c, d, e) {
                    if (void 0 === e && (e = 0), b && c && d && c[b]) {
                        e++;
                        for (var f = c[b], g = 0; g < f.length; g++) {
                            var h = f[g];
                            d.push({
                                id: h,
                                level: e,
                                hasParent: !0
                            }), a(h, c, d, e)
                        }
                        e--
                    }
                }
                for (var b = this, c = [], d = 0; d < this.rootIds.length; d++) {
                    var e = this.rootIds[d];
                    c.push({
                        id: e,
                        level: 0,
                        hasParent: !1,
                        childrenCount: void 0
                    }), a(e, this.nodes, c, 0)
                }
                for (var f = 0, g = c; f < g.length; f++) {
                    var h = g[f];
                    h.childrenCount = function(a) {
                        if (b.nodes[a]) {
                            return b.nodes[a].length
                        }
                        return 0
                    }(h.id)
                }
                return c
            }, a.prototype.moveIdBeforeId = function(a, b) {
                return this.moveId(a, b, c.BEFORE)
            }, a.prototype.moveIdAfterId = function(a, b) {
                return this.moveId(a, b, c.AFTER)
            }, a.prototype.moveIdIntoId = function(a, b, d) {
                return void 0 === d && (d = !0), d ? this.moveId(a, b, c.INSIDE_AT_START) : this.moveId(a, b, c.INSIDE_AT_END)
            }, a.prototype.swapRootIdWithRootId = function(a, b) {
                var c = this.findRootId(a),
                    d = this.findRootId(b);
                this.swapRootPositionWithRootPosition(c, d)
            }, a.prototype.swapRootPositionWithRootPosition = function(a, b) {
                var c = this.rootIds[b];
                this.rootIds[b] = this.rootIds[a], this.rootIds[a] = c
            }, a.prototype.deleteId = function(a) {
                this.rootDeleteId(a), this.nodeAndSubNodesDelete(a), this.nodeRefrencesDelete(a)
            }, a.prototype.insertIdBeforeId = function(a, b) {
                var c = this.findRootId(a);
                c > -1 && this.insertIdIntoRoot(b, c);
                for (var d in this.nodes)
                    if (this.nodes.hasOwnProperty(d)) {
                        var e = this.findNodeId(d, a);
                        e > -1 && this.insertIdIntoNode(d, b, e)
                    }
            }, a.prototype.insertIdAfterId = function(a, b) {
                var c = this.findRootId(a);
                c > -1 && this.insertIdIntoRoot(b, c + 1);
                for (var d in this.nodes)
                    if (this.nodes.hasOwnProperty(d)) {
                        var e = this.findNodeId(d, a);
                        e > -1 && this.insertIdIntoNode(d, b, e + 1)
                    }
            }, a.prototype.insertIdIntoId = function(a, b) {
                this.nodeInsertAtEnd(a, b), this.nodes[b] = []
            }, a.prototype.insertIdIntoRoot = function(a, b) {
                if (void 0 === b) this.rootInsertAtEnd(a);
                else if (b < 0) {
                    var c = this.rootIds.length;
                    this.rootIds.splice(b + c + 1, 0, a)
                } else this.rootIds.splice(b, 0, a);
                this.nodes[a] = this.nodes[a] || []
            }, a.prototype.insertIdIntoNode = function(a, b, c) {
                if (this.nodes[a] = this.nodes[a] || [], this.nodes[b] = this.nodes[b] || [], void 0 === c) this.nodeInsertAtEnd(a, b);
                else if (c < 0) {
                    var d = this.nodes[a].length;
                    this.nodes[a].splice(c + d + 1, 0, b)
                } else this.nodes[a].splice(c, 0, b)
            }, a.prototype.moveId = function(a, b, d) {
                var e = a,
                    f = this.findRootId(e);
                this.nodes[b];
                for (var g in this.nodes)
                    if (this.nodes.hasOwnProperty(g)) {
                        this.findNodeId(g, b);
                        break
                    }
                var h = b,
                    i = this.findRootId(h);
                this.nodes[b];
                for (var g in this.nodes)
                    if (this.nodes.hasOwnProperty(g)) {
                        this.findNodeId(g, b);
                        break
                    }
                if (f > -1)
                    if (i > -1) switch (this.rootDelete(f), i > f && i--, d) {
                        case c.BEFORE:
                            this.insertIdIntoRoot(e, i);
                            break;
                        case c.AFTER:
                            this.insertIdIntoRoot(e, i + 1);
                            break;
                        case c.INSIDE_AT_START:
                            this.nodeInsertAtStart(h, e);
                            break;
                        case c.INSIDE_AT_END:
                            this.nodeInsertAtEnd(h, e)
                    } else {
                        this.rootDelete(f);
                        for (var g in this.nodes)
                            if (this.nodes.hasOwnProperty(g)) {
                                var j = this.findNodeId(g, h);
                                if (j > -1) {
                                    switch (d) {
                                        case c.BEFORE:
                                            this.insertIdIntoNode(g, e, j);
                                            break;
                                        case c.AFTER:
                                            this.insertIdIntoNode(g, e, j + 1);
                                            break;
                                        case c.INSIDE_AT_START:
                                            this.nodeInsertAtStart(h, e);
                                            break;
                                        case c.INSIDE_AT_END:
                                            this.nodeInsertAtEnd(h, e)
                                    }
                                    break
                                }
                            }
                    } else if (i > -1) {
                        for (var g in this.nodes)
                            if (this.nodes.hasOwnProperty(g)) {
                                var j = this.findNodeId(g, e);
                                if (j > -1) {
                                    this.nodeDeleteAtIndex(g, j);
                                    break
                                }
                            }
                        switch (d) {
                            case c.BEFORE:
                                this.insertIdIntoRoot(e, i);
                                break;
                            case c.AFTER:
                                this.insertIdIntoRoot(e, i + 1);
                                break;
                            case c.INSIDE_AT_START:
                                this.nodeInsertAtStart(h, e);
                                break;
                            case c.INSIDE_AT_END:
                                this.nodeInsertAtEnd(h, e)
                        }
                    } else {
                        for (var g in this.nodes)
                            if (this.nodes.hasOwnProperty(g)) {
                                var j = this.findNodeId(g, e);
                                if (j > -1) {
                                    this.nodeDeleteAtIndex(g, j);
                                    break
                                }
                            }
                        for (var g in this.nodes)
                            if (this.nodes.hasOwnProperty(g)) {
                                var j = this.findNodeId(g, h);
                                if (j > -1) {
                                    switch (d) {
                                        case c.BEFORE:
                                            this.insertIdIntoNode(g, e, j);
                                            break;
                                        case c.AFTER:
                                            this.insertIdIntoNode(g, e, j + 1);
                                            break;
                                        case c.INSIDE_AT_START:
                                            this.nodeInsertAtStart(h, e);
                                            break;
                                        case c.INSIDE_AT_END:
                                            this.nodeInsertAtEnd(h, e)
                                    }
                                    break
                                }
                            }
                    }
            }, a.prototype.swapArrayElements = function(a, b, c) {
                var d = a[b];
                return a[b] = a[c], a[c] = d, a
            }, a.prototype.rootDeleteId = function(a) {
                var b = this.findRootId(a);
                b > -1 && this.rootDelete(b)
            }, a.prototype.nodeAndSubNodesDelete = function(a) {
                for (var b = [], c = 0; c < this.nodes[a].length; c++) {
                    var d = this.nodes[a][c];
                    this.nodeAndSubNodesDelete(d), b.push(a)
                }
                this.nodeDelete(a);
                for (var c = 0; c < b.length; c++) this.nodeDelete(b[c])
            }, a.prototype.nodeRefrencesDelete = function(a) {
                for (var b in this.nodes)
                    if (this.nodes.hasOwnProperty(b))
                        for (var c = 0; c < this.nodes[b].length; c++) {
                            var d = this.nodes[b][c];
                            d === a && this.nodeDeleteAtIndex(b, c)
                        }
            }, a.prototype.nodeDelete = function(a) {
                delete this.nodes[a]
            }, a.prototype.findRootId = function(a) {
                return this.rootIds.indexOf(a)
            }, a.prototype.findNodeId = function(a, b) {
                return this.nodes[a].indexOf(b)
            }, a.prototype.findNode = function(a) {
                return this.nodes[a]
            }, a.prototype.nodeInsertAtStart = function(a, b) {
                this.nodes[a].unshift(b)
            }, a.prototype.nodeInsertAtEnd = function(a, b) {
                this.nodes[a].push(b)
            }, a.prototype.rootDelete = function(a) {
                this.rootIds.splice(a, 1)
            }, a.prototype.nodeDeleteAtIndex = function(a, b) {
                this.nodes[a].splice(b, 1)
            }, a.prototype.rootInsertAtStart = function(a) {
                this.rootIds.unshift(a)
            }, a.prototype.rootInsertAtEnd = function(a) {
                this.rootIds.push(a)
            }, a
        }();
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.default = d
    }), define("wcgf/vendors/typescript_collections/index", ["require", "exports", "wcgf/vendors/typescript_collections/arrays", "wcgf/vendors/typescript_collections/Bag", "wcgf/vendors/typescript_collections/BSTree", "wcgf/vendors/typescript_collections/Dictionary", "wcgf/vendors/typescript_collections/Heap", "wcgf/vendors/typescript_collections/LinkedDictionary", "wcgf/vendors/typescript_collections/LinkedList", "wcgf/vendors/typescript_collections/MultiDictionary", "wcgf/vendors/typescript_collections/FactoryDictionary", "wcgf/vendors/typescript_collections/FactoryDictionary", "wcgf/vendors/typescript_collections/Queue", "wcgf/vendors/typescript_collections/PriorityQueue", "wcgf/vendors/typescript_collections/Set", "wcgf/vendors/typescript_collections/Stack", "wcgf/vendors/typescript_collections/MultiRootTree", "wcgf/vendors/typescript_collections/util"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) {
        "use strict";
        b.arrays = c, b.Bag = d.default, b.BSTree = e.default, b.Dictionary = f.default, b.Heap = g.default, b.LinkedDictionary = h.default, b.LinkedList = i.default, b.MultiDictionary = j.default, b.FactoryDictionary = k.default, b.DefaultDictionary = l.default, b.Queue = m.default, b.PriorityQueue = n.default, b.Set = o.default, b.Stack = p.default, b.MultiRootTree = q.default, b.util = r
    });