console.time("Load Player Dependencies");
console.time("Load Shared Dependencies");
var jsGlobal = function() {
  return this || (0,eval)("this");
}(), inBrowser = "undefined" != typeof console;
jsGlobal.performance || (jsGlobal.performance = {});
jsGlobal.performance.now || (jsGlobal.performance.now = "undefined" !== typeof dateNow ? dateNow : Date.now);
function log(b) {
  for (var k = 0;k < arguments.length - 1;k++) {
  }
  jsGlobal.print.apply(jsGlobal, arguments);
}
function warn(b) {
  for (var k = 0;k < arguments.length - 1;k++) {
  }
  inBrowser ? console.warn.apply(console, arguments) : jsGlobal.print(Shumway.IndentingWriter.RED + b + Shumway.IndentingWriter.ENDC);
}
var Shumway;
(function(b) {
  function k(a) {
    return(a | 0) === a;
  }
  function g(a) {
    return "object" === typeof a || "function" === typeof a;
  }
  function f(a) {
    return String(Number(a)) === a;
  }
  function t(a) {
    var c = 0;
    if ("number" === typeof a) {
      return c = a | 0, a === c && 0 <= c ? !0 : a >>> 0 === a;
    }
    if ("string" !== typeof a) {
      return!1;
    }
    var e = a.length;
    if (0 === e) {
      return!1;
    }
    if ("0" === a) {
      return!0;
    }
    if (e > b.UINT32_CHAR_BUFFER_LENGTH) {
      return!1;
    }
    var r = 0, c = a.charCodeAt(r++) - 48;
    if (1 > c || 9 < c) {
      return!1;
    }
    for (var h = 0, q = 0;r < e;) {
      q = a.charCodeAt(r++) - 48;
      if (0 > q || 9 < q) {
        return!1;
      }
      h = c;
      c = 10 * c + q;
    }
    return h < b.UINT32_MAX_DIV_10 || h === b.UINT32_MAX_DIV_10 && q <= b.UINT32_MAX_MOD_10 ? !0 : !1;
  }
  (function(a) {
    a[a._0 = 48] = "_0";
    a[a._1 = 49] = "_1";
    a[a._2 = 50] = "_2";
    a[a._3 = 51] = "_3";
    a[a._4 = 52] = "_4";
    a[a._5 = 53] = "_5";
    a[a._6 = 54] = "_6";
    a[a._7 = 55] = "_7";
    a[a._8 = 56] = "_8";
    a[a._9 = 57] = "_9";
  })(b.CharacterCodes || (b.CharacterCodes = {}));
  b.UINT32_CHAR_BUFFER_LENGTH = 10;
  b.UINT32_MAX = 4294967295;
  b.UINT32_MAX_DIV_10 = 429496729;
  b.UINT32_MAX_MOD_10 = 5;
  b.isString = function(a) {
    return "string" === typeof a;
  };
  b.isFunction = function(a) {
    return "function" === typeof a;
  };
  b.isNumber = function(a) {
    return "number" === typeof a;
  };
  b.isInteger = k;
  b.isArray = function(a) {
    return a instanceof Array;
  };
  b.isNumberOrString = function(a) {
    return "number" === typeof a || "string" === typeof a;
  };
  b.isObject = g;
  b.toNumber = function(a) {
    return+a;
  };
  b.isNumericString = f;
  b.isNumeric = function(a) {
    if ("number" === typeof a) {
      return!0;
    }
    if ("string" === typeof a) {
      var c = a.charCodeAt(0);
      return 65 <= c && 90 >= c || 97 <= c && 122 >= c || 36 === c || 95 === c ? !1 : t(a) || f(a);
    }
    return!1;
  };
  b.isIndex = t;
  b.isNullOrUndefined = function(a) {
    return void 0 == a;
  };
  (function(a) {
    a.backtrace = function() {
      try {
        throw Error();
      } catch (a) {
        return a.stack ? a.stack.split("\n").slice(2).join("\n") : "";
      }
    };
    a.error = function(c) {
      inBrowser ? warn(c) : warn(c + "\n\nStack Trace:\n" + a.backtrace());
      throw Error(c);
    };
    a.assert = function(c, r) {
      "undefined" === typeof r && (r = "assertion failed");
      "" === c && (c = !0);
      c || a.error(r.toString());
    };
    a.assertUnreachable = function(a) {
      var l = Error().stack.split("\n")[1];
      throw Error("Reached unreachable location " + l + a);
    };
    a.assertNotImplemented = function(c, r) {
      c || a.error("notImplemented: " + r);
    };
    a.warning = function(a) {
      warn(a);
    };
    a.notUsed = function(c) {
      a.assert(!1, "Not Used " + c);
    };
    a.notImplemented = function(c) {
      log("release: false");
      a.assert(!1, "Not Implemented " + c);
    };
    a.abstractMethod = function(c) {
      a.assert(!1, "Abstract Method " + c);
    };
    var c = {};
    a.somewhatImplemented = function(e) {
      c[e] || (c[e] = !0, a.warning("somewhatImplemented: " + e));
    };
    a.unexpected = function(c) {
      a.assert(!1, "Unexpected: " + c);
    };
    a.untested = function(c) {
      a.warning("Congratulations, you've found a code path for which we haven't found a test case. Please submit the test case: " + c);
    };
  })(b.Debug || (b.Debug = {}));
  var s = b.Debug;
  b.getTicks = function() {
    return performance.now();
  };
  (function(a) {
    function c(a, l) {
      for (var r = 0, e = a.length;r < e;r++) {
        if (a[r] === l) {
          return r;
        }
      }
      a.push(l);
      return a.length - 1;
    }
    var e = b.Debug.assert;
    a.popManyInto = function(a, l, c) {
      e(a.length >= l);
      for (var r = l - 1;0 <= r;r--) {
        c[r] = a.pop();
      }
      c.length = l;
    };
    a.popMany = function(a, l) {
      e(a.length >= l);
      var c = a.length - l, r = a.slice(c, this.length);
      a.splice(c, l);
      return r;
    };
    a.popManyIntoVoid = function(a, l) {
      e(a.length >= l);
      a.length -= l;
    };
    a.pushMany = function(a, l) {
      for (var c = 0;c < l.length;c++) {
        a.push(l[c]);
      }
    };
    a.top = function(a) {
      return a.length && a[a.length - 1];
    };
    a.last = function(a) {
      return a.length && a[a.length - 1];
    };
    a.peek = function(a) {
      e(0 < a.length);
      return a[a.length - 1];
    };
    a.indexOf = function(a, l) {
      for (var c = 0, r = a.length;c < r;c++) {
        if (a[c] === l) {
          return c;
        }
      }
      return-1;
    };
    a.pushUnique = c;
    a.unique = function(a) {
      for (var l = [], r = 0;r < a.length;r++) {
        c(l, a[r]);
      }
      return l;
    };
    a.copyFrom = function(h, c) {
      h.length = 0;
      a.pushMany(h, c);
    };
    a.ensureTypedArrayCapacity = function(a, l) {
      if (a.length < l) {
        var c = a;
        a = new a.constructor(b.IntegerUtilities.nearestPowerOfTwo(l));
        a.set(c, 0);
      }
      return a;
    };
    var r = function() {
      function a(h) {
        "undefined" === typeof h && (h = 16);
        this._f32 = this._i32 = this._u16 = this._u8 = null;
        this._offset = 0;
        this.ensureCapacity(h);
      }
      a.prototype.reset = function() {
        this._offset = 0;
      };
      Object.defineProperty(a.prototype, "offset", {get:function() {
        return this._offset;
      }, enumerable:!0, configurable:!0});
      a.prototype.getIndex = function(a) {
        e(1 === a || 2 === a || 4 === a || 8 === a || 16 === a);
        a = this._offset / a;
        e((a | 0) === a);
        return a;
      };
      a.prototype.ensureAdditionalCapacity = function(a) {
        this.ensureCapacity(this._offset + a);
      };
      a.prototype.ensureCapacity = function(a) {
        if (!this._u8) {
          this._u8 = new Uint8Array(a);
        } else {
          if (this._u8.length > a) {
            return;
          }
        }
        var h = 2 * this._u8.length;
        h < a && (h = a);
        a = new Uint8Array(h);
        a.set(this._u8, 0);
        this._u8 = a;
        this._u16 = new Uint16Array(a.buffer);
        this._i32 = new Int32Array(a.buffer);
        this._f32 = new Float32Array(a.buffer);
      };
      a.prototype.writeInt = function(a) {
        e(0 === (this._offset & 3));
        this.ensureCapacity(this._offset + 4);
        this.writeIntUnsafe(a);
      };
      a.prototype.writeIntAt = function(a, h) {
        e(0 <= h && h <= this._offset);
        e(0 === (h & 3));
        this.ensureCapacity(h + 4);
        this._i32[h >> 2] = a;
      };
      a.prototype.writeIntUnsafe = function(a) {
        this._i32[this._offset >> 2] = a;
        this._offset += 4;
      };
      a.prototype.writeFloat = function(a) {
        e(0 === (this._offset & 3));
        this.ensureCapacity(this._offset + 4);
        this.writeFloatUnsafe(a);
      };
      a.prototype.writeFloatUnsafe = function(a) {
        this._f32[this._offset >> 2] = a;
        this._offset += 4;
      };
      a.prototype.write4Floats = function(a, h, l, c) {
        e(0 === (this._offset & 3));
        this.ensureCapacity(this._offset + 16);
        this.write4FloatsUnsafe(a, h, l, c);
      };
      a.prototype.write4FloatsUnsafe = function(a, h, l, c) {
        var r = this._offset >> 2;
        this._f32[r + 0] = a;
        this._f32[r + 1] = h;
        this._f32[r + 2] = l;
        this._f32[r + 3] = c;
        this._offset += 16;
      };
      a.prototype.write6Floats = function(a, h, l, c, r, u) {
        e(0 === (this._offset & 3));
        this.ensureCapacity(this._offset + 24);
        this.write6FloatsUnsafe(a, h, l, c, r, u);
      };
      a.prototype.write6FloatsUnsafe = function(a, h, l, c, r, e) {
        var u = this._offset >> 2;
        this._f32[u + 0] = a;
        this._f32[u + 1] = h;
        this._f32[u + 2] = l;
        this._f32[u + 3] = c;
        this._f32[u + 4] = r;
        this._f32[u + 5] = e;
        this._offset += 24;
      };
      a.prototype.subF32View = function() {
        return this._f32.subarray(0, this._offset >> 2);
      };
      a.prototype.subI32View = function() {
        return this._i32.subarray(0, this._offset >> 2);
      };
      a.prototype.subU16View = function() {
        return this._u16.subarray(0, this._offset >> 1);
      };
      a.prototype.subU8View = function() {
        return this._u8.subarray(0, this._offset);
      };
      a.prototype.hashWords = function(a, h, l) {
        h = this._i32;
        for (var c = 0;c < l;c++) {
          a = (31 * a | 0) + h[c] | 0;
        }
        return a;
      };
      a.prototype.reserve = function(a) {
        a = a + 3 & -4;
        this.ensureCapacity(this._offset + a);
        this._offset += a;
      };
      return a;
    }();
    a.ArrayWriter = r;
  })(b.ArrayUtilities || (b.ArrayUtilities = {}));
  var m = b.ArrayUtilities, d = function() {
    function a(l) {
      this._u8 = new Uint8Array(l);
      this._u16 = new Uint16Array(l);
      this._i32 = new Int32Array(l);
      this._f32 = new Float32Array(l);
      this._offset = 0;
    }
    Object.defineProperty(a.prototype, "offset", {get:function() {
      return this._offset;
    }, enumerable:!0, configurable:!0});
    a.prototype.isEmpty = function() {
      return this._offset === this._u8.length;
    };
    a.prototype.readInt = function() {
      s.assert(0 === (this._offset & 3));
      s.assert(this._offset <= this._u8.length - 4);
      var a = this._i32[this._offset >> 2];
      this._offset += 4;
      return a;
    };
    a.prototype.readFloat = function() {
      s.assert(0 === (this._offset & 3));
      s.assert(this._offset <= this._u8.length - 4);
      var a = this._f32[this._offset >> 2];
      this._offset += 4;
      return a;
    };
    return a;
  }();
  b.ArrayReader = d;
  (function(l) {
    function c(a, h) {
      return Object.prototype.hasOwnProperty.call(a, h);
    }
    function e(a, h) {
      for (var l in h) {
        c(h, l) && (a[l] = h[l]);
      }
    }
    l.boxValue = function(a) {
      return void 0 == a || g(a) ? a : Object(a);
    };
    l.toKeyValueArray = function(a) {
      var h = Object.prototype.hasOwnProperty, l = [], c;
      for (c in a) {
        h.call(a, c) && l.push([c, a[c]]);
      }
      return l;
    };
    l.isPrototypeWriteable = function(a) {
      return Object.getOwnPropertyDescriptor(a, "prototype").writable;
    };
    l.hasOwnProperty = c;
    l.propertyIsEnumerable = function(a, h) {
      return Object.prototype.propertyIsEnumerable.call(a, h);
    };
    l.getOwnPropertyDescriptor = function(a, h) {
      return Object.getOwnPropertyDescriptor(a, h);
    };
    l.hasOwnGetter = function(a, h) {
      var l = Object.getOwnPropertyDescriptor(a, h);
      return!(!l || !l.get);
    };
    l.getOwnGetter = function(a, h) {
      var l = Object.getOwnPropertyDescriptor(a, h);
      return l ? l.get : null;
    };
    l.hasOwnSetter = function(a, h) {
      var l = Object.getOwnPropertyDescriptor(a, h);
      return!(!l || !l.set);
    };
    l.createObject = function(a) {
      return Object.create(a);
    };
    l.createEmptyObject = function() {
      return Object.create(null);
    };
    l.createMap = function() {
      return Object.create(null);
    };
    l.createArrayMap = function() {
      return[];
    };
    l.defineReadOnlyProperty = function(a, h, l) {
      Object.defineProperty(a, h, {value:l, writable:!1, configurable:!0, enumerable:!1});
    };
    l.getOwnPropertyDescriptors = function(a) {
      for (var h = l.createMap(), c = Object.getOwnPropertyNames(a), e = 0;e < c.length;e++) {
        h[c[e]] = Object.getOwnPropertyDescriptor(a, c[e]);
      }
      return h;
    };
    l.cloneObject = function(a) {
      var h = Object.create(Object.getPrototypeOf(a));
      e(h, a);
      return h;
    };
    l.copyProperties = function(a, h) {
      for (var l in h) {
        a[l] = h[l];
      }
    };
    l.copyOwnProperties = e;
    l.copyOwnPropertyDescriptors = function(a, h, l) {
      "undefined" === typeof l && (l = !0);
      for (var e in h) {
        if (c(h, e)) {
          var q = Object.getOwnPropertyDescriptor(h, e);
          if (l || !c(a, e)) {
            s.assert(q);
            try {
              Object.defineProperty(a, e, q);
            } catch (d) {
            }
          }
        }
      }
    };
    l.getLatestGetterOrSetterPropertyDescriptor = function(a, h) {
      for (var l = {};a;) {
        var c = Object.getOwnPropertyDescriptor(a, h);
        c && (l.get = l.get || c.get, l.set = l.set || c.set);
        if (l.get && l.set) {
          break;
        }
        a = Object.getPrototypeOf(a);
      }
      return l;
    };
    l.defineNonEnumerableGetterOrSetter = function(a, h, c, e) {
      var u = l.getLatestGetterOrSetterPropertyDescriptor(a, h);
      u.configurable = !0;
      u.enumerable = !1;
      e ? u.get = c : u.set = c;
      Object.defineProperty(a, h, u);
    };
    l.defineNonEnumerableGetter = function(a, h, l) {
      Object.defineProperty(a, h, {get:l, configurable:!0, enumerable:!1});
    };
    l.defineNonEnumerableSetter = function(a, h, l) {
      Object.defineProperty(a, h, {set:l, configurable:!0, enumerable:!1});
    };
    l.defineNonEnumerableProperty = function(a, h, l) {
      Object.defineProperty(a, h, {value:l, writable:!0, configurable:!0, enumerable:!1});
    };
    l.defineNonEnumerableForwardingProperty = function(l, h, c) {
      Object.defineProperty(l, h, {get:a.makeForwardingGetter(c), set:a.makeForwardingSetter(c), writable:!0, configurable:!0, enumerable:!1});
    };
    l.defineNewNonEnumerableProperty = function(a, h, c) {
      s.assert(!Object.prototype.hasOwnProperty.call(a, h), "Property: " + h + " already exits.");
      l.defineNonEnumerableProperty(a, h, c);
    };
  })(b.ObjectUtilities || (b.ObjectUtilities = {}));
  (function(a) {
    a.makeForwardingGetter = function(a) {
      return new Function('return this["' + a + '"]');
    };
    a.makeForwardingSetter = function(a) {
      return new Function("value", 'this["' + a + '"] = value;');
    };
    a.bindSafely = function(a, l) {
      s.assert(!a.boundTo && l);
      var c = a.bind(l);
      c.boundTo = l;
      return c;
    };
  })(b.FunctionUtilities || (b.FunctionUtilities = {}));
  var a = b.FunctionUtilities;
  (function(a) {
    function c(a) {
      return "string" === typeof a ? '"' + a + '"' : "number" === typeof a || "boolean" === typeof a ? String(a) : a instanceof Array ? "[] " + a.length : typeof a;
    }
    var e = b.Debug.assert;
    a.repeatString = function(a, h) {
      for (var l = "", c = 0;c < h;c++) {
        l += a;
      }
      return l;
    };
    a.memorySizeToString = function(a) {
      a |= 0;
      return 1024 > a ? a + " B" : 1048576 > a ? (a / 1024).toFixed(2) + "KB" : (a / 1048576).toFixed(2) + "MB";
    };
    a.toSafeString = c;
    a.toSafeArrayString = function(a) {
      for (var h = [], l = 0;l < a.length;l++) {
        h.push(c(a[l]));
      }
      return h.join(", ");
    };
    a.utf8decode = function(a) {
      for (var h = new Uint8Array(4 * a.length), l = 0, c = 0, e = a.length;c < e;c++) {
        var r = a.charCodeAt(c);
        if (127 >= r) {
          h[l++] = r;
        } else {
          if (55296 <= r && 56319 >= r) {
            var u = a.charCodeAt(c + 1);
            56320 <= u && 57343 >= u && (r = ((r & 1023) << 10) + (u & 1023) + 65536, ++c);
          }
          0 !== (r & 4292870144) ? (h[l++] = 248 | r >>> 24 & 3, h[l++] = 128 | r >>> 18 & 63, h[l++] = 128 | r >>> 12 & 63, h[l++] = 128 | r >>> 6 & 63) : 0 !== (r & 4294901760) ? (h[l++] = 240 | r >>> 18 & 7, h[l++] = 128 | r >>> 12 & 63, h[l++] = 128 | r >>> 6 & 63) : 0 !== (r & 4294965248) ? (h[l++] = 224 | r >>> 12 & 15, h[l++] = 128 | r >>> 6 & 63) : h[l++] = 192 | r >>> 6 & 31;
          h[l++] = 128 | r & 63;
        }
      }
      return h.subarray(0, l);
    };
    a.utf8encode = function(a) {
      for (var h = 0, l = "";h < a.length;) {
        var c = a[h++] & 255;
        if (127 >= c) {
          l += String.fromCharCode(c);
        } else {
          var e = 192, r = 5;
          do {
            if ((c & (e >> 1 | 128)) === e) {
              break;
            }
            e = e >> 1 | 128;
            --r;
          } while (0 <= r);
          if (0 >= r) {
            l += String.fromCharCode(c);
          } else {
            for (var c = c & (1 << r) - 1, e = !1, u = 5;u >= r;--u) {
              var q = a[h++];
              if (128 != (q & 192)) {
                e = !0;
                break;
              }
              c = c << 6 | q & 63;
            }
            if (e) {
              for (r = h - (7 - u);r < h;++r) {
                l += String.fromCharCode(a[r] & 255);
              }
            } else {
              l = 65536 <= c ? l + String.fromCharCode(c - 65536 >> 10 & 1023 | 55296, c & 1023 | 56320) : l + String.fromCharCode(c);
            }
          }
        }
      }
      return l;
    };
    a.base64ArrayBuffer = function(a) {
      var h = "";
      a = new Uint8Array(a);
      for (var l = a.byteLength, c = l % 3, l = l - c, e, r, u, q, d = 0;d < l;d += 3) {
        q = a[d] << 16 | a[d + 1] << 8 | a[d + 2], e = (q & 16515072) >> 18, r = (q & 258048) >> 12, u = (q & 4032) >> 6, q &= 63, h += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[e] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[r] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[u] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[q];
      }
      1 == c ? (q = a[l], h += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(q & 252) >> 2] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(q & 3) << 4] + "==") : 2 == c && (q = a[l] << 8 | a[l + 1], h += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(q & 64512) >> 10] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(q & 1008) >> 4] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(q & 15) << 
      2] + "=");
      return h;
    };
    a.escapeString = function(a) {
      void 0 !== a && (a = a.replace(/[^\w$]/gi, "$"), /^\d/.test(a) && (a = "$" + a));
      return a;
    };
    a.fromCharCodeArray = function(a) {
      for (var h = "", l = 0;l < a.length;l += 16384) {
        var c = Math.min(a.length - l, 16384), h = h + String.fromCharCode.apply(null, a.subarray(l, l + c))
      }
      return h;
    };
    a.variableLengthEncodeInt32 = function(h) {
      var c = 32 - Math.clz32(h);
      e(32 >= c, c);
      for (var r = Math.ceil(c / 6), u = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[r], q = r - 1;0 <= q;q--) {
        u += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[h >> 6 * q & 63];
      }
      e(a.variableLengthDecodeInt32(u) === h, h + " : " + u + " - " + r + " bits: " + c);
      return u;
    };
    a.toEncoding = function(a) {
      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[a];
    };
    a.fromEncoding = function(a) {
      a = a.charCodeAt(0);
      if (65 <= a && 90 >= a) {
        return a - 65;
      }
      if (97 <= a && 122 >= a) {
        return a - 71;
      }
      if (48 <= a && 57 >= a) {
        return a + 4;
      }
      if (36 === a) {
        return 62;
      }
      if (95 === a) {
        return 63;
      }
      e(!1, "Invalid Encoding");
    };
    a.variableLengthDecodeInt32 = function(h) {
      for (var c = a.fromEncoding(h[0]), e = 0, r = 0;r < c;r++) {
        var u = 6 * (c - r - 1), e = e | a.fromEncoding(h[1 + r]) << u
      }
      return e;
    };
    a.trimMiddle = function(a, h) {
      if (a.length <= h) {
        return a;
      }
      var l = h >> 1, c = h - l - 1;
      return a.substr(0, l) + "\u2026" + a.substr(a.length - c, c);
    };
    a.multiple = function(a, h) {
      for (var l = "", c = 0;c < h;c++) {
        l += a;
      }
      return l;
    };
    a.indexOfAny = function(a, h, l) {
      for (var c = a.length, e = 0;e < h.length;e++) {
        var r = a.indexOf(h[e], l);
        0 <= r && (c = Math.min(c, r));
      }
      return c === a.length ? -1 : c;
    };
    var r = Array(3), h = Array(4), q = Array(5), d = Array(6), p = Array(7), n = Array(8), m = Array(9);
    a.concat3 = function(a, h, l) {
      r[0] = a;
      r[1] = h;
      r[2] = l;
      return r.join("");
    };
    a.concat4 = function(a, l, c, e) {
      h[0] = a;
      h[1] = l;
      h[2] = c;
      h[3] = e;
      return h.join("");
    };
    a.concat5 = function(a, h, l, c, e) {
      q[0] = a;
      q[1] = h;
      q[2] = l;
      q[3] = c;
      q[4] = e;
      return q.join("");
    };
    a.concat6 = function(a, h, l, c, e, r) {
      d[0] = a;
      d[1] = h;
      d[2] = l;
      d[3] = c;
      d[4] = e;
      d[5] = r;
      return d.join("");
    };
    a.concat7 = function(a, h, l, c, e, r, u) {
      p[0] = a;
      p[1] = h;
      p[2] = l;
      p[3] = c;
      p[4] = e;
      p[5] = r;
      p[6] = u;
      return p.join("");
    };
    a.concat8 = function(a, h, l, c, e, r, u, q) {
      n[0] = a;
      n[1] = h;
      n[2] = l;
      n[3] = c;
      n[4] = e;
      n[5] = r;
      n[6] = u;
      n[7] = q;
      return n.join("");
    };
    a.concat9 = function(a, h, l, c, e, r, u, q, d) {
      m[0] = a;
      m[1] = h;
      m[2] = l;
      m[3] = c;
      m[4] = e;
      m[5] = r;
      m[6] = u;
      m[7] = q;
      m[8] = d;
      return m.join("");
    };
  })(b.StringUtilities || (b.StringUtilities = {}));
  (function(a) {
    var c = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]), e = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 
    643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, 
    -145523070, -1120210379, 718787259, -343485551]);
    a.hashBytesTo32BitsMD5 = function(a, h, l) {
      var q = 1732584193, d = -271733879, p = -1732584194, n = 271733878, b = l + 72 & -64, m = new Uint8Array(b), f;
      for (f = 0;f < l;++f) {
        m[f] = a[h++];
      }
      m[f++] = 128;
      for (a = b - 8;f < a;) {
        m[f++] = 0;
      }
      m[f++] = l << 3 & 255;
      m[f++] = l >> 5 & 255;
      m[f++] = l >> 13 & 255;
      m[f++] = l >> 21 & 255;
      m[f++] = l >>> 29 & 255;
      m[f++] = 0;
      m[f++] = 0;
      m[f++] = 0;
      a = new Int32Array(16);
      for (f = 0;f < b;) {
        for (l = 0;16 > l;++l, f += 4) {
          a[l] = m[f] | m[f + 1] << 8 | m[f + 2] << 16 | m[f + 3] << 24;
        }
        var g = q;
        h = d;
        var s = p, k = n, t, z;
        for (l = 0;64 > l;++l) {
          16 > l ? (t = h & s | ~h & k, z = l) : 32 > l ? (t = k & h | ~k & s, z = 5 * l + 1 & 15) : 48 > l ? (t = h ^ s ^ k, z = 3 * l + 5 & 15) : (t = s ^ (h | ~k), z = 7 * l & 15);
          var P = k, g = g + t + e[l] + a[z] | 0;
          t = c[l];
          k = s;
          s = h;
          h = h + (g << t | g >>> 32 - t) | 0;
          g = P;
        }
        q = q + g | 0;
        d = d + h | 0;
        p = p + s | 0;
        n = n + k | 0;
      }
      return q;
    };
    a.hashBytesTo32BitsAdler = function(a, h, l) {
      var c = 1, e = 0;
      for (l = h + l;h < l;++h) {
        c = (c + (a[h] & 255)) % 65521, e = (e + c) % 65521;
      }
      return e << 16 | c;
    };
  })(b.HashUtilities || (b.HashUtilities = {}));
  var c = function() {
    function a() {
    }
    a.seed = function(c) {
      a._state[0] = c;
      a._state[1] = c;
    };
    a.next = function() {
      var a = this._state, l = Math.imul(18273, a[0] & 65535) + (a[0] >>> 16) | 0;
      a[0] = l;
      var c = Math.imul(36969, a[1] & 65535) + (a[1] >>> 16) | 0;
      a[1] = c;
      a = (l << 16) + (c & 65535) | 0;
      return 2.3283064365386963E-10 * (0 > a ? a + 4294967296 : a);
    };
    a._state = new Uint32Array([57005, 48879]);
    return a;
  }();
  b.Random = c;
  Math.random = function() {
    return c.next();
  };
  (function() {
    function a() {
      this.id = "$weakmap" + c++;
    }
    if ("function" !== typeof jsGlobal.WeakMap) {
      var c = 0;
      a.prototype = {has:function(a) {
        return a.hasOwnProperty(this.id);
      }, get:function(a, l) {
        return a.hasOwnProperty(this.id) ? a[this.id] : l;
      }, set:function(a, l) {
        Object.defineProperty(a, this.id, {value:l, enumerable:!1, configurable:!0});
      }};
      jsGlobal.WeakMap = a;
    }
  })();
  d = function() {
    function a() {
      "undefined" !== typeof netscape && netscape.security.PrivilegeManager ? this._map = new WeakMap : this._list = [];
    }
    a.prototype.clear = function() {
      this._map ? this._map.clear() : this._list.length = 0;
    };
    a.prototype.push = function(a) {
      this._map ? this._map.set(a, null) : this._list.push(a);
    };
    a.prototype.forEach = function(a) {
      if (this._map) {
        "undefined" !== typeof netscape && netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"), Components.utils.nondeterministicGetWeakMapKeys(this._map).forEach(function(h) {
          0 !== h._referenceCount && a(h);
        });
      } else {
        for (var l = this._list, c = 0, h = 0;h < l.length;h++) {
          var e = l[h];
          0 === e._referenceCount ? c++ : a(e);
        }
        if (16 < c && c > l.length >> 2) {
          c = [];
          for (h = 0;h < l.length;h++) {
            0 < l[h]._referenceCount && c.push(l[h]);
          }
          this._list = c;
        }
      }
    };
    Object.defineProperty(a.prototype, "length", {get:function() {
      return this._map ? -1 : this._list.length;
    }, enumerable:!0, configurable:!0});
    return a;
  }();
  b.WeakList = d;
  (function(a) {
    a.pow2 = function(a) {
      return a === (a | 0) ? 0 > a ? 1 / (1 << -a) : 1 << a : Math.pow(2, a);
    };
    a.clamp = function(a, l, c) {
      return Math.max(l, Math.min(c, a));
    };
    a.roundHalfEven = function(a) {
      if (.5 === Math.abs(a % 1)) {
        var l = Math.floor(a);
        return 0 === l % 2 ? l : Math.ceil(a);
      }
      return Math.round(a);
    };
    a.epsilonEquals = function(a, l) {
      return 1E-7 > Math.abs(a - l);
    };
  })(b.NumberUtilities || (b.NumberUtilities = {}));
  (function(a) {
    a[a.MaxU16 = 65535] = "MaxU16";
    a[a.MaxI16 = 32767] = "MaxI16";
    a[a.MinI16 = -32768] = "MinI16";
  })(b.Numbers || (b.Numbers = {}));
  (function(a) {
    function c(a) {
      return 256 * a << 16 >> 16;
    }
    var e = new ArrayBuffer(8);
    a.i8 = new Int8Array(e);
    a.u8 = new Uint8Array(e);
    a.i32 = new Int32Array(e);
    a.f32 = new Float32Array(e);
    a.f64 = new Float64Array(e);
    a.nativeLittleEndian = 1 === (new Int8Array((new Int32Array([1])).buffer))[0];
    a.floatToInt32 = function(c) {
      a.f32[0] = c;
      return a.i32[0];
    };
    a.int32ToFloat = function(c) {
      a.i32[0] = c;
      return a.f32[0];
    };
    a.swap16 = function(a) {
      return(a & 255) << 8 | a >> 8 & 255;
    };
    a.swap32 = function(a) {
      return(a & 255) << 24 | (a & 65280) << 8 | a >> 8 & 65280 | a >> 24 & 255;
    };
    a.toS8U8 = c;
    a.fromS8U8 = function(a) {
      return a / 256;
    };
    a.clampS8U8 = function(a) {
      return c(a) / 256;
    };
    a.toS16 = function(a) {
      return a << 16 >> 16;
    };
    a.bitCount = function(a) {
      a -= a >> 1 & 1431655765;
      a = (a & 858993459) + (a >> 2 & 858993459);
      return 16843009 * (a + (a >> 4) & 252645135) >> 24;
    };
    a.ones = function(a) {
      a -= a >> 1 & 1431655765;
      a = (a & 858993459) + (a >> 2 & 858993459);
      return 16843009 * (a + (a >> 4) & 252645135) >> 24;
    };
    a.trailingZeros = function(c) {
      return a.ones((c & -c) - 1);
    };
    a.getFlags = function(a, h) {
      var c = "";
      for (a = 0;a < h.length;a++) {
        a & 1 << a && (c += h[a] + " ");
      }
      return 0 === c.length ? "" : c.trim();
    };
    a.isPowerOfTwo = function(a) {
      return a && 0 === (a & a - 1);
    };
    a.roundToMultipleOfFour = function(a) {
      return a + 3 & -4;
    };
    a.nearestPowerOfTwo = function(a) {
      a--;
      a |= a >> 1;
      a |= a >> 2;
      a |= a >> 4;
      a |= a >> 8;
      a |= a >> 16;
      a++;
      return a;
    };
    a.roundToMultipleOfPowerOfTwo = function(a, h) {
      var c = (1 << h) - 1;
      return a + c & ~c;
    };
    Math.imul || (Math.imul = function(a, h) {
      var c = a & 65535, l = h & 65535;
      return c * l + ((a >>> 16 & 65535) * l + c * (h >>> 16 & 65535) << 16 >>> 0) | 0;
    });
    Math.clz32 || (Math.clz32 = function(c) {
      c |= c >> 1;
      c |= c >> 2;
      c |= c >> 4;
      c |= c >> 8;
      return 32 - a.ones(c | c >> 16);
    });
  })(b.IntegerUtilities || (b.IntegerUtilities = {}));
  var n = b.IntegerUtilities;
  (function(a) {
    function c(a, l, h, e, u, q) {
      return(h - a) * (q - l) - (e - l) * (u - a);
    }
    a.pointInPolygon = function(a, c, h) {
      for (var l = 0, e = h.length - 2, u = 0;u < e;u += 2) {
        var q = h[u + 0], d = h[u + 1], p = h[u + 2], n = h[u + 3];
        (d <= c && n > c || d > c && n <= c) && a < q + (c - d) / (n - d) * (p - q) && l++;
      }
      return 1 === (l & 1);
    };
    a.signedArea = c;
    a.counterClockwise = function(a, l, h, e, q, d) {
      return 0 < c(a, l, h, e, q, d);
    };
    a.clockwise = function(a, l, h, e, q, d) {
      return 0 > c(a, l, h, e, q, d);
    };
    a.pointInPolygonInt32 = function(a, c, h) {
      a |= 0;
      c |= 0;
      for (var l = 0, e = h.length - 2, u = 0;u < e;u += 2) {
        var q = h[u + 0], d = h[u + 1], p = h[u + 2], n = h[u + 3];
        (d <= c && n > c || d > c && n <= c) && a < q + (c - d) / (n - d) * (p - q) && l++;
      }
      return 1 === (l & 1);
    };
  })(b.GeometricUtilities || (b.GeometricUtilities = {}));
  (function(a) {
    a[a.Error = 1] = "Error";
    a[a.Warn = 2] = "Warn";
    a[a.Debug = 4] = "Debug";
    a[a.Log = 8] = "Log";
    a[a.Info = 16] = "Info";
    a[a.All = 31] = "All";
  })(b.LogLevel || (b.LogLevel = {}));
  d = function() {
    function a(c, e) {
      "undefined" === typeof c && (c = !1);
      this._tab = "  ";
      this._padding = "";
      this._suppressOutput = c;
      this._out = e || a._consoleOut;
      this._outNoNewline = e || a._consoleOutNoNewline;
    }
    a.prototype.write = function(a, c) {
      "undefined" === typeof a && (a = "");
      "undefined" === typeof c && (c = !1);
      this._suppressOutput || this._outNoNewline((c ? this._padding : "") + a);
    };
    a.prototype.writeLn = function(a) {
      "undefined" === typeof a && (a = "");
      this._suppressOutput || this._out(this._padding + a);
    };
    a.prototype.writeTimeLn = function(a) {
      "undefined" === typeof a && (a = "");
      this._suppressOutput || this._out(this._padding + performance.now().toFixed(2) + " " + a);
    };
    a.prototype.writeComment = function(a) {
      a = a.split("\n");
      if (1 === a.length) {
        this.writeLn("// " + a[0]);
      } else {
        this.writeLn("/**");
        for (var c = 0;c < a.length;c++) {
          this.writeLn(" * " + a[c]);
        }
        this.writeLn(" */");
      }
    };
    a.prototype.writeLns = function(a) {
      a = a.split("\n");
      for (var c = 0;c < a.length;c++) {
        this.writeLn(a[c]);
      }
    };
    a.prototype.errorLn = function(c) {
      a.logLevel & 1 && this.boldRedLn(c);
    };
    a.prototype.warnLn = function(c) {
      a.logLevel & 2 && this.yellowLn(c);
    };
    a.prototype.debugLn = function(c) {
      a.logLevel & 4 && this.purpleLn(c);
    };
    a.prototype.logLn = function(c) {
      a.logLevel & 8 && this.writeLn(c);
    };
    a.prototype.infoLn = function(c) {
      a.logLevel & 16 && this.writeLn(c);
    };
    a.prototype.yellowLn = function(c) {
      this.colorLn(a.YELLOW, c);
    };
    a.prototype.greenLn = function(c) {
      this.colorLn(a.GREEN, c);
    };
    a.prototype.boldRedLn = function(c) {
      this.colorLn(a.BOLD_RED, c);
    };
    a.prototype.redLn = function(c) {
      this.colorLn(a.RED, c);
    };
    a.prototype.purpleLn = function(c) {
      this.colorLn(a.PURPLE, c);
    };
    a.prototype.colorLn = function(c, e) {
      this._suppressOutput || (inBrowser ? this._out(this._padding + e) : this._out(this._padding + c + e + a.ENDC));
    };
    a.prototype.redLns = function(c) {
      this.colorLns(a.RED, c);
    };
    a.prototype.colorLns = function(a, c) {
      for (var l = c.split("\n"), h = 0;h < l.length;h++) {
        this.colorLn(a, l[h]);
      }
    };
    a.prototype.enter = function(a) {
      this._suppressOutput || this._out(this._padding + a);
      this.indent();
    };
    a.prototype.leaveAndEnter = function() {
      this.leave("Slots");
      this.indent();
    };
    a.prototype.leave = function(a) {
      this.outdent();
      this._suppressOutput || this._out(this._padding + a);
    };
    a.prototype.indent = function() {
      this._padding += this._tab;
    };
    a.prototype.outdent = function() {
      0 < this._padding.length && (this._padding = this._padding.substring(0, this._padding.length - this._tab.length));
    };
    a.prototype.writeArray = function(a, c, l) {
      "undefined" === typeof c && (c = !1);
      "undefined" === typeof l && (l = !1);
      c = c || !1;
      for (var h = 0, e = a.length;h < e;h++) {
        var q = "";
        c && (q = null === a[h] ? "null" : void 0 === a[h] ? "undefined" : a[h].constructor.name, q += " ");
        var d = l ? "" : ("" + h).padRight(" ", 4);
        this.writeLn(d + q + a[h]);
      }
    };
    a.PURPLE = "\u001b[94m";
    a.YELLOW = "\u001b[93m";
    a.GREEN = "\u001b[92m";
    a.RED = "\u001b[91m";
    a.BOLD_RED = "\u001b[1;91m";
    a.ENDC = "\u001b[0m";
    a.logLevel = 31;
    a._consoleOut = inBrowser ? console.info.bind(console) : print;
    a._consoleOutNoNewline = inBrowser ? console.info.bind(console) : putstr;
    return a;
  }();
  b.IndentingWriter = d;
  var p = function() {
    return function(a, c) {
      this.value = a;
      this.next = c;
    };
  }(), d = function() {
    function a(c) {
      s.assert(c);
      this._compare = c;
      this._head = null;
      this._length = 0;
    }
    a.prototype.push = function(a) {
      s.assert(void 0 !== a);
      this._length++;
      if (this._head) {
        var c = this._head, l = null;
        a = new p(a, null);
        for (var h = this._compare;c;) {
          if (0 < h(c.value, a.value)) {
            l ? (a.next = c, l.next = a) : (a.next = this._head, this._head = a);
            return;
          }
          l = c;
          c = c.next;
        }
        l.next = a;
      } else {
        this._head = new p(a, null);
      }
    };
    a.prototype.forEach = function(c) {
      for (var e = this._head, r = null;e;) {
        var h = c(e.value);
        if (h === a.RETURN) {
          break;
        } else {
          h === a.DELETE ? e = r ? r.next = e.next : this._head = this._head.next : (r = e, e = e.next);
        }
      }
    };
    a.prototype.isEmpty = function() {
      return!this._head;
    };
    a.prototype.pop = function() {
      if (this._head) {
        this._length--;
        var a = this._head;
        this._head = this._head.next;
        return a.value;
      }
    };
    a.prototype.contains = function(a) {
      for (var c = this._head;c;) {
        if (c.value === a) {
          return!0;
        }
        c = c.next;
      }
      return!1;
    };
    a.prototype.toString = function() {
      for (var a = "[", c = this._head;c;) {
        a += c.value.toString(), (c = c.next) && (a += ",");
      }
      return a + "]";
    };
    a.RETURN = 1;
    a.DELETE = 2;
    return a;
  }();
  b.SortedList = d;
  d = function() {
    function a(c, l) {
      "undefined" === typeof l && (l = 12);
      this.start = this.index = 0;
      this._size = 1 << l;
      this._mask = this._size - 1;
      this.array = new c(this._size);
    }
    a.prototype.get = function(a) {
      return this.array[a];
    };
    a.prototype.forEachInReverse = function(a) {
      if (!this.isEmpty()) {
        for (var c = 0 === this.index ? this._size - 1 : this.index - 1, l = this.start - 1 & this._mask;c !== l && !a(this.array[c], c);) {
          c = 0 === c ? this._size - 1 : c - 1;
        }
      }
    };
    a.prototype.write = function(a) {
      this.array[this.index] = a;
      this.index = this.index + 1 & this._mask;
      this.index === this.start && (this.start = this.start + 1 & this._mask);
    };
    a.prototype.isFull = function() {
      return(this.index + 1 & this._mask) === this.start;
    };
    a.prototype.isEmpty = function() {
      return this.index === this.start;
    };
    a.prototype.reset = function() {
      this.start = this.index = 0;
    };
    return a;
  }();
  b.CircularBuffer = d;
  (function(a) {
    function c(h) {
      return h + (a.BITS_PER_WORD - 1) >> a.ADDRESS_BITS_PER_WORD << a.ADDRESS_BITS_PER_WORD;
    }
    function e(a, h) {
      a = a || "1";
      h = h || "0";
      for (var c = "", l = 0;l < length;l++) {
        c += this.get(l) ? a : h;
      }
      return c;
    }
    function r(a) {
      for (var h = [], c = 0;c < length;c++) {
        this.get(c) && h.push(a ? a[c] : c);
      }
      return h.join(", ");
    }
    var h = b.Debug.assert;
    a.ADDRESS_BITS_PER_WORD = 5;
    a.BITS_PER_WORD = 1 << a.ADDRESS_BITS_PER_WORD;
    a.BIT_INDEX_MASK = a.BITS_PER_WORD - 1;
    var q = function() {
      function e(h) {
        this.size = c(h);
        this.dirty = this.count = 0;
        this.length = h;
        this.bits = new Uint32Array(this.size >> a.ADDRESS_BITS_PER_WORD);
      }
      e.prototype.recount = function() {
        if (this.dirty) {
          for (var a = this.bits, h = 0, c = 0, e = a.length;c < e;c++) {
            var l = a[c], l = l - (l >> 1 & 1431655765), l = (l & 858993459) + (l >> 2 & 858993459), h = h + (16843009 * (l + (l >> 4) & 252645135) >> 24)
          }
          this.count = h;
          this.dirty = 0;
        }
      };
      e.prototype.set = function(h) {
        var c = h >> a.ADDRESS_BITS_PER_WORD, e = this.bits[c];
        h = e | 1 << (h & a.BIT_INDEX_MASK);
        this.bits[c] = h;
        this.dirty |= e ^ h;
      };
      e.prototype.setAll = function() {
        for (var a = this.bits, h = 0, c = a.length;h < c;h++) {
          a[h] = 4294967295;
        }
        this.count = this.size;
        this.dirty = 0;
      };
      e.prototype.assign = function(a) {
        this.count = a.count;
        this.dirty = a.dirty;
        this.size = a.size;
        for (var h = 0, c = this.bits.length;h < c;h++) {
          this.bits[h] = a.bits[h];
        }
      };
      e.prototype.clear = function(h) {
        var c = h >> a.ADDRESS_BITS_PER_WORD, e = this.bits[c];
        h = e & ~(1 << (h & a.BIT_INDEX_MASK));
        this.bits[c] = h;
        this.dirty |= e ^ h;
      };
      e.prototype.get = function(h) {
        return 0 !== (this.bits[h >> a.ADDRESS_BITS_PER_WORD] & 1 << (h & a.BIT_INDEX_MASK));
      };
      e.prototype.clearAll = function() {
        for (var a = this.bits, h = 0, c = a.length;h < c;h++) {
          a[h] = 0;
        }
        this.dirty = this.count = 0;
      };
      e.prototype._union = function(a) {
        var h = this.dirty, c = this.bits;
        a = a.bits;
        for (var e = 0, l = c.length;e < l;e++) {
          var r = c[e], q = r | a[e];
          c[e] = q;
          h |= r ^ q;
        }
        this.dirty = h;
      };
      e.prototype.intersect = function(a) {
        var h = this.dirty, c = this.bits;
        a = a.bits;
        for (var e = 0, l = c.length;e < l;e++) {
          var r = c[e], q = r & a[e];
          c[e] = q;
          h |= r ^ q;
        }
        this.dirty = h;
      };
      e.prototype.subtract = function(a) {
        var h = this.dirty, c = this.bits;
        a = a.bits;
        for (var e = 0, l = c.length;e < l;e++) {
          var r = c[e], q = r & ~a[e];
          c[e] = q;
          h |= r ^ q;
        }
        this.dirty = h;
      };
      e.prototype.negate = function() {
        for (var a = this.dirty, h = this.bits, c = 0, e = h.length;c < e;c++) {
          var l = h[c], r = ~l;
          h[c] = r;
          a |= l ^ r;
        }
        this.dirty = a;
      };
      e.prototype.forEach = function(c) {
        h(c);
        for (var e = this.bits, r = 0, q = e.length;r < q;r++) {
          var u = e[r];
          if (u) {
            for (var d = 0;d < a.BITS_PER_WORD;d++) {
              u & 1 << d && c(r * a.BITS_PER_WORD + d);
            }
          }
        }
      };
      e.prototype.toArray = function() {
        for (var h = [], c = this.bits, e = 0, r = c.length;e < r;e++) {
          var q = c[e];
          if (q) {
            for (var u = 0;u < a.BITS_PER_WORD;u++) {
              q & 1 << u && h.push(e * a.BITS_PER_WORD + u);
            }
          }
        }
        return h;
      };
      e.prototype.equals = function(a) {
        if (this.size !== a.size) {
          return!1;
        }
        var h = this.bits;
        a = a.bits;
        for (var c = 0, e = h.length;c < e;c++) {
          if (h[c] !== a[c]) {
            return!1;
          }
        }
        return!0;
      };
      e.prototype.contains = function(a) {
        if (this.size !== a.size) {
          return!1;
        }
        var h = this.bits;
        a = a.bits;
        for (var c = 0, e = h.length;c < e;c++) {
          if ((h[c] | a[c]) !== h[c]) {
            return!1;
          }
        }
        return!0;
      };
      e.prototype.isEmpty = function() {
        this.recount();
        return 0 === this.count;
      };
      e.prototype.clone = function() {
        var a = new e(this.length);
        a._union(this);
        return a;
      };
      return e;
    }();
    a.Uint32ArrayBitSet = q;
    var d = function() {
      function e(a) {
        this.dirty = this.count = 0;
        this.size = c(a);
        this.bits = 0;
        this.singleWord = !0;
        this.length = a;
      }
      e.prototype.recount = function() {
        if (this.dirty) {
          var a = this.bits, a = a - (a >> 1 & 1431655765), a = (a & 858993459) + (a >> 2 & 858993459);
          this.count = 0 + (16843009 * (a + (a >> 4) & 252645135) >> 24);
          this.dirty = 0;
        }
      };
      e.prototype.set = function(h) {
        var c = this.bits;
        this.bits = h = c | 1 << (h & a.BIT_INDEX_MASK);
        this.dirty |= c ^ h;
      };
      e.prototype.setAll = function() {
        this.bits = 4294967295;
        this.count = this.size;
        this.dirty = 0;
      };
      e.prototype.assign = function(a) {
        this.count = a.count;
        this.dirty = a.dirty;
        this.size = a.size;
        this.bits = a.bits;
      };
      e.prototype.clear = function(h) {
        var c = this.bits;
        this.bits = h = c & ~(1 << (h & a.BIT_INDEX_MASK));
        this.dirty |= c ^ h;
      };
      e.prototype.get = function(h) {
        return 0 !== (this.bits & 1 << (h & a.BIT_INDEX_MASK));
      };
      e.prototype.clearAll = function() {
        this.dirty = this.count = this.bits = 0;
      };
      e.prototype._union = function(a) {
        var h = this.bits;
        this.bits = a = h | a.bits;
        this.dirty = h ^ a;
      };
      e.prototype.intersect = function(a) {
        var h = this.bits;
        this.bits = a = h & a.bits;
        this.dirty = h ^ a;
      };
      e.prototype.subtract = function(a) {
        var h = this.bits;
        this.bits = a = h & ~a.bits;
        this.dirty = h ^ a;
      };
      e.prototype.negate = function() {
        var a = this.bits, h = ~a;
        this.bits = h;
        this.dirty = a ^ h;
      };
      e.prototype.forEach = function(c) {
        h(c);
        var e = this.bits;
        if (e) {
          for (var r = 0;r < a.BITS_PER_WORD;r++) {
            e & 1 << r && c(r);
          }
        }
      };
      e.prototype.toArray = function() {
        var h = [], c = this.bits;
        if (c) {
          for (var e = 0;e < a.BITS_PER_WORD;e++) {
            c & 1 << e && h.push(e);
          }
        }
        return h;
      };
      e.prototype.equals = function(a) {
        return this.bits === a.bits;
      };
      e.prototype.contains = function(a) {
        var h = this.bits;
        return(h | a.bits) === h;
      };
      e.prototype.isEmpty = function() {
        this.recount();
        return 0 === this.count;
      };
      e.prototype.clone = function() {
        var a = new e(this.length);
        a._union(this);
        return a;
      };
      return e;
    }();
    a.Uint32BitSet = d;
    d.prototype.toString = r;
    d.prototype.toBitString = e;
    q.prototype.toString = r;
    q.prototype.toBitString = e;
    a.BitSetFunctor = function(h) {
      var e = 1 === c(h) >> a.ADDRESS_BITS_PER_WORD ? d : q;
      return function() {
        return new e(h);
      };
    };
  })(b.BitSets || (b.BitSets = {}));
  d = function() {
    function a() {
    }
    a.randomStyle = function() {
      a._randomStyleCache || (a._randomStyleCache = "#ff5e3a #ff9500 #ffdb4c #87fc70 #52edc7 #1ad6fd #c644fc #ef4db6 #4a4a4a #dbddde #ff3b30 #ff9500 #ffcc00 #4cd964 #34aadc #007aff #5856d6 #ff2d55 #8e8e93 #c7c7cc #5ad427 #c86edf #d1eefc #e0f8d8 #fb2b69 #f7f7f7 #1d77ef #d6cec3 #55efcb #ff4981 #ffd3e0 #f7f7f7 #ff1300 #1f1f21 #bdbec2 #ff3a2d".split(" "));
      return a._randomStyleCache[a._nextStyle++ % a._randomStyleCache.length];
    };
    a.contrastStyle = function(a) {
      a = parseInt(a.substr(1), 16);
      return 128 <= (299 * (a >> 16) + 587 * (a >> 8 & 255) + 114 * (a & 255)) / 1E3 ? "#000000" : "#ffffff";
    };
    a.reset = function() {
      a._nextStyle = 0;
    };
    a.TabToolbar = "#252c33";
    a.Toolbars = "#343c45";
    a.HighlightBlue = "#1d4f73";
    a.LightText = "#f5f7fa";
    a.ForegroundText = "#b6babf";
    a.Black = "#000000";
    a.VeryDark = "#14171a";
    a.Dark = "#181d20";
    a.Light = "#a9bacb";
    a.Grey = "#8fa1b2";
    a.DarkGrey = "#5f7387";
    a.Blue = "#46afe3";
    a.Purple = "#6b7abb";
    a.Pink = "#df80ff";
    a.Red = "#eb5368";
    a.Orange = "#d96629";
    a.LightOrange = "#d99b28";
    a.Green = "#70bf53";
    a.BlueGrey = "#5e88b0";
    a._nextStyle = 0;
    return a;
  }();
  b.ColorStyle = d;
  d = function() {
    function a(c, e, l, h) {
      this.xMin = c | 0;
      this.yMin = e | 0;
      this.xMax = l | 0;
      this.yMax = h | 0;
    }
    a.FromUntyped = function(c) {
      return new a(c.xMin, c.yMin, c.xMax, c.yMax);
    };
    a.FromRectangle = function(c) {
      return new a(20 * c.x | 0, 20 * c.y | 0, 20 * (c.x + c.width) | 0, 20 * (c.y + c.height) | 0);
    };
    a.prototype.setElements = function(a, c, e, h) {
      this.xMin = a;
      this.yMin = c;
      this.xMax = e;
      this.yMax = h;
    };
    a.prototype.copyFrom = function(a) {
      this.setElements(a.xMin, a.yMin, a.xMax, a.yMax);
    };
    a.prototype.contains = function(a, c) {
      return a < this.xMin !== a < this.xMax && c < this.yMin !== c < this.yMax;
    };
    a.prototype.unionInPlace = function(a) {
      this.xMin = Math.min(this.xMin, a.xMin);
      this.yMin = Math.min(this.yMin, a.yMin);
      this.xMax = Math.max(this.xMax, a.xMax);
      this.yMax = Math.max(this.yMax, a.yMax);
    };
    a.prototype.extendByPoint = function(a, c) {
      this.extendByX(a);
      this.extendByY(c);
    };
    a.prototype.extendByX = function(a) {
      134217728 === this.xMin ? this.xMin = this.xMax = a : (this.xMin = Math.min(this.xMin, a), this.xMax = Math.max(this.xMax, a));
    };
    a.prototype.extendByY = function(a) {
      134217728 === this.yMin ? this.yMin = this.yMax = a : (this.yMin = Math.min(this.yMin, a), this.yMax = Math.max(this.yMax, a));
    };
    a.prototype.intersects = function(a) {
      return this.contains(a.xMin, a.yMin) || this.contains(a.xMax, a.yMax);
    };
    a.prototype.isEmpty = function() {
      return this.xMax <= this.xMin || this.yMax <= this.yMin;
    };
    Object.defineProperty(a.prototype, "width", {get:function() {
      return this.xMax - this.xMin;
    }, set:function(a) {
      this.xMax = this.xMin + a;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "height", {get:function() {
      return this.yMax - this.yMin;
    }, set:function(a) {
      this.yMax = this.yMin + a;
    }, enumerable:!0, configurable:!0});
    a.prototype.getBaseWidth = function(a) {
      return Math.abs(Math.cos(a)) * (this.xMax - this.xMin) + Math.abs(Math.sin(a)) * (this.yMax - this.yMin);
    };
    a.prototype.getBaseHeight = function(a) {
      return Math.abs(Math.sin(a)) * (this.xMax - this.xMin) + Math.abs(Math.cos(a)) * (this.yMax - this.yMin);
    };
    a.prototype.setEmpty = function() {
      this.xMin = this.yMin = this.xMax = this.yMax = 0;
    };
    a.prototype.setToSentinels = function() {
      this.xMin = this.yMin = this.xMax = this.yMax = 134217728;
    };
    a.prototype.clone = function() {
      return new a(this.xMin, this.yMin, this.xMax, this.yMax);
    };
    a.prototype.toString = function() {
      return "{ xMin: " + this.xMin + ", xMin: " + this.yMin + ", xMax: " + this.xMax + ", xMax: " + this.yMax + " }";
    };
    return a;
  }();
  b.Bounds = d;
  d = function() {
    function a(c, e, l, h) {
      s.assert(k(c));
      s.assert(k(e));
      s.assert(k(l));
      s.assert(k(h));
      this._xMin = c | 0;
      this._yMin = e | 0;
      this._xMax = l | 0;
      this._yMax = h | 0;
    }
    a.FromUntyped = function(c) {
      return new a(c.xMin, c.yMin, c.xMax, c.yMax);
    };
    a.FromRectangle = function(c) {
      return new a(20 * c.x | 0, 20 * c.y | 0, 20 * (c.x + c.width) | 0, 20 * (c.y + c.height) | 0);
    };
    a.prototype.setElements = function(a, c, e, h) {
      this.xMin = a;
      this.yMin = c;
      this.xMax = e;
      this.yMax = h;
    };
    a.prototype.copyFrom = function(a) {
      this.setElements(a.xMin, a.yMin, a.xMax, a.yMax);
    };
    a.prototype.contains = function(a, c) {
      return a < this.xMin !== a < this.xMax && c < this.yMin !== c < this.yMax;
    };
    a.prototype.unionWith = function(a) {
      this._xMin = Math.min(this._xMin, a._xMin);
      this._yMin = Math.min(this._yMin, a._yMin);
      this._xMax = Math.max(this._xMax, a._xMax);
      this._yMax = Math.max(this._yMax, a._yMax);
    };
    a.prototype.extendByPoint = function(a, c) {
      this.extendByX(a);
      this.extendByY(c);
    };
    a.prototype.extendByX = function(a) {
      134217728 === this.xMin ? this.xMin = this.xMax = a : (this.xMin = Math.min(this.xMin, a), this.xMax = Math.max(this.xMax, a));
    };
    a.prototype.extendByY = function(a) {
      134217728 === this.yMin ? this.yMin = this.yMax = a : (this.yMin = Math.min(this.yMin, a), this.yMax = Math.max(this.yMax, a));
    };
    a.prototype.intersects = function(a) {
      return this.contains(a._xMin, a._yMin) || this.contains(a._xMax, a._yMax);
    };
    a.prototype.isEmpty = function() {
      return this._xMax <= this._xMin || this._yMax <= this._yMin;
    };
    Object.defineProperty(a.prototype, "xMin", {get:function() {
      return this._xMin;
    }, set:function(a) {
      s.assert(k(a));
      this._xMin = a;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "yMin", {get:function() {
      return this._yMin;
    }, set:function(a) {
      s.assert(k(a));
      this._yMin = a | 0;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "xMax", {get:function() {
      return this._xMax;
    }, set:function(a) {
      s.assert(k(a));
      this._xMax = a | 0;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "width", {get:function() {
      return this._xMax - this._xMin;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "yMax", {get:function() {
      return this._yMax;
    }, set:function(a) {
      s.assert(k(a));
      this._yMax = a | 0;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "height", {get:function() {
      return this._yMax - this._yMin;
    }, enumerable:!0, configurable:!0});
    a.prototype.getBaseWidth = function(a) {
      return Math.abs(Math.cos(a)) * (this._xMax - this._xMin) + Math.abs(Math.sin(a)) * (this._yMax - this._yMin);
    };
    a.prototype.getBaseHeight = function(a) {
      return Math.abs(Math.sin(a)) * (this._xMax - this._xMin) + Math.abs(Math.cos(a)) * (this._yMax - this._yMin);
    };
    a.prototype.setEmpty = function() {
      this._xMin = this._yMin = this._xMax = this._yMax = 0;
    };
    a.prototype.clone = function() {
      return new a(this.xMin, this.yMin, this.xMax, this.yMax);
    };
    a.prototype.toString = function() {
      return "{ xMin: " + this._xMin + ", xMin: " + this._yMin + ", xMax: " + this._xMax + ", yMax: " + this._yMax + " }";
    };
    a.prototype.assertValid = function() {
    };
    return a;
  }();
  b.DebugBounds = d;
  d = function() {
    function a(c, e, l, h) {
      this.r = c;
      this.g = e;
      this.b = l;
      this.a = h;
    }
    a.FromARGB = function(c) {
      return new a((c >> 16 & 255) / 255, (c >> 8 & 255) / 255, (c >> 0 & 255) / 255, (c >> 24 & 255) / 255);
    };
    a.FromRGBA = function(c) {
      return a.FromARGB(e.RGBAToARGB(c));
    };
    a.prototype.toRGBA = function() {
      return 255 * this.r << 24 | 255 * this.g << 16 | 255 * this.b << 8 | 255 * this.a;
    };
    a.prototype.toCSSStyle = function() {
      return e.rgbaToCSSStyle(this.toRGBA());
    };
    a.prototype.set = function(a) {
      this.r = a.r;
      this.g = a.g;
      this.b = a.b;
      this.a = a.a;
    };
    a.randomColor = function(c) {
      "undefined" === typeof c && (c = 1);
      return new a(Math.random(), Math.random(), Math.random(), c);
    };
    a.parseColor = function(c) {
      a.colorCache || (a.colorCache = Object.create(null));
      if (a.colorCache[c]) {
        return a.colorCache[c];
      }
      var e = document.createElement("span");
      document.body.appendChild(e);
      e.style.backgroundColor = c;
      var r = getComputedStyle(e).backgroundColor;
      document.body.removeChild(e);
      (e = /^rgb\((\d+), (\d+), (\d+)\)$/.exec(r)) || (e = /^rgba\((\d+), (\d+), (\d+), ([\d.]+)\)$/.exec(r));
      r = new a(0, 0, 0, 0);
      r.r = parseFloat(e[1]) / 255;
      r.g = parseFloat(e[2]) / 255;
      r.b = parseFloat(e[3]) / 255;
      r.a = e[4] ? parseFloat(e[4]) / 255 : 1;
      return a.colorCache[c] = r;
    };
    a.Red = new a(1, 0, 0, 1);
    a.Green = new a(0, 1, 0, 1);
    a.Blue = new a(0, 0, 1, 1);
    a.None = new a(0, 0, 0, 0);
    a.White = new a(1, 1, 1, 1);
    a.Black = new a(0, 0, 0, 1);
    a.colorCache = {};
    return a;
  }();
  b.Color = d;
  (function(a) {
    function c(a) {
      var e, l, r = a >> 24 & 255;
      l = (Math.imul(a >> 16 & 255, r) + 127) / 255 | 0;
      e = (Math.imul(a >> 8 & 255, r) + 127) / 255 | 0;
      a = (Math.imul(a >> 0 & 255, r) + 127) / 255 | 0;
      return r << 24 | l << 16 | e << 8 | a;
    }
    a.RGBAToARGB = function(a) {
      return a >> 8 & 16777215 | (a & 255) << 24;
    };
    a.ARGBToRGBA = function(a) {
      return a << 8 | a >> 24 & 255;
    };
    a.rgbaToCSSStyle = function(a) {
      return b.StringUtilities.concat9("rgba(", a >> 24 & 255, ",", a >> 16 & 255, ",", a >> 8 & 255, ",", (a & 255) / 255, ")");
    };
    a.cssStyleToRGBA = function(a) {
      if ("#" === a[0]) {
        if (7 === a.length) {
          return parseInt(a.substring(1), 16) << 8 | 255;
        }
      } else {
        if ("r" === a[0]) {
          return a = a.substring(5, a.length - 1).split(","), (parseInt(a[0]) & 255) << 24 | (parseInt(a[1]) & 255) << 16 | (parseInt(a[2]) & 255) << 8 | 255 * parseFloat(a[3]) & 255;
        }
      }
      return 4278190335;
    };
    a.hexToRGB = function(a) {
      return parseInt(a.slice(1), 16);
    };
    a.rgbToHex = function(a) {
      return "#" + ("000000" + a.toString(16)).slice(-6);
    };
    a.isValidHexColor = function(a) {
      return/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(a);
    };
    a.clampByte = function(a) {
      return Math.max(0, Math.min(255, a));
    };
    a.unpremultiplyARGB = function(a) {
      var c, e, l = a >> 24 & 255;
      e = Math.imul(255, a >> 16 & 255) / l & 255;
      c = Math.imul(255, a >> 8 & 255) / l & 255;
      a = Math.imul(255, a >> 0 & 255) / l & 255;
      return l << 24 | e << 16 | c << 8 | a;
    };
    a.premultiplyARGB = c;
    var e;
    a.ensureUnpremultiplyTable = function() {
      if (!e) {
        e = new Uint8Array(65536);
        for (var a = 0;256 > a;a++) {
          for (var c = 0;256 > c;c++) {
            e[(c << 8) + a] = Math.imul(255, a) / c;
          }
        }
      }
    };
    a.tableLookupUnpremultiplyARGB = function(a) {
      a |= 0;
      var c = a >> 24 & 255;
      if (0 === c) {
        return 0;
      }
      if (255 === c) {
        return a;
      }
      var l, r, q = c << 8, d = e;
      r = d[q + (a >> 16 & 255)];
      l = d[q + (a >> 8 & 255)];
      a = d[q + (a >> 0 & 255)];
      return c << 24 | r << 16 | l << 8 | a;
    };
    a.blendPremultipliedBGRA = function(a, c) {
      var e, l;
      l = 256 - (c & 255);
      e = Math.imul(a & 16711935, l) >> 8;
      l = Math.imul(a >> 8 & 16711935, l) >> 8;
      return((c >> 8 & 16711935) + l & 16711935) << 8 | (c & 16711935) + e & 16711935;
    };
    var r = n.swap32;
    a.convertImage = function(a, l, d, p) {
      d !== p && s.assert(d.buffer !== p.buffer, "Can't handle overlapping views.");
      var n = d.length;
      if (a === l) {
        if (d !== p) {
          for (a = 0;a < n;a++) {
            p[a] = d[a];
          }
        }
      } else {
        if (1 === a && 3 === l) {
          for (b.ColorUtilities.ensureUnpremultiplyTable(), a = 0;a < n;a++) {
            var m = d[a];
            l = m & 255;
            if (0 === l) {
              p[a] = 0;
            } else {
              if (255 === l) {
                p[a] = (m & 255) << 24 | m >> 8 & 16777215;
              } else {
                var f = m >> 24 & 255, g = m >> 16 & 255, m = m >> 8 & 255, k = l << 8, t = e, m = t[k + m], g = t[k + g], f = t[k + f];
                p[a] = l << 24 | f << 16 | g << 8 | m;
              }
            }
          }
        } else {
          if (2 === a && 3 === l) {
            for (a = 0;a < n;a++) {
              p[a] = r(d[a]);
            }
          } else {
            if (3 === a && 1 === l) {
              for (a = 0;a < n;a++) {
                l = d[a], p[a] = r(c(l & 4278255360 | l >> 16 & 255 | (l & 255) << 16));
              }
            } else {
              for (s.somewhatImplemented("Image Format Conversion: " + q[a] + " -> " + q[l]), a = 0;a < n;a++) {
                p[a] = d[a];
              }
            }
          }
        }
      }
    };
  })(b.ColorUtilities || (b.ColorUtilities = {}));
  var e = b.ColorUtilities, d = function() {
    function a(c) {
      "undefined" === typeof c && (c = 32);
      this._list = [];
      this._maxSize = c;
    }
    a.prototype.acquire = function(c) {
      if (a._enabled) {
        for (var e = this._list, r = 0;r < e.length;r++) {
          var h = e[r];
          if (h.byteLength >= c) {
            return e.splice(r, 1), h;
          }
        }
      }
      return new ArrayBuffer(c);
    };
    a.prototype.release = function(c) {
      if (a._enabled) {
        var e = this._list;
        s.assert(0 > m.indexOf(e, c));
        e.length === this._maxSize && e.shift();
        e.push(c);
      }
    };
    a.prototype.ensureUint8ArrayLength = function(a, c) {
      if (a.length >= c) {
        return a;
      }
      var e = Math.max(a.length + c, (3 * a.length >> 1) + 1), e = new Uint8Array(this.acquire(e), 0, e);
      e.set(a);
      this.release(a.buffer);
      return e;
    };
    a.prototype.ensureFloat64ArrayLength = function(a, c) {
      if (a.length >= c) {
        return a;
      }
      var e = Math.max(a.length + c, (3 * a.length >> 1) + 1), e = new Float64Array(this.acquire(e * Float64Array.BYTES_PER_ELEMENT), 0, e);
      e.set(a);
      this.release(a.buffer);
      return e;
    };
    a._enabled = !0;
    return a;
  }();
  b.ArrayBufferPool = d;
  (function(a) {
    (function(a) {
      a[a.EXTERNAL_INTERFACE_FEATURE = 1] = "EXTERNAL_INTERFACE_FEATURE";
      a[a.CLIPBOARD_FEATURE = 2] = "CLIPBOARD_FEATURE";
      a[a.SHAREDOBJECT_FEATURE = 3] = "SHAREDOBJECT_FEATURE";
      a[a.VIDEO_FEATURE = 4] = "VIDEO_FEATURE";
      a[a.SOUND_FEATURE = 5] = "SOUND_FEATURE";
      a[a.NETCONNECTION_FEATURE = 6] = "NETCONNECTION_FEATURE";
    })(a.Feature || (a.Feature = {}));
    (function(a) {
      a[a.AVM1_ERROR = 1] = "AVM1_ERROR";
      a[a.AVM2_ERROR = 2] = "AVM2_ERROR";
    })(a.ErrorTypes || (a.ErrorTypes = {}));
    a.instance;
  })(b.Telemetry || (b.Telemetry = {}));
  (function(a) {
    a.instance;
  })(b.FileLoadingService || (b.FileLoadingService = {}));
  (function(a) {
    a.instance = {enabled:!1, initJS:function(a) {
    }, registerCallback:function(a) {
    }, unregisterCallback:function(a) {
    }, eval:function(a) {
    }, call:function(a) {
    }, getId:function() {
      return null;
    }};
  })(b.ExternalInterfaceService || (b.ExternalInterfaceService = {}));
  d = function() {
    function a() {
    }
    a.prototype.setClipboard = function(a) {
      s.abstractMethod("public ClipboardService::setClipboard");
    };
    a.instance = null;
    return a;
  }();
  b.ClipboardService = d;
  d = function() {
    function a() {
      this._queues = {};
    }
    a.prototype.register = function(a, c) {
      s.assert(a);
      s.assert(c);
      var e = this._queues[a];
      if (e) {
        if (-1 < e.indexOf(c)) {
          return;
        }
      } else {
        e = this._queues[a] = [];
      }
      e.push(c);
    };
    a.prototype.unregister = function(a, c) {
      s.assert(a);
      s.assert(c);
      var e = this._queues[a];
      if (e) {
        var h = e.indexOf(c);
        -1 !== h && e.splice(h, 1);
        0 === e.length && (this._queues[a] = null);
      }
    };
    a.prototype.notify = function(a, c) {
      var e = this._queues[a];
      if (e) {
        e = e.slice();
        c = Array.prototype.slice.call(arguments, 0);
        for (var h = 0;h < e.length;h++) {
          e[h].apply(null, c);
        }
      }
    };
    a.prototype.notify1 = function(a, c) {
      var e = this._queues[a];
      if (e) {
        for (var e = e.slice(), h = 0;h < e.length;h++) {
          (0,e[h])(a, c);
        }
      }
    };
    return a;
  }();
  b.Callback = d;
  (function(a) {
    a[a.None = 0] = "None";
    a[a.PremultipliedAlphaARGB = 1] = "PremultipliedAlphaARGB";
    a[a.StraightAlphaARGB = 2] = "StraightAlphaARGB";
    a[a.StraightAlphaRGBA = 3] = "StraightAlphaRGBA";
    a[a.JPEG = 4] = "JPEG";
    a[a.PNG = 5] = "PNG";
    a[a.GIF = 6] = "GIF";
  })(b.ImageType || (b.ImageType = {}));
  var q = b.ImageType;
  b.PromiseWrapper = function() {
    return function() {
      this.promise = new Promise(function(a, c) {
        this.resolve = a;
        this.reject = c;
      }.bind(this));
    };
  }();
})(Shumway || (Shumway = {}));
(function() {
  function b(a) {
    if ("function" !== typeof a) {
      throw new TypeError("Invalid deferred constructor");
    }
    var c = p();
    a = new a(c);
    var e = c.resolve;
    if ("function" !== typeof e) {
      throw new TypeError("Invalid resolve construction function");
    }
    c = c.reject;
    if ("function" !== typeof c) {
      throw new TypeError("Invalid reject construction function");
    }
    return{promise:a, resolve:e, reject:c};
  }
  function k(a, c) {
    if ("object" !== typeof a || null === a) {
      return!1;
    }
    try {
      var e = a.then;
      if ("function" !== typeof e) {
        return!1;
      }
      e.call(a, c.resolve, c.reject);
    } catch (l) {
      e = c.reject, e(l);
    }
    return!0;
  }
  function g(a) {
    return "object" === typeof a && null !== a && "undefined" !== typeof a.promiseStatus;
  }
  function f(a, c) {
    if ("unresolved" === a.promiseStatus) {
      var e = a.rejectReactions;
      a.result = c;
      a.resolveReactions = void 0;
      a.rejectReactions = void 0;
      a.promiseStatus = "has-rejection";
      t(e, c);
    }
  }
  function t(a, c) {
    for (var e = 0;e < a.length;e++) {
      s({reaction:a[e], argument:c});
    }
  }
  function s(a) {
    0 === w.length && setTimeout(m, 0);
    w.push(a);
  }
  function m() {
    for (;0 < w.length;) {
      var a = w[0];
      try {
        a: {
          var c = a.reaction, e = c.deferred, q = c.handler, d = void 0, p = void 0;
          try {
            d = q(a.argument);
          } catch (n) {
            var b = e.reject;
            b(n);
            break a;
          }
          if (d === e.promise) {
            b = e.reject, b(new TypeError("Self resolution"));
          } else {
            try {
              if (p = k(d, e), !p) {
                var m = e.resolve;
                m(d);
              }
            } catch (u) {
              b = e.reject, b(u);
            }
          }
        }
      } catch (f) {
        if ("function" === typeof l.onerror) {
          l.onerror(f);
        }
      }
      w.shift();
    }
  }
  function d(a) {
    throw a;
  }
  function a(a) {
    return a;
  }
  function c(a) {
    return function(c) {
      f(a, c);
    };
  }
  function n(a) {
    return function(c) {
      if ("unresolved" === a.promiseStatus) {
        var e = a.resolveReactions;
        a.result = c;
        a.resolveReactions = void 0;
        a.rejectReactions = void 0;
        a.promiseStatus = "has-resolution";
        t(e, c);
      }
    };
  }
  function p() {
    function a(c, e) {
      a.resolve = c;
      a.reject = e;
    }
    return a;
  }
  function e(a, c, e) {
    return function(l) {
      if (l === a) {
        return e(new TypeError("Self resolution"));
      }
      var q = a.promiseConstructor;
      if (g(l) && l.promiseConstructor === q) {
        return l.then(c, e);
      }
      q = b(q);
      return k(l, q) ? q.promise.then(c, e) : c(l);
    };
  }
  function q(a, c, e, l) {
    return function(q) {
      c[a] = q;
      l.countdown--;
      0 === l.countdown && e.resolve(c);
    };
  }
  function l(a) {
    if ("function" !== typeof a) {
      throw new TypeError("resolver is not a function");
    }
    if ("object" !== typeof this) {
      throw new TypeError("Promise to initialize is not an object");
    }
    this.promiseStatus = "unresolved";
    this.resolveReactions = [];
    this.rejectReactions = [];
    this.result = void 0;
    var h = n(this), e = c(this);
    try {
      a(h, e);
    } catch (q) {
      f(this, q);
    }
    this.promiseConstructor = l;
    return this;
  }
  var u = Function("return this")();
  if (u.Promise) {
    "function" !== typeof u.Promise.all && (u.Promise.all = function(a) {
      var c = 0, e = [], l, q, d = new u.Promise(function(a, c) {
        l = a;
        q = c;
      });
      a.forEach(function(a, d) {
        c++;
        a.then(function(a) {
          e[d] = a;
          c--;
          0 === c && l(e);
        }, q);
      });
      0 === c && l(e);
      return d;
    }), "function" !== typeof u.Promise.resolve && (u.Promise.resolve = function(a) {
      return new u.Promise(function(c) {
        c(a);
      });
    });
  } else {
    var w = [];
    l.all = function(a) {
      var c = b(this), e = [], l = {countdown:0}, d = 0;
      a.forEach(function(a) {
        this.cast(a).then(q(d, e, c, l), c.reject);
        d++;
        l.countdown++;
      }, this);
      0 === d && c.resolve(e);
      return c.promise;
    };
    l.cast = function(a) {
      if (g(a)) {
        return a;
      }
      var c = b(this);
      c.resolve(a);
      return c.promise;
    };
    l.reject = function(a) {
      var c = b(this);
      c.reject(a);
      return c.promise;
    };
    l.resolve = function(a) {
      var c = b(this);
      c.resolve(a);
      return c.promise;
    };
    l.prototype = {"catch":function(a) {
      this.then(void 0, a);
    }, then:function(c, h) {
      if (!g(this)) {
        throw new TypeError("this is not a Promises");
      }
      var l = b(this.promiseConstructor), q = "function" === typeof h ? h : d, p = {deferred:l, handler:e(this, "function" === typeof c ? c : a, q)}, q = {deferred:l, handler:q};
      switch(this.promiseStatus) {
        case "unresolved":
          this.resolveReactions.push(p);
          this.rejectReactions.push(q);
          break;
        case "has-resolution":
          s({reaction:p, argument:this.result});
          break;
        case "has-rejection":
          s({reaction:q, argument:this.result});
      }
      return l.promise;
    }};
    u.Promise = l;
  }
})();
"undefined" !== typeof exports && (exports.Shumway = Shumway);
(function() {
  function b(b, g, f) {
    b[g] || Object.defineProperty(b, g, {value:f, writable:!0, configurable:!0, enumerable:!1});
  }
  b(String.prototype, "padRight", function(b, g) {
    var f = this, t = f.replace(/\033\[[0-9]*m/g, "").length;
    if (!b || t >= g) {
      return f;
    }
    for (var t = (g - t) / b.length, s = 0;s < t;s++) {
      f += b;
    }
    return f;
  });
  b(String.prototype, "padLeft", function(b, g) {
    var f = this, t = f.length;
    if (!b || t >= g) {
      return f;
    }
    for (var t = (g - t) / b.length, s = 0;s < t;s++) {
      f = b + f;
    }
    return f;
  });
  b(String.prototype, "trim", function() {
    return this.replace(/^\s+|\s+$/g, "");
  });
  b(String.prototype, "endsWith", function(b) {
    return-1 !== this.indexOf(b, this.length - b.length);
  });
  b(Array.prototype, "replace", function(b, g) {
    if (b === g) {
      return 0;
    }
    for (var f = 0, t = 0;t < this.length;t++) {
      this[t] === b && (this[t] = g, f++);
    }
    return f;
  });
})();
(function(b) {
  (function(k) {
    var g = b.isObject, f = b.Debug.assert, t = function() {
      function a(a, d, p, e) {
        this.shortName = a;
        this.longName = d;
        this.type = p;
        e = e || {};
        this.positional = e.positional;
        this.parseFn = e.parse;
        this.value = e.defaultValue;
      }
      a.prototype.parse = function(a) {
        "boolean" === this.type ? (f("boolean" === typeof a), this.value = a) : "number" === this.type ? (f(!isNaN(a), a + " is not a number"), this.value = parseInt(a, 10)) : this.value = a;
        this.parseFn && this.parseFn(this.value);
      };
      return a;
    }();
    k.Argument = t;
    var s = function() {
      function a() {
        this.args = [];
      }
      a.prototype.addArgument = function(a, d, p, e) {
        a = new t(a, d, p, e);
        this.args.push(a);
        return a;
      };
      a.prototype.addBoundOption = function(a) {
        this.args.push(new t(a.shortName, a.longName, a.type, {parse:function(d) {
          a.value = d;
        }}));
      };
      a.prototype.addBoundOptionSet = function(a) {
        var n = this;
        a.options.forEach(function(a) {
          a instanceof m ? n.addBoundOptionSet(a) : (f(a instanceof d), n.addBoundOption(a));
        });
      };
      a.prototype.getUsage = function() {
        var a = "";
        this.args.forEach(function(d) {
          a = d.positional ? a + d.longName : a + ("[-" + d.shortName + "|--" + d.longName + ("boolean" === d.type ? "" : " " + d.type[0].toUpperCase()) + "]");
          a += " ";
        });
        return a;
      };
      a.prototype.parse = function(a) {
        var d = {}, p = [];
        this.args.forEach(function(a) {
          a.positional ? p.push(a) : (d["-" + a.shortName] = a, d["--" + a.longName] = a);
        });
        for (var e = [];a.length;) {
          var q = a.shift(), l = null, b = q;
          if ("--" == q) {
            e = e.concat(a);
            break;
          } else {
            if ("-" == q.slice(0, 1) || "--" == q.slice(0, 2)) {
              l = d[q];
              if (!l) {
                continue;
              }
              "boolean" !== l.type ? (b = a.shift(), f("-" !== b && "--" !== b, "Argument " + q + " must have a value.")) : b = !0;
            } else {
              p.length ? l = p.shift() : e.push(b);
            }
          }
          l && l.parse(b);
        }
        f(0 === p.length, "Missing positional arguments.");
        return e;
      };
      return a;
    }();
    k.ArgumentParser = s;
    var m = function() {
      function a(a, d) {
        "undefined" === typeof d && (d = null);
        this.open = !1;
        this.name = a;
        this.settings = d || {};
        this.options = [];
      }
      a.prototype.register = function(c) {
        if (c instanceof a) {
          for (var d = 0;d < this.options.length;d++) {
            var p = this.options[d];
            if (p instanceof a && p.name === c.name) {
              return p;
            }
          }
        }
        this.options.push(c);
        if (this.settings) {
          if (c instanceof a) {
            d = this.settings[c.name], g(d) && (c.settings = d.settings, c.open = d.open);
          } else {
            if ("undefined" !== typeof this.settings[c.longName]) {
              switch(c.type) {
                case "boolean":
                  c.value = !!this.settings[c.longName];
                  break;
                case "number":
                  c.value = +this.settings[c.longName];
                  break;
                default:
                  c.value = this.settings[c.longName];
              }
            }
          }
        }
        return c;
      };
      a.prototype.trace = function(a) {
        a.enter(this.name + " {");
        this.options.forEach(function(d) {
          d.trace(a);
        });
        a.leave("}");
      };
      a.prototype.getSettings = function() {
        var c = {};
        this.options.forEach(function(d) {
          d instanceof a ? c[d.name] = {settings:d.getSettings(), open:d.open} : c[d.longName] = d.value;
        });
        return c;
      };
      a.prototype.setSettings = function(c) {
        c && this.options.forEach(function(d) {
          d instanceof a ? d.name in c && d.setSettings(c[d.name].settings) : d.longName in c && (d.value = c[d.longName]);
        });
      };
      return a;
    }();
    k.OptionSet = m;
    var d = function() {
      function a(a, d, p, e, q, l) {
        "undefined" === typeof l && (l = null);
        this.longName = d;
        this.shortName = a;
        this.type = p;
        this.value = this.defaultValue = e;
        this.description = q;
        this.config = l;
      }
      a.prototype.parse = function(a) {
        this.value = a;
      };
      a.prototype.trace = function(a) {
        a.writeLn(("-" + this.shortName + "|--" + this.longName).padRight(" ", 30) + " = " + this.type + " " + this.value + " [" + this.defaultValue + "] (" + this.description + ")");
      };
      return a;
    }();
    k.Option = d;
  })(b.Options || (b.Options = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    function g() {
      try {
        return "undefined" !== typeof window && "localStorage" in window && null !== window.localStorage;
      } catch (b) {
        return!1;
      }
    }
    function f(b) {
      "undefined" === typeof b && (b = k.ROOT);
      var f = {};
      if (g() && (b = window.localStorage[b])) {
        try {
          f = JSON.parse(b);
        } catch (m) {
        }
      }
      return f;
    }
    k.ROOT = "Shumway Options";
    k.shumwayOptions = new b.Options.OptionSet(k.ROOT, f());
    k.isStorageSupported = g;
    k.load = f;
    k.save = function(b, f) {
      "undefined" === typeof b && (b = null);
      "undefined" === typeof f && (f = k.ROOT);
      if (g()) {
        try {
          window.localStorage[f] = JSON.stringify(b ? b : k.shumwayOptions.getSettings());
        } catch (m) {
        }
      }
    };
    k.setSettings = function(b) {
      k.shumwayOptions.setSettings(b);
    };
    k.getSettings = function(b) {
      return k.shumwayOptions.getSettings();
    };
  })(b.Settings || (b.Settings = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = function() {
      function f(f, g) {
        this._parent = f;
        this._timers = b.ObjectUtilities.createMap();
        this._name = g;
        this._count = this._total = this._last = this._begin = 0;
      }
      f.time = function(b, g) {
        f.start(b);
        g();
        f.stop();
      };
      f.start = function(b) {
        f._top = f._top._timers[b] || (f._top._timers[b] = new f(f._top, b));
        f._top.start();
        b = f._flat._timers[b] || (f._flat._timers[b] = new f(f._flat, b));
        b.start();
        f._flatStack.push(b);
      };
      f.stop = function() {
        f._top.stop();
        f._top = f._top._parent;
        f._flatStack.pop().stop();
      };
      f.stopStart = function(b) {
        f.stop();
        f.start(b);
      };
      f.prototype.start = function() {
        this._begin = b.getTicks();
      };
      f.prototype.stop = function() {
        this._last = b.getTicks() - this._begin;
        this._total += this._last;
        this._count += 1;
      };
      f.prototype.toJSON = function() {
        return{name:this._name, total:this._total, timers:this._timers};
      };
      f.prototype.trace = function(b) {
        b.enter(this._name + ": " + this._total.toFixed(2) + " ms, count: " + this._count + ", average: " + (this._total / this._count).toFixed(2) + " ms");
        for (var f in this._timers) {
          this._timers[f].trace(b);
        }
        b.outdent();
      };
      f.trace = function(b) {
        f._base.trace(b);
        f._flat.trace(b);
      };
      f._base = new f(null, "Total");
      f._top = f._base;
      f._flat = new f(null, "Flat");
      f._flatStack = [];
      return f;
    }();
    k.Timer = g;
    g = function() {
      function f(b) {
        this._enabled = b;
        this.clear();
      }
      Object.defineProperty(f.prototype, "counts", {get:function() {
        return this._counts;
      }, enumerable:!0, configurable:!0});
      f.prototype.setEnabled = function(b) {
        this._enabled = b;
      };
      f.prototype.clear = function() {
        this._counts = b.ObjectUtilities.createMap();
        this._times = b.ObjectUtilities.createMap();
      };
      f.prototype.toJSON = function() {
        return{counts:this._counts, times:this._times};
      };
      f.prototype.count = function(b, f, m) {
        "undefined" === typeof f && (f = 1);
        "undefined" === typeof m && (m = 0);
        if (this._enabled) {
          return void 0 === this._counts[b] && (this._counts[b] = 0, this._times[b] = 0), this._counts[b] += f, this._times[b] += m, this._counts[b];
        }
      };
      f.prototype.trace = function(b) {
        for (var f in this._counts) {
          b.writeLn(f + ": " + this._counts[f]);
        }
      };
      f.prototype._pairToString = function(b, f) {
        var m = f[0], d = f[1], a = b[m], m = m + ": " + d;
        a && (m += ", " + a.toFixed(4), 1 < d && (m += " (" + (a / d).toFixed(4) + ")"));
        return m;
      };
      f.prototype.toStringSorted = function() {
        var b = this, f = this._times, m = [], d;
        for (d in this._counts) {
          m.push([d, this._counts[d]]);
        }
        m.sort(function(a, c) {
          return c[1] - a[1];
        });
        return m.map(function(a) {
          return b._pairToString(f, a);
        }).join(", ");
      };
      f.prototype.traceSorted = function(b) {
        var f = !0;
        "undefined" === typeof f && (f = !1);
        var m = this, d = this._times, a = [], c;
        for (c in this._counts) {
          a.push([c, this._counts[c]]);
        }
        a.sort(function(a, c) {
          return c[1] - a[1];
        });
        f ? b.writeLn(a.map(function(a) {
          return m._pairToString(d, a);
        }).join(", ")) : a.forEach(function(a) {
          b.writeLn(m._pairToString(d, a));
        });
      };
      f.instance = new f(!0);
      return f;
    }();
    k.Counter = g;
    g = function() {
      function b(f) {
        this._samples = new Float64Array(f);
        this._index = this._count = 0;
      }
      b.prototype.push = function(b) {
        this._count < this._samples.length && this._count++;
        this._index++;
        this._samples[this._index % this._samples.length] = b;
      };
      b.prototype.average = function() {
        for (var b = 0, f = 0;f < this._count;f++) {
          b += this._samples[f];
        }
        return b / this._count;
      };
      return b;
    }();
    k.Average = g;
  })(b.Metrics || (b.Metrics = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    function g(a) {
      for (var c = Math.max.apply(null, a), e = a.length, q = 1 << c, h = new Uint32Array(q), d = c << 16 | 65535, b = 0;b < q;b++) {
        h[b] = d;
      }
      for (var d = 0, b = 1, p = 2;b <= c;d <<= 1, ++b, p <<= 1) {
        for (var n = 0;n < e;++n) {
          if (a[n] === b) {
            for (var m = 0, f = 0;f < b;++f) {
              m = 2 * m + (d >> f & 1);
            }
            for (f = m;f < q;f += p) {
              h[f] = b << 16 | n;
            }
            ++d;
          }
        }
      }
      return{codes:h, maxBits:c};
    }
    var f;
    (function(a) {
      a[a.INIT = 0] = "INIT";
      a[a.BLOCK_0 = 1] = "BLOCK_0";
      a[a.BLOCK_1 = 2] = "BLOCK_1";
      a[a.BLOCK_2_PRE = 3] = "BLOCK_2_PRE";
      a[a.BLOCK_2 = 4] = "BLOCK_2";
      a[a.DONE = 5] = "DONE";
      a[a.ERROR = 6] = "ERROR";
      a[a.VERIFY_HEADER = 7] = "VERIFY_HEADER";
    })(f || (f = {}));
    f = function() {
      function e(l) {
        this._buffer = new Uint8Array(1024);
        this._bitLength = this._bitBuffer = this._bufferPosition = this._bufferSize = 0;
        this._window = new Uint8Array(65794);
        this._windowPosition = 0;
        this._state = l ? 7 : 0;
        this._isFinalBlock = !1;
        this._distanceTable = this._literalTable = null;
        this._block0Read = 0;
        this._block2State = null;
        this._copyState = {state:0, len:0, lenBits:0, dist:0, distBits:0};
        this._error = void 0;
        if (!p) {
          t = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
          s = new Uint16Array(30);
          m = new Uint8Array(30);
          for (var q = l = 0, r = 1;30 > l;++l) {
            s[l] = r, r += 1 << (m[l] = ~~((q += 2 < l ? 1 : 0) / 2));
          }
          var h = new Uint8Array(288);
          for (l = 0;32 > l;++l) {
            h[l] = 5;
          }
          d = g(h.subarray(0, 32));
          a = new Uint16Array(29);
          c = new Uint8Array(29);
          q = l = 0;
          for (r = 3;29 > l;++l) {
            a[l] = r - (28 == l ? 1 : 0), r += 1 << (c[l] = ~~((q += 4 < l ? 1 : 0) / 4 % 6));
          }
          for (l = 0;288 > l;++l) {
            h[l] = 144 > l || 279 < l ? 8 : 256 > l ? 9 : 7;
          }
          n = g(h);
          p = !0;
        }
      }
      Object.defineProperty(e.prototype, "error", {get:function() {
        return this._error;
      }, enumerable:!0, configurable:!0});
      e.prototype.push = function(a) {
        if (this._buffer.length < this._bufferSize + a.length) {
          var c = new Uint8Array(this._bufferSize + a.length);
          c.set(this._buffer);
          this._buffer = c;
        }
        this._buffer.set(a, this._bufferSize);
        this._bufferSize += a.length;
        this._bufferPosition = 0;
        a = !1;
        do {
          c = this._windowPosition;
          if (0 === this._state && (a = this._decodeInitState())) {
            break;
          }
          switch(this._state) {
            case 1:
              a = this._decodeBlock0();
              break;
            case 3:
              if (a = this._decodeBlock2Pre()) {
                break;
              }
            ;
            case 2:
            ;
            case 4:
              a = this._decodeBlock();
              break;
            case 6:
            ;
            case 5:
              this._bufferPosition = this._bufferSize;
              break;
            case 7:
              a = this._verifyZlibHeader();
          }
          if (0 < this._windowPosition - c) {
            this.onData(this._window.subarray(c, this._windowPosition));
          }
          65536 <= this._windowPosition && (this._window.set(this._window.subarray(this._windowPosition - 32768, this._windowPosition)), this._windowPosition = 32768);
        } while (!a && this._bufferPosition < this._bufferSize);
        this._bufferPosition < this._bufferSize ? (this._buffer.set(this._buffer.subarray(this._bufferPosition, this._bufferSize)), this._bufferSize -= this._bufferPosition) : this._bufferSize = 0;
      };
      e.prototype._verifyZlibHeader = function() {
        var a = this._bufferPosition;
        if (a + 2 > this._bufferSize) {
          return!0;
        }
        var c = this._buffer, c = c[a] << 8 | c[a + 1];
        this._bufferPosition = a + 2;
        a = null;
        2048 !== (c & 3840) ? a = "inflate: unknown compression method" : 0 !== c % 31 ? a = "inflate: bad FCHECK" : 0 !== (c & 32) && (a = "inflate: FDICT bit set");
        a ? (this._error = a, this._state = 6) : this._state = 0;
      };
      e.prototype._decodeInitState = function() {
        if (this._isFinalBlock) {
          return this._state = 5, !1;
        }
        var a = this._buffer, c = this._bufferSize, e = this._bitBuffer, h = this._bitLength, l = this._bufferPosition;
        if (3 > (c - l << 3) + h) {
          return!0;
        }
        3 > h && (e |= a[l++] << h, h += 8);
        var q = e & 7, e = e >> 3, h = h - 3;
        switch(q >> 1) {
          case 0:
            h = e = 0;
            if (4 > c - l) {
              return!0;
            }
            var b = a[l] | a[l + 1] << 8, a = a[l + 2] | a[l + 3] << 8, l = l + 4;
            if (65535 !== (b ^ a)) {
              this._error = "inflate: invalid block 0 length";
              a = 6;
              break;
            }
            0 === b ? a = 0 : (this._block0Read = b, a = 1);
            break;
          case 1:
            a = 2;
            this._literalTable = n;
            this._distanceTable = d;
            break;
          case 2:
            if (26 > (c - l << 3) + h) {
              return!0;
            }
            for (;14 > h;) {
              e |= a[l++] << h, h += 8;
            }
            b = (e >> 10 & 15) + 4;
            if ((c - l << 3) + h < 14 + 3 * b) {
              return!0;
            }
            for (var c = {numLiteralCodes:(e & 31) + 257, numDistanceCodes:(e >> 5 & 31) + 1, codeLengthTable:void 0, bitLengths:void 0, codesRead:0, dupBits:0}, e = e >> 14, h = h - 14, p = new Uint8Array(19), m = 0;m < b;++m) {
              3 > h && (e |= a[l++] << h, h += 8), p[t[m]] = e & 7, e >>= 3, h -= 3;
            }
            for (;19 > m;m++) {
              p[t[m]] = 0;
            }
            c.bitLengths = new Uint8Array(c.numLiteralCodes + c.numDistanceCodes);
            c.codeLengthTable = g(p);
            this._block2State = c;
            a = 3;
            break;
          default:
            return this._error = "inflate: unsupported block type", !1;
        }
        this._isFinalBlock = !!(q & 1);
        this._state = a;
        this._bufferPosition = l;
        this._bitBuffer = e;
        this._bitLength = h;
        return!1;
      };
      e.prototype._decodeBlock0 = function() {
        var a = this._bufferPosition, c = this._windowPosition, e = this._block0Read, h = 65794 - c, l = this._bufferSize - a, q = l < e, d = Math.min(h, l, e);
        this._window.set(this._buffer.subarray(a, a + d), c);
        this._windowPosition = c + d;
        this._bufferPosition = a + d;
        this._block0Read = e - d;
        return e === d ? (this._state = 0, !1) : q && h < l;
      };
      e.prototype._readBits = function(a) {
        var c = this._bitBuffer, e = this._bitLength;
        if (a > e) {
          var h = this._bufferPosition, l = this._bufferSize;
          do {
            if (h >= l) {
              return this._bufferPosition = h, this._bitBuffer = c, this._bitLength = e, -1;
            }
            c |= this._buffer[h++] << e;
            e += 8;
          } while (a > e);
          this._bufferPosition = h;
        }
        this._bitBuffer = c >> a;
        this._bitLength = e - a;
        return c & (1 << a) - 1;
      };
      e.prototype._readCode = function(a) {
        var c = this._bitBuffer, e = this._bitLength, h = a.maxBits;
        if (h > e) {
          var l = this._bufferPosition, q = this._bufferSize;
          do {
            if (l >= q) {
              return this._bufferPosition = l, this._bitBuffer = c, this._bitLength = e, -1;
            }
            c |= this._buffer[l++] << e;
            e += 8;
          } while (h > e);
          this._bufferPosition = l;
        }
        a = a.codes[c & (1 << h) - 1];
        h = a >> 16;
        if (a & 32768) {
          return this._error = "inflate: invalid encoding", this._state = 6, -1;
        }
        this._bitBuffer = c >> h;
        this._bitLength = e - h;
        return a & 65535;
      };
      e.prototype._decodeBlock2Pre = function() {
        var a = this._block2State, c = a.numLiteralCodes + a.numDistanceCodes, e = a.bitLengths, h = a.codesRead, l = 0 < h ? e[h - 1] : 0, q = a.codeLengthTable, d;
        if (0 < a.dupBits) {
          d = this._readBits(a.dupBits);
          if (0 > d) {
            return!0;
          }
          for (;d--;) {
            e[h++] = l;
          }
          a.dupBits = 0;
        }
        for (;h < c;) {
          var b = this._readCode(q);
          if (0 > b) {
            return a.codesRead = h, !0;
          }
          if (16 > b) {
            e[h++] = l = b;
          } else {
            var p;
            switch(b) {
              case 16:
                p = 2;
                d = 3;
                b = l;
                break;
              case 17:
                d = p = 3;
                b = 0;
                break;
              case 18:
                p = 7, d = 11, b = 0;
            }
            for (;d--;) {
              e[h++] = b;
            }
            d = this._readBits(p);
            if (0 > d) {
              return a.codesRead = h, a.dupBits = p, !0;
            }
            for (;d--;) {
              e[h++] = b;
            }
            l = b;
          }
        }
        this._literalTable = g(e.subarray(0, a.numLiteralCodes));
        this._distanceTable = g(e.subarray(a.numLiteralCodes));
        this._state = 4;
        this._block2State = null;
        return!1;
      };
      e.prototype._decodeBlock = function() {
        var e = this._literalTable, l = this._distanceTable, q = this._window, h = this._windowPosition, d = this._copyState, b, p, n, f;
        if (0 !== d.state) {
          switch(d.state) {
            case 1:
              if (0 > (b = this._readBits(d.lenBits))) {
                return!0;
              }
              d.len += b;
              d.state = 2;
            case 2:
              if (0 > (b = this._readCode(l))) {
                return!0;
              }
              d.distBits = m[b];
              d.dist = s[b];
              d.state = 3;
            case 3:
              b = 0;
              if (0 < d.distBits && 0 > (b = this._readBits(d.distBits))) {
                return!0;
              }
              f = d.dist + b;
              p = d.len;
              for (b = h - f;p--;) {
                q[h++] = q[b++];
              }
              d.state = 0;
              if (65536 <= h) {
                return this._windowPosition = h, !1;
              }
              break;
          }
        }
        do {
          b = this._readCode(e);
          if (0 > b) {
            return this._windowPosition = h, !0;
          }
          if (256 > b) {
            q[h++] = b;
          } else {
            if (256 < b) {
              this._windowPosition = h;
              b -= 257;
              n = c[b];
              p = a[b];
              b = 0 === n ? 0 : this._readBits(n);
              if (0 > b) {
                return d.state = 1, d.len = p, d.lenBits = n, !0;
              }
              p += b;
              b = this._readCode(l);
              if (0 > b) {
                return d.state = 2, d.len = p, !0;
              }
              n = m[b];
              f = s[b];
              b = 0 === n ? 0 : this._readBits(n);
              if (0 > b) {
                return d.state = 3, d.len = p, d.dist = f, d.distBits = n, !0;
              }
              f += b;
              for (b = h - f;p--;) {
                q[h++] = q[b++];
              }
            } else {
              this._state = 0;
              break;
            }
          }
        } while (65536 > h);
        this._windowPosition = h;
        return!1;
      };
      e.inflate = function(a, c, q) {
        var h = new Uint8Array(c), d = 0;
        c = new e(q);
        c.onData = function(a) {
          h.set(a, d);
          d += a.length;
        };
        c.push(a);
        return h;
      };
      return e;
    }();
    b.Inflate = f;
    var t, s, m, d, a, c, n, p = !1, e;
    (function(a) {
      a[a.WRITE = 0] = "WRITE";
      a[a.DONE = 1] = "DONE";
      a[a.ZLIB_HEADER = 2] = "ZLIB_HEADER";
    })(e || (e = {}));
    var q = function() {
      function a() {
        this.a = 1;
        this.b = 0;
      }
      a.prototype.update = function(a, c, e) {
        for (var h = this.a, l = this.b;c < e;++c) {
          h = (h + (a[c] & 255)) % 65521, l = (l + h) % 65521;
        }
        this.a = h;
        this.b = l;
      };
      a.prototype.getChecksum = function() {
        return this.b << 16 | this.a;
      };
      return a;
    }();
    b.Adler32 = q;
    e = function() {
      function a(c) {
        this._state = (this._writeZlibHeader = c) ? 2 : 0;
        this._adler32 = c ? new q : null;
      }
      a.prototype.push = function(a) {
        2 === this._state && (this.onData(new Uint8Array([120, 156])), this._state = 0);
        for (var c = a.length, e = new Uint8Array(c + 5 * Math.ceil(c / 65535)), h = 0, l = 0;65535 < c;) {
          e.set(new Uint8Array([0, 255, 255, 0, 0]), h), h += 5, e.set(a.subarray(l, l + 65535), h), l += 65535, h += 65535, c -= 65535;
        }
        e.set(new Uint8Array([0, c & 255, c >> 8 & 255, ~c & 255, ~c >> 8 & 255]), h);
        e.set(a.subarray(l, c), h + 5);
        this.onData(e);
        this._adler32 && this._adler32.update(a, 0, c);
      };
      a.prototype.finish = function() {
        this._state = 1;
        this.onData(new Uint8Array([1, 0, 0, 255, 255]));
        if (this._adler32) {
          var a = this._adler32.getChecksum();
          this.onData(new Uint8Array([a & 255, a >> 8 & 255, a >> 16 & 255, a >>> 24 & 255]));
        }
      };
      return a;
    }();
    b.Deflate = e;
  })(b.ArrayUtilities || (b.ArrayUtilities = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    function g() {
      t("throwEOFError");
    }
    function f(a) {
      return "string" === typeof a ? a : void 0 == a ? null : a + "";
    }
    var t = b.Debug.notImplemented, s = b.StringUtilities.utf8decode, m = b.StringUtilities.utf8encode, d = b.NumberUtilities.clamp, a = function() {
      return function(a, c, l) {
        this.buffer = a;
        this.length = c;
        this.littleEndian = l;
      };
    }();
    k.PlainObjectDataBuffer = a;
    for (var c = new Uint32Array(33), n = 1, p = 0;32 >= n;n++) {
      c[n] = p = p << 1 | 1;
    }
    n = function() {
      function e(a) {
        "undefined" === typeof a && (a = e.INITIAL_SIZE);
        this._buffer || (this._buffer = new ArrayBuffer(a), this._position = this._length = 0, this._updateViews(), this._littleEndian = e._nativeLittleEndian, this._bitLength = this._bitBuffer = 0);
      }
      e.FromArrayBuffer = function(a, c) {
        "undefined" === typeof c && (c = -1);
        var d = Object.create(e.prototype);
        d._buffer = a;
        d._length = -1 === c ? a.byteLength : c;
        d._position = 0;
        d._updateViews();
        d._littleEndian = e._nativeLittleEndian;
        d._bitBuffer = 0;
        d._bitLength = 0;
        return d;
      };
      e.FromPlainObject = function(a) {
        var c = e.FromArrayBuffer(a.buffer, a.length);
        c._littleEndian = a.littleEndian;
        return c;
      };
      e.prototype.toPlainObject = function() {
        return new a(this._buffer, this._length, this._littleEndian);
      };
      e.prototype._updateViews = function() {
        this._u8 = new Uint8Array(this._buffer);
        0 === (this._buffer.byteLength & 3) && (this._i32 = new Int32Array(this._buffer), this._f32 = new Float32Array(this._buffer));
      };
      e.prototype.getBytes = function() {
        return new Uint8Array(this._buffer, 0, this._length);
      };
      e.prototype._ensureCapacity = function(a) {
        var c = this._buffer;
        if (c.byteLength < a) {
          for (var d = Math.max(c.byteLength, 1);d < a;) {
            d *= 2;
          }
          a = e._arrayBufferPool.acquire(d);
          d = this._u8;
          this._buffer = a;
          this._updateViews();
          this._u8.set(d);
          e._arrayBufferPool.release(c);
        }
      };
      e.prototype.clear = function() {
        this._position = this._length = 0;
      };
      e.prototype.readBoolean = function() {
        return 0 !== this.readUnsignedByte();
      };
      e.prototype.readByte = function() {
        return this.readUnsignedByte() << 24 >> 24;
      };
      e.prototype.readUnsignedByte = function() {
        this._position + 1 > this._length && g();
        return this._u8[this._position++];
      };
      e.prototype.readBytes = function(a, c, e) {
        "undefined" === typeof c && (c = 0);
        "undefined" === typeof e && (e = 0);
        var d = this._position;
        c || (c = 0);
        e || (e = this._length - d);
        d + e > this._length && g();
        a.length < c + e && (a._ensureCapacity(c + e), a.length = c + e);
        a._u8.set(new Uint8Array(this._buffer, d, e), c);
        this._position += e;
      };
      e.prototype.readShort = function() {
        return this.readUnsignedShort() << 16 >> 16;
      };
      e.prototype.readUnsignedShort = function() {
        var a = this._u8, c = this._position;
        c + 2 > this._length && g();
        var e = a[c + 0], a = a[c + 1];
        this._position = c + 2;
        return this._littleEndian ? a << 8 | e : e << 8 | a;
      };
      e.prototype.readInt = function() {
        var a = this._u8, c = this._position;
        c + 4 > this._length && g();
        var e = a[c + 0], d = a[c + 1], b = a[c + 2], a = a[c + 3];
        this._position = c + 4;
        return this._littleEndian ? a << 24 | b << 16 | d << 8 | e : e << 24 | d << 16 | b << 8 | a;
      };
      e.prototype.readUnsignedInt = function() {
        return this.readInt() >>> 0;
      };
      e.prototype.readFloat = function() {
        var a = this._position;
        a + 4 > this._length && g();
        this._position = a + 4;
        if (this._littleEndian && 0 === (a & 3) && this._f32) {
          return this._f32[a >> 2];
        }
        var c = this._u8, e = b.IntegerUtilities.u8;
        this._littleEndian ? (e[0] = c[a + 0], e[1] = c[a + 1], e[2] = c[a + 2], e[3] = c[a + 3]) : (e[3] = c[a + 0], e[2] = c[a + 1], e[1] = c[a + 2], e[0] = c[a + 3]);
        return b.IntegerUtilities.f32[0];
      };
      e.prototype.readDouble = function() {
        var a = this._u8, c = this._position;
        c + 8 > this._length && g();
        var e = b.IntegerUtilities.u8;
        this._littleEndian ? (e[0] = a[c + 0], e[1] = a[c + 1], e[2] = a[c + 2], e[3] = a[c + 3], e[4] = a[c + 4], e[5] = a[c + 5], e[6] = a[c + 6], e[7] = a[c + 7]) : (e[0] = a[c + 7], e[1] = a[c + 6], e[2] = a[c + 5], e[3] = a[c + 4], e[4] = a[c + 3], e[5] = a[c + 2], e[6] = a[c + 1], e[7] = a[c + 0]);
        this._position = c + 8;
        return b.IntegerUtilities.f64[0];
      };
      e.prototype.writeBoolean = function(a) {
        this.writeByte(a ? 1 : 0);
      };
      e.prototype.writeByte = function(a) {
        var c = this._position + 1;
        this._ensureCapacity(c);
        this._u8[this._position++] = a;
        c > this._length && (this._length = c);
      };
      e.prototype.writeUnsignedByte = function(a) {
        var c = this._position + 1;
        this._ensureCapacity(c);
        this._u8[this._position++] = a;
        c > this._length && (this._length = c);
      };
      e.prototype.writeRawBytes = function(a) {
        var c = this._position + a.length;
        this._ensureCapacity(c);
        this._u8.set(a, this._position);
        this._position = c;
        c > this._length && (this._length = c);
      };
      e.prototype.writeBytes = function(a, c, e) {
        "undefined" === typeof c && (c = 0);
        "undefined" === typeof e && (e = 0);
        2 > arguments.length && (c = 0);
        3 > arguments.length && (e = 0);
        c !== d(c, 0, a.length) && t("throwRangeError");
        var b = c + e;
        b !== d(b, 0, a.length) && t("throwRangeError");
        0 === e && (e = a.length - c);
        this.writeRawBytes(new Int8Array(a._buffer, c, e));
      };
      e.prototype.writeShort = function(a) {
        this.writeUnsignedShort(a);
      };
      e.prototype.writeUnsignedShort = function(a) {
        var c = this._position;
        this._ensureCapacity(c + 2);
        var e = this._u8;
        this._littleEndian ? (e[c + 0] = a, e[c + 1] = a >> 8) : (e[c + 0] = a >> 8, e[c + 1] = a);
        this._position = c += 2;
        c > this._length && (this._length = c);
      };
      e.prototype.writeInt = function(a) {
        this.writeUnsignedInt(a);
      };
      e.prototype.write4Ints = function(a, c, e, d) {
        this.write4UnsignedInts(a, c, e, d);
      };
      e.prototype.writeUnsignedInt = function(a) {
        var c = this._position;
        this._ensureCapacity(c + 4);
        if (this._littleEndian === e._nativeLittleEndian && 0 === (c & 3) && this._i32) {
          this._i32[c >> 2] = a;
        } else {
          var d = this._u8;
          this._littleEndian ? (d[c + 0] = a, d[c + 1] = a >> 8, d[c + 2] = a >> 16, d[c + 3] = a >> 24) : (d[c + 0] = a >> 24, d[c + 1] = a >> 16, d[c + 2] = a >> 8, d[c + 3] = a);
        }
        this._position = c += 4;
        c > this._length && (this._length = c);
      };
      e.prototype.write4UnsignedInts = function(a, c, d, b) {
        var p = this._position;
        this._ensureCapacity(p + 16);
        this._littleEndian === e._nativeLittleEndian && 0 === (p & 3) && this._i32 ? (this._i32[(p >> 2) + 0] = a, this._i32[(p >> 2) + 1] = c, this._i32[(p >> 2) + 2] = d, this._i32[(p >> 2) + 3] = b, this._position = p += 16, p > this._length && (this._length = p)) : (this.writeUnsignedInt(a), this.writeUnsignedInt(c), this.writeUnsignedInt(d), this.writeUnsignedInt(b));
      };
      e.prototype.writeFloat = function(a) {
        var c = this._position;
        this._ensureCapacity(c + 4);
        if (this._littleEndian === e._nativeLittleEndian && 0 === (c & 3) && this._f32) {
          this._f32[c >> 2] = a;
        } else {
          var d = this._u8;
          b.IntegerUtilities.f32[0] = a;
          a = b.IntegerUtilities.u8;
          this._littleEndian ? (d[c + 0] = a[0], d[c + 1] = a[1], d[c + 2] = a[2], d[c + 3] = a[3]) : (d[c + 0] = a[3], d[c + 1] = a[2], d[c + 2] = a[1], d[c + 3] = a[0]);
        }
        this._position = c += 4;
        c > this._length && (this._length = c);
      };
      e.prototype.write6Floats = function(a, c, d, b, p, h) {
        var n = this._position;
        this._ensureCapacity(n + 24);
        this._littleEndian === e._nativeLittleEndian && 0 === (n & 3) && this._f32 ? (this._f32[(n >> 2) + 0] = a, this._f32[(n >> 2) + 1] = c, this._f32[(n >> 2) + 2] = d, this._f32[(n >> 2) + 3] = b, this._f32[(n >> 2) + 4] = p, this._f32[(n >> 2) + 5] = h, this._position = n += 24, n > this._length && (this._length = n)) : (this.writeFloat(a), this.writeFloat(c), this.writeFloat(d), this.writeFloat(b), this.writeFloat(p), this.writeFloat(h));
      };
      e.prototype.writeDouble = function(a) {
        var c = this._position;
        this._ensureCapacity(c + 8);
        var e = this._u8;
        b.IntegerUtilities.f64[0] = a;
        a = b.IntegerUtilities.u8;
        this._littleEndian ? (e[c + 0] = a[0], e[c + 1] = a[1], e[c + 2] = a[2], e[c + 3] = a[3], e[c + 4] = a[4], e[c + 5] = a[5], e[c + 6] = a[6], e[c + 7] = a[7]) : (e[c + 0] = a[7], e[c + 1] = a[6], e[c + 2] = a[5], e[c + 3] = a[4], e[c + 4] = a[3], e[c + 5] = a[2], e[c + 6] = a[1], e[c + 7] = a[0]);
        this._position = c += 8;
        c > this._length && (this._length = c);
      };
      e.prototype.readRawBytes = function() {
        return new Int8Array(this._buffer, 0, this._length);
      };
      e.prototype.writeUTF = function(a) {
        a = f(a);
        a = s(a);
        this.writeShort(a.length);
        this.writeRawBytes(a);
      };
      e.prototype.writeUTFBytes = function(a) {
        a = f(a);
        a = s(a);
        this.writeRawBytes(a);
      };
      e.prototype.readUTF = function() {
        return this.readUTFBytes(this.readShort());
      };
      e.prototype.readUTFBytes = function(a) {
        a >>>= 0;
        var c = this._position;
        c + a > this._length && g();
        this._position += a;
        return m(new Int8Array(this._buffer, c, a));
      };
      Object.defineProperty(e.prototype, "length", {get:function() {
        return this._length;
      }, set:function(a) {
        a >>>= 0;
        a > this._buffer.byteLength && this._ensureCapacity(a);
        this._length = a;
        this._position = d(this._position, 0, this._length);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(e.prototype, "bytesAvailable", {get:function() {
        return this._length - this._position;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(e.prototype, "position", {get:function() {
        return this._position;
      }, set:function(a) {
        this._position = a >>> 0;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(e.prototype, "buffer", {get:function() {
        return this._buffer;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(e.prototype, "bytes", {get:function() {
        return this._u8;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(e.prototype, "ints", {get:function() {
        return this._i32;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(e.prototype, "objectEncoding", {get:function() {
        return this._objectEncoding;
      }, set:function(a) {
        this._objectEncoding = a >>> 0;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(e.prototype, "endian", {get:function() {
        return this._littleEndian ? "littleEndian" : "bigEndian";
      }, set:function(a) {
        a = f(a);
        this._littleEndian = "auto" === a ? e._nativeLittleEndian : "littleEndian" === a;
      }, enumerable:!0, configurable:!0});
      e.prototype.toString = function() {
        return m(new Int8Array(this._buffer, 0, this._length));
      };
      e.prototype.toBlob = function() {
        return new Blob([new Int8Array(this._buffer, this._position, this._length)]);
      };
      e.prototype.writeMultiByte = function(a, c) {
        t("packageInternal flash.utils.ObjectOutput::writeMultiByte");
      };
      e.prototype.readMultiByte = function(a, c) {
        t("packageInternal flash.utils.ObjectInput::readMultiByte");
      };
      e.prototype.getValue = function(a) {
        a |= 0;
        return a >= this._length ? void 0 : this._u8[a];
      };
      e.prototype.setValue = function(a, c) {
        a |= 0;
        var e = a + 1;
        this._ensureCapacity(e);
        this._u8[a] = c;
        e > this._length && (this._length = e);
      };
      e.prototype.readFixed = function() {
        return this.readInt() / 65536;
      };
      e.prototype.readFixed8 = function() {
        return this.readShort() / 256;
      };
      e.prototype.readFloat16 = function() {
        var a = this.readUnsignedShort(), c = a >> 15 ? -1 : 1, e = (a & 31744) >> 10, a = a & 1023;
        return e ? 31 === e ? a ? NaN : Infinity * c : c * Math.pow(2, e - 15) * (1 + a / 1024) : a / 1024 * Math.pow(2, -14) * c;
      };
      e.prototype.readEncodedU32 = function() {
        var a = this.readUnsignedByte();
        if (!(a & 128)) {
          return a;
        }
        a = a & 127 | this.readUnsignedByte() << 7;
        if (!(a & 16384)) {
          return a;
        }
        a = a & 16383 | this.readUnsignedByte() << 14;
        if (!(a & 2097152)) {
          return a;
        }
        a = a & 2097151 | this.readUnsignedByte() << 21;
        return a & 268435456 ? a & 268435455 | this.readUnsignedByte() << 28 : a;
      };
      e.prototype.readBits = function(a) {
        return this.readUnsignedBits(a) << 32 - a >> 32 - a;
      };
      e.prototype.readUnsignedBits = function(a) {
        for (var e = this._bitBuffer, d = this._bitLength;a > d;) {
          e = e << 8 | this.readUnsignedByte(), d += 8;
        }
        d -= a;
        a = e >>> d & c[a];
        this._bitBuffer = e;
        this._bitLength = d;
        return a;
      };
      e.prototype.readFixedBits = function(a) {
        return this.readBits(a) / 65536;
      };
      e.prototype.readString = function(a) {
        var c = this._position;
        if (a) {
          c + a > this._length && g(), this._position += a;
        } else {
          a = 0;
          for (var e = c;e < this._length && this._u8[e];e++) {
            a++;
          }
          this._position += a + 1;
        }
        return m(new Int8Array(this._buffer, c, a));
      };
      e.prototype.align = function() {
        this._bitLength = this._bitBuffer = 0;
      };
      e.prototype._compress = function(a) {
        a = f(a);
        switch(a) {
          case "zlib":
            a = new k.Deflate(!0);
            break;
          case "deflate":
            a = new k.Deflate(!1);
            break;
          default:
            return;
        }
        var c = new e;
        a.onData = c.writeRawBytes.bind(c);
        a.push(this._u8.subarray(0, this._length));
        a.finish();
        this._ensureCapacity(c._u8.length);
        this._u8.set(c._u8);
        this.length = c.length;
        this._position = 0;
      };
      e.prototype._uncompress = function(a) {
        a = f(a);
        switch(a) {
          case "zlib":
            a = new k.Inflate(!0);
            break;
          case "deflate":
            a = new k.Inflate(!1);
            break;
          default:
            return;
        }
        var c = new e;
        a.onData = c.writeRawBytes.bind(c);
        a.push(this._u8.subarray(0, this._length));
        a.error && t("throwCompressedDataError");
        this._ensureCapacity(c._u8.length);
        this._u8.set(c._u8);
        this.length = c.length;
        this._position = 0;
      };
      e._nativeLittleEndian = 1 === (new Int8Array((new Int32Array([1])).buffer))[0];
      e.INITIAL_SIZE = 128;
      e._arrayBufferPool = new b.ArrayBufferPool;
      return e;
    }();
    k.DataBuffer = n;
  })(b.ArrayUtilities || (b.ArrayUtilities = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  var k = b.ArrayUtilities.DataBuffer, g = b.ArrayUtilities.ensureTypedArrayCapacity, f = b.Debug.assert;
  (function(b) {
    b[b.BeginSolidFill = 1] = "BeginSolidFill";
    b[b.BeginGradientFill = 2] = "BeginGradientFill";
    b[b.BeginBitmapFill = 3] = "BeginBitmapFill";
    b[b.EndFill = 4] = "EndFill";
    b[b.LineStyleSolid = 5] = "LineStyleSolid";
    b[b.LineStyleGradient = 6] = "LineStyleGradient";
    b[b.LineStyleBitmap = 7] = "LineStyleBitmap";
    b[b.LineEnd = 8] = "LineEnd";
    b[b.MoveTo = 9] = "MoveTo";
    b[b.LineTo = 10] = "LineTo";
    b[b.CurveTo = 11] = "CurveTo";
    b[b.CubicCurveTo = 12] = "CubicCurveTo";
  })(b.PathCommand || (b.PathCommand = {}));
  (function(b) {
    b[b.Linear = 16] = "Linear";
    b[b.Radial = 18] = "Radial";
  })(b.GradientType || (b.GradientType = {}));
  (function(b) {
    b[b.Pad = 0] = "Pad";
    b[b.Reflect = 1] = "Reflect";
    b[b.Repeat = 2] = "Repeat";
  })(b.GradientSpreadMethod || (b.GradientSpreadMethod = {}));
  (function(b) {
    b[b.RGB = 0] = "RGB";
    b[b.LinearRGB = 1] = "LinearRGB";
  })(b.GradientInterpolationMethod || (b.GradientInterpolationMethod = {}));
  (function(b) {
    b[b.None = 0] = "None";
    b[b.Normal = 1] = "Normal";
    b[b.Vertical = 2] = "Vertical";
    b[b.Horizontal = 3] = "Horizontal";
  })(b.LineScaleMode || (b.LineScaleMode = {}));
  var t = function() {
    return function(b, d, a, c, n, p, e, q, l) {
      this.commands = b;
      this.commandsPosition = d;
      this.coordinates = a;
      this.coordinatesPosition = c;
      this.morphCoordinates = n;
      this.styles = p;
      this.stylesLength = e;
      this.hasFills = q;
      this.hasLines = l;
    };
  }();
  b.PlainObjectShapeData = t;
  var s;
  (function(b) {
    b[b.Commands = 32] = "Commands";
    b[b.Coordinates = 128] = "Coordinates";
    b[b.Styles = 16] = "Styles";
  })(s || (s = {}));
  s = function() {
    function b(d) {
      "undefined" === typeof d && (d = !0);
      d && this.clear();
    }
    b.FromPlainObject = function(d) {
      var a = new b(!1);
      a.commands = d.commands;
      a.coordinates = d.coordinates;
      a.morphCoordinates = d.morphCoordinates;
      a.commandsPosition = d.commandsPosition;
      a.coordinatesPosition = d.coordinatesPosition;
      a.styles = k.FromArrayBuffer(d.styles, d.stylesLength);
      a.styles.endian = "auto";
      a.hasFills = d.hasFills;
      a.hasLines = d.hasLines;
      return a;
    };
    b.prototype.moveTo = function(d, a) {
      this.ensurePathCapacities(1, 2);
      this.commands[this.commandsPosition++] = 9;
      this.coordinates[this.coordinatesPosition++] = d;
      this.coordinates[this.coordinatesPosition++] = a;
    };
    b.prototype.lineTo = function(d, a) {
      this.ensurePathCapacities(1, 2);
      this.commands[this.commandsPosition++] = 10;
      this.coordinates[this.coordinatesPosition++] = d;
      this.coordinates[this.coordinatesPosition++] = a;
    };
    b.prototype.curveTo = function(d, a, c, b) {
      this.ensurePathCapacities(1, 4);
      this.commands[this.commandsPosition++] = 11;
      this.coordinates[this.coordinatesPosition++] = d;
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = c;
      this.coordinates[this.coordinatesPosition++] = b;
    };
    b.prototype.cubicCurveTo = function(d, a, c, b, p, e) {
      this.ensurePathCapacities(1, 6);
      this.commands[this.commandsPosition++] = 12;
      this.coordinates[this.coordinatesPosition++] = d;
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = c;
      this.coordinates[this.coordinatesPosition++] = b;
      this.coordinates[this.coordinatesPosition++] = p;
      this.coordinates[this.coordinatesPosition++] = e;
    };
    b.prototype.beginFill = function(d) {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = 1;
      this.styles.writeUnsignedInt(d);
      this.hasFills = !0;
    };
    b.prototype.endFill = function() {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = 4;
    };
    b.prototype.endLine = function() {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = 8;
    };
    b.prototype.lineStyle = function(d, a, c, b, p, e, q) {
      f(d === (d | 0), 0 <= d && 5100 >= d);
      this.ensurePathCapacities(2, 0);
      this.commands[this.commandsPosition++] = 5;
      this.coordinates[this.coordinatesPosition++] = d;
      d = this.styles;
      d.writeUnsignedInt(a);
      d.writeBoolean(c);
      d.writeUnsignedByte(b);
      d.writeUnsignedByte(p);
      d.writeUnsignedByte(e);
      d.writeUnsignedByte(q);
      this.hasLines = !0;
    };
    b.prototype.beginBitmap = function(d, a, c, b, p) {
      f(3 === d || 7 === d);
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = d;
      d = this.styles;
      d.writeUnsignedInt(a);
      this._writeStyleMatrix(c);
      d.writeBoolean(b);
      d.writeBoolean(p);
      this.hasFills = !0;
    };
    b.prototype.beginGradient = function(d, a, c, b, p, e, q, l) {
      f(2 === d || 6 === d);
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = d;
      d = this.styles;
      d.writeUnsignedByte(b);
      f(l === (l | 0));
      d.writeShort(l);
      this._writeStyleMatrix(p);
      b = a.length;
      d.writeByte(b);
      for (p = 0;p < b;p++) {
        d.writeUnsignedByte(c[p]), d.writeUnsignedInt(a[p]);
      }
      d.writeUnsignedByte(e);
      d.writeUnsignedByte(q);
      this.hasFills = !0;
    };
    b.prototype.writeCommandAndCoordinates = function(d, a, c) {
      this.ensurePathCapacities(1, 2);
      this.commands[this.commandsPosition++] = d;
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = c;
    };
    b.prototype.writeCoordinates = function(d, a) {
      this.ensurePathCapacities(0, 2);
      this.coordinates[this.coordinatesPosition++] = d;
      this.coordinates[this.coordinatesPosition++] = a;
    };
    b.prototype.writeMorphCoordinates = function(d, a) {
      this.morphCoordinates = g(this.morphCoordinates, this.coordinatesPosition);
      this.morphCoordinates[this.coordinatesPosition - 2] = d;
      this.morphCoordinates[this.coordinatesPosition - 1] = a;
    };
    b.prototype.clear = function() {
      this.commandsPosition = this.coordinatesPosition = 0;
      this.commands = new Uint8Array(32);
      this.coordinates = new Int32Array(128);
      this.styles = new k(16);
      this.styles.endian = "auto";
      this.hasFills = this.hasLines = !1;
    };
    b.prototype.isEmpty = function() {
      return 0 === this.commandsPosition;
    };
    b.prototype.clone = function() {
      var d = new b(!1);
      d.commands = new Uint8Array(this.commands);
      d.commandsPosition = this.commandsPosition;
      d.coordinates = new Int32Array(this.coordinates);
      d.coordinatesPosition = this.coordinatesPosition;
      d.styles = new k(this.styles.length);
      d.styles.writeRawBytes(this.styles.bytes);
      d.hasFills = this.hasFills;
      d.hasLines = this.hasLines;
      return d;
    };
    b.prototype.toPlainObject = function() {
      return new t(this.commands, this.commandsPosition, this.coordinates, this.coordinatesPosition, this.morphCoordinates, this.styles.buffer, this.styles.length, this.hasFills, this.hasLines);
    };
    Object.defineProperty(b.prototype, "buffers", {get:function() {
      var d = [this.commands.buffer, this.coordinates.buffer, this.styles.buffer];
      this.morphCoordinates && d.push(this.morphCoordinates.buffer);
      return d;
    }, enumerable:!0, configurable:!0});
    b.prototype._writeStyleMatrix = function(d) {
      var a = this.styles;
      a.writeFloat(d.a);
      a.writeFloat(d.b);
      a.writeFloat(d.c);
      a.writeFloat(d.d);
      a.writeFloat(d.tx);
      a.writeFloat(d.ty);
    };
    b.prototype.ensurePathCapacities = function(d, a) {
      this.commands = g(this.commands, this.commandsPosition + d);
      this.coordinates = g(this.coordinates, this.coordinatesPosition + a);
    };
    return b;
  }();
  b.ShapeData = s;
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        b[b.CODE_END = 0] = "CODE_END";
        b[b.CODE_SHOW_FRAME = 1] = "CODE_SHOW_FRAME";
        b[b.CODE_DEFINE_SHAPE = 2] = "CODE_DEFINE_SHAPE";
        b[b.CODE_FREE_CHARACTER = 3] = "CODE_FREE_CHARACTER";
        b[b.CODE_PLACE_OBJECT = 4] = "CODE_PLACE_OBJECT";
        b[b.CODE_REMOVE_OBJECT = 5] = "CODE_REMOVE_OBJECT";
        b[b.CODE_DEFINE_BITS = 6] = "CODE_DEFINE_BITS";
        b[b.CODE_DEFINE_BUTTON = 7] = "CODE_DEFINE_BUTTON";
        b[b.CODE_JPEG_TABLES = 8] = "CODE_JPEG_TABLES";
        b[b.CODE_SET_BACKGROUND_COLOR = 9] = "CODE_SET_BACKGROUND_COLOR";
        b[b.CODE_DEFINE_FONT = 10] = "CODE_DEFINE_FONT";
        b[b.CODE_DEFINE_TEXT = 11] = "CODE_DEFINE_TEXT";
        b[b.CODE_DO_ACTION = 12] = "CODE_DO_ACTION";
        b[b.CODE_DEFINE_FONT_INFO = 13] = "CODE_DEFINE_FONT_INFO";
        b[b.CODE_DEFINE_SOUND = 14] = "CODE_DEFINE_SOUND";
        b[b.CODE_START_SOUND = 15] = "CODE_START_SOUND";
        b[b.CODE_STOP_SOUND = 16] = "CODE_STOP_SOUND";
        b[b.CODE_DEFINE_BUTTON_SOUND = 17] = "CODE_DEFINE_BUTTON_SOUND";
        b[b.CODE_SOUND_STREAM_HEAD = 18] = "CODE_SOUND_STREAM_HEAD";
        b[b.CODE_SOUND_STREAM_BLOCK = 19] = "CODE_SOUND_STREAM_BLOCK";
        b[b.CODE_DEFINE_BITS_LOSSLESS = 20] = "CODE_DEFINE_BITS_LOSSLESS";
        b[b.CODE_DEFINE_BITS_JPEG2 = 21] = "CODE_DEFINE_BITS_JPEG2";
        b[b.CODE_DEFINE_SHAPE2 = 22] = "CODE_DEFINE_SHAPE2";
        b[b.CODE_DEFINE_BUTTON_CXFORM = 23] = "CODE_DEFINE_BUTTON_CXFORM";
        b[b.CODE_PROTECT = 24] = "CODE_PROTECT";
        b[b.CODE_PATHS_ARE_POSTSCRIPT = 25] = "CODE_PATHS_ARE_POSTSCRIPT";
        b[b.CODE_PLACE_OBJECT2 = 26] = "CODE_PLACE_OBJECT2";
        b[b.CODE_REMOVE_OBJECT2 = 28] = "CODE_REMOVE_OBJECT2";
        b[b.CODE_SYNC_FRAME = 29] = "CODE_SYNC_FRAME";
        b[b.CODE_FREE_ALL = 31] = "CODE_FREE_ALL";
        b[b.CODE_DEFINE_SHAPE3 = 32] = "CODE_DEFINE_SHAPE3";
        b[b.CODE_DEFINE_TEXT2 = 33] = "CODE_DEFINE_TEXT2";
        b[b.CODE_DEFINE_BUTTON2 = 34] = "CODE_DEFINE_BUTTON2";
        b[b.CODE_DEFINE_BITS_JPEG3 = 35] = "CODE_DEFINE_BITS_JPEG3";
        b[b.CODE_DEFINE_BITS_LOSSLESS2 = 36] = "CODE_DEFINE_BITS_LOSSLESS2";
        b[b.CODE_DEFINE_EDIT_TEXT = 37] = "CODE_DEFINE_EDIT_TEXT";
        b[b.CODE_DEFINE_VIDEO = 38] = "CODE_DEFINE_VIDEO";
        b[b.CODE_DEFINE_SPRITE = 39] = "CODE_DEFINE_SPRITE";
        b[b.CODE_NAME_CHARACTER = 40] = "CODE_NAME_CHARACTER";
        b[b.CODE_PRODUCT_INFO = 41] = "CODE_PRODUCT_INFO";
        b[b.CODE_DEFINE_TEXT_FORMAT = 42] = "CODE_DEFINE_TEXT_FORMAT";
        b[b.CODE_FRAME_LABEL = 43] = "CODE_FRAME_LABEL";
        b[b.CODE_DEFINE_BEHAVIOUR = 44] = "CODE_DEFINE_BEHAVIOUR";
        b[b.CODE_SOUND_STREAM_HEAD2 = 45] = "CODE_SOUND_STREAM_HEAD2";
        b[b.CODE_DEFINE_MORPH_SHAPE = 46] = "CODE_DEFINE_MORPH_SHAPE";
        b[b.CODE_FRAME_TAG = 47] = "CODE_FRAME_TAG";
        b[b.CODE_DEFINE_FONT2 = 48] = "CODE_DEFINE_FONT2";
        b[b.CODE_GEN_COMMAND = 49] = "CODE_GEN_COMMAND";
        b[b.CODE_DEFINE_COMMAND_OBJ = 50] = "CODE_DEFINE_COMMAND_OBJ";
        b[b.CODE_CHARACTER_SET = 51] = "CODE_CHARACTER_SET";
        b[b.CODE_FONT_REF = 52] = "CODE_FONT_REF";
        b[b.CODE_DEFINE_FUNCTION = 53] = "CODE_DEFINE_FUNCTION";
        b[b.CODE_PLACE_FUNCTION = 54] = "CODE_PLACE_FUNCTION";
        b[b.CODE_GEN_TAG_OBJECTS = 55] = "CODE_GEN_TAG_OBJECTS";
        b[b.CODE_EXPORT_ASSETS = 56] = "CODE_EXPORT_ASSETS";
        b[b.CODE_IMPORT_ASSETS = 57] = "CODE_IMPORT_ASSETS";
        b[b.CODE_ENABLE_DEBUGGER = 58] = "CODE_ENABLE_DEBUGGER";
        b[b.CODE_DO_INIT_ACTION = 59] = "CODE_DO_INIT_ACTION";
        b[b.CODE_DEFINE_VIDEO_STREAM = 60] = "CODE_DEFINE_VIDEO_STREAM";
        b[b.CODE_VIDEO_FRAME = 61] = "CODE_VIDEO_FRAME";
        b[b.CODE_DEFINE_FONT_INFO2 = 62] = "CODE_DEFINE_FONT_INFO2";
        b[b.CODE_DEBUG_ID = 63] = "CODE_DEBUG_ID";
        b[b.CODE_ENABLE_DEBUGGER2 = 64] = "CODE_ENABLE_DEBUGGER2";
        b[b.CODE_SCRIPT_LIMITS = 65] = "CODE_SCRIPT_LIMITS";
        b[b.CODE_SET_TAB_INDEX = 66] = "CODE_SET_TAB_INDEX";
        b[b.CODE_FILE_ATTRIBUTES = 69] = "CODE_FILE_ATTRIBUTES";
        b[b.CODE_PLACE_OBJECT3 = 70] = "CODE_PLACE_OBJECT3";
        b[b.CODE_IMPORT_ASSETS2 = 71] = "CODE_IMPORT_ASSETS2";
        b[b.CODE_DO_ABC_ = 72] = "CODE_DO_ABC_";
        b[b.CODE_DEFINE_FONT_ALIGN_ZONES = 73] = "CODE_DEFINE_FONT_ALIGN_ZONES";
        b[b.CODE_CSM_TEXT_SETTINGS = 74] = "CODE_CSM_TEXT_SETTINGS";
        b[b.CODE_DEFINE_FONT3 = 75] = "CODE_DEFINE_FONT3";
        b[b.CODE_SYMBOL_CLASS = 76] = "CODE_SYMBOL_CLASS";
        b[b.CODE_METADATA = 77] = "CODE_METADATA";
        b[b.CODE_DEFINE_SCALING_GRID = 78] = "CODE_DEFINE_SCALING_GRID";
        b[b.CODE_DO_ABC = 82] = "CODE_DO_ABC";
        b[b.CODE_DEFINE_SHAPE4 = 83] = "CODE_DEFINE_SHAPE4";
        b[b.CODE_DEFINE_MORPH_SHAPE2 = 84] = "CODE_DEFINE_MORPH_SHAPE2";
        b[b.CODE_DEFINE_SCENE_AND_FRAME_LABEL_DATA = 86] = "CODE_DEFINE_SCENE_AND_FRAME_LABEL_DATA";
        b[b.CODE_DEFINE_BINARY_DATA = 87] = "CODE_DEFINE_BINARY_DATA";
        b[b.CODE_DEFINE_FONT_NAME = 88] = "CODE_DEFINE_FONT_NAME";
        b[b.CODE_START_SOUND2 = 89] = "CODE_START_SOUND2";
        b[b.CODE_DEFINE_BITS_JPEG4 = 90] = "CODE_DEFINE_BITS_JPEG4";
        b[b.CODE_DEFINE_FONT4 = 91] = "CODE_DEFINE_FONT4";
      })(b.SwfTag || (b.SwfTag = {}));
      (function(b) {
        b[b.Reserved = 2048] = "Reserved";
        b[b.OpaqueBackground = 1024] = "OpaqueBackground";
        b[b.HasVisible = 512] = "HasVisible";
        b[b.HasImage = 256] = "HasImage";
        b[b.HasClassName = 2048] = "HasClassName";
        b[b.HasCacheAsBitmap = 1024] = "HasCacheAsBitmap";
        b[b.HasBlendMode = 512] = "HasBlendMode";
        b[b.HasFilterList = 256] = "HasFilterList";
        b[b.HasClipActions = 128] = "HasClipActions";
        b[b.HasClipDepth = 64] = "HasClipDepth";
        b[b.HasName = 32] = "HasName";
        b[b.HasRatio = 16] = "HasRatio";
        b[b.HasColorTransform = 8] = "HasColorTransform";
        b[b.HasMatrix = 4] = "HasMatrix";
        b[b.HasCharacter = 2] = "HasCharacter";
        b[b.Move = 1] = "Move";
      })(b.PlaceObjectFlags || (b.PlaceObjectFlags = {}));
    })(b.Parser || (b.Parser = {}));
  })(b.SWF || (b.SWF = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  var k = b.Debug.unexpected, g = function() {
    function b(g, f, m, d) {
      this.url = g;
      this.method = f;
      this.mimeType = m;
      this.data = d;
    }
    b.prototype.readAll = function(b) {
      var g = this.url, m = new XMLHttpRequest({mozSystem:!0});
      m.open(this.method || "GET", this.url, !0);
      m.responseType = "arraybuffer";
      m.onreadystatechange = function(d) {
        4 === m.readyState && (200 !== m.status && 0 !== m.status || null === m.response ? (k("Path: " + g + " not found."), b(null, m.statusText)) : b(m.response));
      };
      this.mimeType && m.setRequestHeader("Content-Type", this.mimeType);
      m.send(this.data || null);
    };
    b.prototype.readAsync = function(b, g, m, d, a) {
      var c = new XMLHttpRequest({mozSystem:!0}), n = this.url, p = 0, e = 0;
      c.open(this.method || "GET", n, !0);
      c.responseType = "moz-chunked-arraybuffer";
      var q = "moz-chunked-arraybuffer" !== c.responseType;
      q && (c.responseType = "arraybuffer");
      c.onprogress = function(a) {
        q || (p = a.loaded, e = a.total, b(new Uint8Array(c.response), {loaded:p, total:e}));
      };
      c.onreadystatechange = function(l) {
        2 === c.readyState && a && a(n, c.status, c.getAllResponseHeaders());
        4 === c.readyState && (200 !== c.status && 0 !== c.status || null === c.response && (0 === e || p !== e) ? g(c.statusText) : (q && (l = c.response, b(new Uint8Array(l), {loaded:0, total:l.byteLength})), d && d()));
      };
      this.mimeType && c.setRequestHeader("Content-Type", this.mimeType);
      c.send(this.data || null);
      m && m();
    };
    return b;
  }();
  b.BinaryFileReader = g;
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      b[b.Objects = 0] = "Objects";
      b[b.References = 1] = "References";
    })(b.RemotingPhase || (b.RemotingPhase = {}));
    (function(b) {
      b[b.HasMatrix = 1] = "HasMatrix";
      b[b.HasBounds = 2] = "HasBounds";
      b[b.HasChildren = 4] = "HasChildren";
      b[b.HasColorTransform = 8] = "HasColorTransform";
      b[b.HasClipRect = 16] = "HasClipRect";
      b[b.HasMiscellaneousProperties = 32] = "HasMiscellaneousProperties";
      b[b.HasMask = 64] = "HasMask";
      b[b.HasClip = 128] = "HasClip";
    })(b.MessageBits || (b.MessageBits = {}));
    (function(b) {
      b[b.None = 0] = "None";
      b[b.Asset = 134217728] = "Asset";
    })(b.IDMask || (b.IDMask = {}));
    (function(b) {
      b[b.EOF = 0] = "EOF";
      b[b.UpdateFrame = 100] = "UpdateFrame";
      b[b.UpdateGraphics = 101] = "UpdateGraphics";
      b[b.UpdateBitmapData = 102] = "UpdateBitmapData";
      b[b.UpdateTextContent = 103] = "UpdateTextContent";
      b[b.UpdateStage = 104] = "UpdateStage";
      b[b.UpdateNetStream = 105] = "UpdateNetStream";
      b[b.RequestBitmapData = 106] = "RequestBitmapData";
      b[b.DecodeImage = 107] = "DecodeImage";
      b[b.DecodeImageResponse = 108] = "DecodeImageResponse";
      b[b.RegisterFont = 200] = "RegisterFont";
      b[b.DrawToBitmap = 201] = "DrawToBitmap";
      b[b.MouseEvent = 300] = "MouseEvent";
      b[b.KeyboardEvent = 301] = "KeyboardEvent";
      b[b.FocusEvent = 302] = "FocusEvent";
    })(b.MessageTag || (b.MessageTag = {}));
    (function(b) {
      b[b.Identity = 0] = "Identity";
      b[b.AlphaMultiplierOnly = 1] = "AlphaMultiplierOnly";
      b[b.All = 2] = "All";
    })(b.ColorTransformEncoding || (b.ColorTransformEncoding = {}));
    b.MouseEventNames = ["click", "dblclick", "mousedown", "mousemove", "mouseup"];
    b.KeyboardEventNames = ["keydown", "keypress", "keyup"];
    (function(b) {
      b[b.CtrlKey = 1] = "CtrlKey";
      b[b.AltKey = 2] = "AltKey";
      b[b.ShiftKey = 4] = "ShiftKey";
    })(b.KeyboardEventFlags || (b.KeyboardEventFlags = {}));
    (function(b) {
      b[b.DocumentHidden = 0] = "DocumentHidden";
      b[b.DocumentVisible = 1] = "DocumentVisible";
      b[b.WindowBlur = 2] = "WindowBlur";
      b[b.WindowFocus = 3] = "WindowFocus";
    })(b.FocusEventType || (b.FocusEventType = {}));
  })(b.Remoting || (b.Remoting = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      var f = function() {
        function b() {
        }
        b.toRGBA = function(b, d, a, c) {
          "undefined" === typeof c && (c = 1);
          return "rgba(" + b + "," + d + "," + a + "," + c + ")";
        };
        return b;
      }();
      b.UI = f;
      var k = function() {
        function b() {
        }
        b.prototype.tabToolbar = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(37, 44, 51, b);
        };
        b.prototype.toolbars = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(52, 60, 69, b);
        };
        b.prototype.selectionBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(29, 79, 115, b);
        };
        b.prototype.selectionText = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(245, 247, 250, b);
        };
        b.prototype.splitters = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(0, 0, 0, b);
        };
        b.prototype.bodyBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(17, 19, 21, b);
        };
        b.prototype.sidebarBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(24, 29, 32, b);
        };
        b.prototype.attentionBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(161, 134, 80, b);
        };
        b.prototype.bodyText = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(143, 161, 178, b);
        };
        b.prototype.foregroundTextGrey = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(182, 186, 191, b);
        };
        b.prototype.contentTextHighContrast = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(169, 186, 203, b);
        };
        b.prototype.contentTextGrey = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(143, 161, 178, b);
        };
        b.prototype.contentTextDarkGrey = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(95, 115, 135, b);
        };
        b.prototype.blueHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(70, 175, 227, b);
        };
        b.prototype.purpleHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(107, 122, 187, b);
        };
        b.prototype.pinkHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(223, 128, 255, b);
        };
        b.prototype.redHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(235, 83, 104, b);
        };
        b.prototype.orangeHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(217, 102, 41, b);
        };
        b.prototype.lightOrangeHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(217, 155, 40, b);
        };
        b.prototype.greenHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(112, 191, 83, b);
        };
        b.prototype.blueGreyHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(94, 136, 176, b);
        };
        return b;
      }();
      b.UIThemeDark = k;
      k = function() {
        function b() {
        }
        b.prototype.tabToolbar = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(235, 236, 237, b);
        };
        b.prototype.toolbars = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(240, 241, 242, b);
        };
        b.prototype.selectionBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(76, 158, 217, b);
        };
        b.prototype.selectionText = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(245, 247, 250, b);
        };
        b.prototype.splitters = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(170, 170, 170, b);
        };
        b.prototype.bodyBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(252, 252, 252, b);
        };
        b.prototype.sidebarBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(247, 247, 247, b);
        };
        b.prototype.attentionBackground = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(161, 134, 80, b);
        };
        b.prototype.bodyText = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(24, 25, 26, b);
        };
        b.prototype.foregroundTextGrey = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(88, 89, 89, b);
        };
        b.prototype.contentTextHighContrast = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(41, 46, 51, b);
        };
        b.prototype.contentTextGrey = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(143, 161, 178, b);
        };
        b.prototype.contentTextDarkGrey = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(102, 115, 128, b);
        };
        b.prototype.blueHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(0, 136, 204, b);
        };
        b.prototype.purpleHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(91, 95, 255, b);
        };
        b.prototype.pinkHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(184, 46, 229, b);
        };
        b.prototype.redHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(237, 38, 85, b);
        };
        b.prototype.orangeHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(241, 60, 0, b);
        };
        b.prototype.lightOrangeHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(217, 126, 0, b);
        };
        b.prototype.greenHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(44, 187, 15, b);
        };
        b.prototype.blueGreyHighlight = function(b) {
          "undefined" === typeof b && (b = 1);
          return f.toRGBA(95, 136, 176, b);
        };
        return b;
      }();
      b.UIThemeLight = k;
    })(b.Theme || (b.Theme = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      var f = function() {
        function b(f) {
          this._buffers = f || [];
          this._snapshots = [];
          this._maxDepth = 0;
        }
        b.prototype.addBuffer = function(b) {
          this._buffers.push(b);
        };
        b.prototype.getSnapshotAt = function(b) {
          return this._snapshots[b];
        };
        Object.defineProperty(b.prototype, "hasSnapshots", {get:function() {
          return 0 < this.snapshotCount;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "snapshotCount", {get:function() {
          return this._snapshots.length;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "startTime", {get:function() {
          return this._startTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "endTime", {get:function() {
          return this._endTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "totalTime", {get:function() {
          return this.endTime - this.startTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "windowStart", {get:function() {
          return this._windowStart;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "windowEnd", {get:function() {
          return this._windowEnd;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "windowLength", {get:function() {
          return this.windowEnd - this.windowStart;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "maxDepth", {get:function() {
          return this._maxDepth;
        }, enumerable:!0, configurable:!0});
        b.prototype.forEachSnapshot = function(b) {
          for (var m = 0, d = this.snapshotCount;m < d;m++) {
            b(this._snapshots[m], m);
          }
        };
        b.prototype.createSnapshots = function() {
          var b = Number.MAX_VALUE, m = Number.MIN_VALUE, d = 0;
          for (this._snapshots = [];0 < this._buffers.length;) {
            var a = this._buffers.shift().createSnapshot();
            a && (b > a.startTime && (b = a.startTime), m < a.endTime && (m = a.endTime), d < a.maxDepth && (d = a.maxDepth), this._snapshots.push(a));
          }
          this._startTime = b;
          this._endTime = m;
          this._windowStart = b;
          this._windowEnd = m;
          this._maxDepth = d;
        };
        b.prototype.setWindow = function(b, m) {
          if (b > m) {
            var d = b;
            b = m;
            m = d;
          }
          d = Math.min(m - b, this.totalTime);
          b < this._startTime ? (b = this._startTime, m = this._startTime + d) : m > this._endTime && (b = this._endTime - d, m = this._endTime);
          this._windowStart = b;
          this._windowEnd = m;
        };
        b.prototype.moveWindowTo = function(b) {
          this.setWindow(b - this.windowLength / 2, b + this.windowLength / 2);
        };
        return b;
      }();
      b.Profile = f;
    })(b.Profiler || (b.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
var __extends = this.__extends || function(b, k) {
  function g() {
    this.constructor = b;
  }
  for (var f in k) {
    k.hasOwnProperty(f) && (b[f] = k[f]);
  }
  g.prototype = k.prototype;
  b.prototype = new g;
};
(function(b) {
  (function(b) {
    (function(b) {
      var f = function() {
        return function(b) {
          this.kind = b;
          this.totalTime = this.selfTime = this.count = 0;
        };
      }();
      b.TimelineFrameStatistics = f;
      var k = function() {
        function b(m, d, a, c, n, p) {
          this.parent = m;
          this.kind = d;
          this.startData = a;
          this.endData = c;
          this.startTime = n;
          this.endTime = p;
          this.maxDepth = 0;
        }
        Object.defineProperty(b.prototype, "totalTime", {get:function() {
          return this.endTime - this.startTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "selfTime", {get:function() {
          var b = this.totalTime;
          if (this.children) {
            for (var d = 0, a = this.children.length;d < a;d++) {
              var c = this.children[d], b = b - (c.endTime - c.startTime)
            }
          }
          return b;
        }, enumerable:!0, configurable:!0});
        b.prototype.getChildIndex = function(b) {
          for (var d = this.children, a = 0;a < d.length;a++) {
            if (d[a].endTime > b) {
              return a;
            }
          }
          return 0;
        };
        b.prototype.getChildRange = function(b, d) {
          if (this.children && b <= this.endTime && d >= this.startTime && d >= b) {
            var a = this._getNearestChild(b), c = this._getNearestChildReverse(d);
            if (a <= c) {
              return b = this.children[a].startTime, d = this.children[c].endTime, {startIndex:a, endIndex:c, startTime:b, endTime:d, totalTime:d - b};
            }
          }
          return null;
        };
        b.prototype._getNearestChild = function(b) {
          var d = this.children;
          if (d && d.length) {
            if (b <= d[0].endTime) {
              return 0;
            }
            for (var a, c = 0, n = d.length - 1;n > c;) {
              a = (c + n) / 2 | 0;
              var p = d[a];
              if (b >= p.startTime && b <= p.endTime) {
                return a;
              }
              b > p.endTime ? c = a + 1 : n = a;
            }
            return Math.ceil((c + n) / 2);
          }
          return 0;
        };
        b.prototype._getNearestChildReverse = function(b) {
          var d = this.children;
          if (d && d.length) {
            var a = d.length - 1;
            if (b >= d[a].startTime) {
              return a;
            }
            for (var c, n = 0;a > n;) {
              c = Math.ceil((n + a) / 2);
              var p = d[c];
              if (b >= p.startTime && b <= p.endTime) {
                return c;
              }
              b > p.endTime ? n = c : a = c - 1;
            }
            return(n + a) / 2 | 0;
          }
          return 0;
        };
        b.prototype.query = function(b) {
          if (b < this.startTime || b > this.endTime) {
            return null;
          }
          var d = this.children;
          if (d && 0 < d.length) {
            for (var a, c = 0, n = d.length - 1;n > c;) {
              var p = (c + n) / 2 | 0;
              a = d[p];
              if (b >= a.startTime && b <= a.endTime) {
                return a.query(b);
              }
              b > a.endTime ? c = p + 1 : n = p;
            }
            a = d[n];
            if (b >= a.startTime && b <= a.endTime) {
              return a.query(b);
            }
          }
          return this;
        };
        b.prototype.queryNext = function(b) {
          for (var d = this;b > d.endTime;) {
            if (d.parent) {
              d = d.parent;
            } else {
              break;
            }
          }
          return d.query(b);
        };
        b.prototype.getDepth = function() {
          for (var b = 0, d = this;d;) {
            b++, d = d.parent;
          }
          return b;
        };
        b.prototype.calculateStatistics = function() {
          function b(a) {
            if (a.kind) {
              var c = d[a.kind.id] || (d[a.kind.id] = new f(a.kind));
              c.count++;
              c.selfTime += a.selfTime;
              c.totalTime += a.totalTime;
            }
            a.children && a.children.forEach(b);
          }
          var d = this.statistics = [];
          b(this);
        };
        return b;
      }();
      b.TimelineFrame = k;
      k = function(b) {
        function m(d) {
          b.call(this, null, null, null, null, NaN, NaN);
          this.name = d;
        }
        __extends(m, b);
        return m;
      }(k);
      b.TimelineBufferSnapshot = k;
    })(b.Profiler || (b.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.ObjectUtilities.createEmptyObject, k = function() {
        function s(m, d) {
          "undefined" === typeof m && (m = "");
          this.name = m || "";
          this._startTime = b.isNullOrUndefined(d) ? performance.now() : d;
        }
        s.prototype.getKind = function(b) {
          return this._kinds[b];
        };
        Object.defineProperty(s.prototype, "kinds", {get:function() {
          return this._kinds.concat();
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(s.prototype, "depth", {get:function() {
          return this._depth;
        }, enumerable:!0, configurable:!0});
        s.prototype._initialize = function() {
          this._depth = 0;
          this._stack = [];
          this._data = [];
          this._kinds = [];
          this._kindNameMap = f();
          this._marks = new b.CircularBuffer(Int32Array, 20);
          this._times = new b.CircularBuffer(Float64Array, 20);
        };
        s.prototype._getKindId = function(b) {
          var d = s.MAX_KINDID;
          if (void 0 === this._kindNameMap[b]) {
            if (d = this._kinds.length, d < s.MAX_KINDID) {
              var a = {id:d, name:b, visible:!0};
              this._kinds.push(a);
              this._kindNameMap[b] = a;
            } else {
              d = s.MAX_KINDID;
            }
          } else {
            d = this._kindNameMap[b].id;
          }
          return d;
        };
        s.prototype._getMark = function(m, d, a) {
          var c = s.MAX_DATAID;
          b.isNullOrUndefined(a) || d === s.MAX_KINDID || (c = this._data.length, c < s.MAX_DATAID ? this._data.push(a) : c = s.MAX_DATAID);
          return m | c << 16 | d;
        };
        s.prototype.enter = function(m, d, a) {
          a = (b.isNullOrUndefined(a) ? performance.now() : a) - this._startTime;
          this._marks || this._initialize();
          this._depth++;
          m = this._getKindId(m);
          this._marks.write(this._getMark(s.ENTER, m, d));
          this._times.write(a);
          this._stack.push(m);
        };
        s.prototype.leave = function(m, d, a) {
          a = (b.isNullOrUndefined(a) ? performance.now() : a) - this._startTime;
          var c = this._stack.pop();
          m && (c = this._getKindId(m));
          this._marks.write(this._getMark(s.LEAVE, c, d));
          this._times.write(a);
          this._depth--;
        };
        s.prototype.count = function(b, d, a) {
        };
        s.prototype.createSnapshot = function() {
          var m;
          "undefined" === typeof m && (m = Number.MAX_VALUE);
          if (!this._marks) {
            return null;
          }
          var d = this._times, a = this._kinds, c = this._data, n = new g.TimelineBufferSnapshot(this.name), p = [n], e = 0;
          this._marks || this._initialize();
          this._marks.forEachInReverse(function(q, l) {
            var n = c[q >>> 16 & s.MAX_DATAID], w = a[q & s.MAX_KINDID];
            if (b.isNullOrUndefined(w) || w.visible) {
              var r = q & 2147483648, h = d.get(l), x = p.length;
              if (r === s.LEAVE) {
                if (1 === x && (e++, e > m)) {
                  return!0;
                }
                p.push(new g.TimelineFrame(p[x - 1], w, null, n, NaN, h));
              } else {
                if (r === s.ENTER) {
                  if (w = p.pop(), r = p[p.length - 1]) {
                    for (r.children ? r.children.unshift(w) : r.children = [w], r = p.length, w.depth = r, w.startData = n, w.startTime = h;w;) {
                      if (w.maxDepth < r) {
                        w.maxDepth = r, w = w.parent;
                      } else {
                        break;
                      }
                    }
                  } else {
                    return!0;
                  }
                }
              }
            }
          });
          n.children && n.children.length && (n.startTime = n.children[0].startTime, n.endTime = n.children[n.children.length - 1].endTime);
          return n;
        };
        s.prototype.reset = function(m) {
          this._startTime = b.isNullOrUndefined(m) ? performance.now() : m;
          this._marks ? (this._depth = 0, this._data = [], this._marks.reset(), this._times.reset()) : this._initialize();
        };
        s.FromFirefoxProfile = function(b, d) {
          for (var a = b.profile.threads[0].samples, c = new s(d, a[0].time), n = [], p, e = 0;e < a.length;e++) {
            p = a[e];
            var q = p.time, l = p.frames, u = 0;
            for (p = Math.min(l.length, n.length);u < p && l[u].location === n[u].location;) {
              u++;
            }
            for (var w = n.length - u, r = 0;r < w;r++) {
              p = n.pop(), c.leave(p.location, null, q);
            }
            for (;u < l.length;) {
              p = l[u++], c.enter(p.location, null, q);
            }
            n = l;
          }
          for (;p = n.pop();) {
            c.leave(p.location, null, q);
          }
          return c;
        };
        s.FromChromeProfile = function(b, d) {
          var a = b.timestamps, c = b.samples, n = new s(d, a[0] / 1E3), p = [], e = {}, q;
          s._resolveIds(b.head, e);
          for (var l = 0;l < a.length;l++) {
            var u = a[l] / 1E3, w = [];
            for (q = e[c[l]];q;) {
              w.unshift(q), q = q.parent;
            }
            var r = 0;
            for (q = Math.min(w.length, p.length);r < q && w[r] === p[r];) {
              r++;
            }
            for (var h = p.length - r, x = 0;x < h;x++) {
              q = p.pop(), n.leave(q.functionName, null, u);
            }
            for (;r < w.length;) {
              q = w[r++], n.enter(q.functionName, null, u);
            }
            p = w;
          }
          for (;q = p.pop();) {
            n.leave(q.functionName, null, u);
          }
          return n;
        };
        s._resolveIds = function(b, d) {
          d[b.id] = b;
          if (b.children) {
            for (var a = 0;a < b.children.length;a++) {
              b.children[a].parent = b, s._resolveIds(b.children[a], d);
            }
          }
        };
        s.ENTER = 0;
        s.LEAVE = -2147483648;
        s.MAX_KINDID = 65535;
        s.MAX_DATAID = 32767;
        return s;
      }();
      g.TimelineBuffer = k;
    })(k.Profiler || (k.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(b) {
        b[b.DARK = 0] = "DARK";
        b[b.LIGHT = 1] = "LIGHT";
      })(g.UIThemeType || (g.UIThemeType = {}));
      var f = function() {
        function f(b, m) {
          "undefined" === typeof m && (m = 0);
          this._container = b;
          this._headers = [];
          this._charts = [];
          this._profiles = [];
          this._activeProfile = null;
          this.themeType = m;
          this._tooltip = this._createTooltip();
        }
        f.prototype.createProfile = function(b, m) {
          "undefined" === typeof m && (m = !0);
          var d = new g.Profile(b);
          d.createSnapshots();
          this._profiles.push(d);
          m && this.activateProfile(d);
          return d;
        };
        f.prototype.activateProfile = function(b) {
          this.deactivateProfile();
          this._activeProfile = b;
          this._createViews();
          this._initializeViews();
        };
        f.prototype.activateProfileAt = function(b) {
          this.activateProfile(this.getProfileAt(b));
        };
        f.prototype.deactivateProfile = function() {
          this._activeProfile && (this._destroyViews(), this._activeProfile = null);
        };
        f.prototype.resize = function() {
          this._onResize();
        };
        f.prototype.getProfileAt = function(b) {
          return this._profiles[b];
        };
        Object.defineProperty(f.prototype, "activeProfile", {get:function() {
          return this._activeProfile;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(f.prototype, "profileCount", {get:function() {
          return this._profiles.length;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(f.prototype, "container", {get:function() {
          return this._container;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(f.prototype, "themeType", {get:function() {
          return this._themeType;
        }, set:function(b) {
          switch(b) {
            case 0:
              this._theme = new k.Theme.UIThemeDark;
              break;
            case 1:
              this._theme = new k.Theme.UIThemeLight;
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(f.prototype, "theme", {get:function() {
          return this._theme;
        }, enumerable:!0, configurable:!0});
        f.prototype.getSnapshotAt = function(b) {
          return this._activeProfile.getSnapshotAt(b);
        };
        f.prototype._createViews = function() {
          if (this._activeProfile) {
            var b = this;
            this._overviewHeader = new g.FlameChartHeader(this, 0);
            this._overview = new g.FlameChartOverview(this, 0);
            this._activeProfile.forEachSnapshot(function(m, d) {
              b._headers.push(new g.FlameChartHeader(b, 1));
              b._charts.push(new g.FlameChart(b, m));
            });
            window.addEventListener("resize", this._onResize.bind(this));
          }
        };
        f.prototype._destroyViews = function() {
          if (this._activeProfile) {
            this._overviewHeader.destroy();
            for (this._overview.destroy();this._headers.length;) {
              this._headers.pop().destroy();
            }
            for (;this._charts.length;) {
              this._charts.pop().destroy();
            }
            window.removeEventListener("resize", this._onResize.bind(this));
          }
        };
        f.prototype._initializeViews = function() {
          if (this._activeProfile) {
            var b = this, m = this._activeProfile.startTime, d = this._activeProfile.endTime;
            this._overviewHeader.initialize(m, d);
            this._overview.initialize(m, d);
            this._activeProfile.forEachSnapshot(function(a, c) {
              b._headers[c].initialize(m, d);
              b._charts[c].initialize(m, d);
            });
          }
        };
        f.prototype._onResize = function() {
          if (this._activeProfile) {
            var b = this, m = this._container.offsetWidth;
            this._overviewHeader.setSize(m);
            this._overview.setSize(m);
            this._activeProfile.forEachSnapshot(function(d, a) {
              b._headers[a].setSize(m);
              b._charts[a].setSize(m);
            });
          }
        };
        f.prototype._updateViews = function() {
          if (this._activeProfile) {
            var b = this, m = this._activeProfile.windowStart, d = this._activeProfile.windowEnd;
            this._overviewHeader.setWindow(m, d);
            this._overview.setWindow(m, d);
            this._activeProfile.forEachSnapshot(function(a, c) {
              b._headers[c].setWindow(m, d);
              b._charts[c].setWindow(m, d);
            });
          }
        };
        f.prototype._drawViews = function() {
        };
        f.prototype._createTooltip = function() {
          var b = document.createElement("div");
          b.classList.add("profiler-tooltip");
          b.style.display = "none";
          this._container.insertBefore(b, this._container.firstChild);
          return b;
        };
        f.prototype.setWindow = function(b, m) {
          this._activeProfile.setWindow(b, m);
          this._updateViews();
        };
        f.prototype.moveWindowTo = function(b) {
          this._activeProfile.moveWindowTo(b);
          this._updateViews();
        };
        f.prototype.showTooltip = function(b, m, d, a) {
          this.removeTooltipContent();
          this._tooltip.appendChild(this.createTooltipContent(b, m));
          this._tooltip.style.display = "block";
          var c = this._tooltip.firstChild;
          m = c.clientWidth;
          c = c.clientHeight;
          d += d + m >= b.canvas.clientWidth - 50 ? -(m + 20) : 25;
          a += b.canvas.offsetTop - c / 2;
          this._tooltip.style.left = d + "px";
          this._tooltip.style.top = a + "px";
        };
        f.prototype.hideTooltip = function() {
          this._tooltip.style.display = "none";
        };
        f.prototype.createTooltipContent = function(b, m) {
          var d = Math.round(1E5 * m.totalTime) / 1E5, a = Math.round(1E5 * m.selfTime) / 1E5, c = Math.round(1E4 * m.selfTime / m.totalTime) / 100, n = document.createElement("div"), p = document.createElement("h1");
          p.textContent = m.kind.name;
          n.appendChild(p);
          p = document.createElement("p");
          p.textContent = "Total: " + d + " ms";
          n.appendChild(p);
          d = document.createElement("p");
          d.textContent = "Self: " + a + " ms (" + c + "%)";
          n.appendChild(d);
          if (a = b.getStatistics(m.kind)) {
            c = document.createElement("p"), c.textContent = "Count: " + a.count, n.appendChild(c), c = Math.round(1E5 * a.totalTime) / 1E5, d = document.createElement("p"), d.textContent = "All Total: " + c + " ms", n.appendChild(d), a = Math.round(1E5 * a.selfTime) / 1E5, c = document.createElement("p"), c.textContent = "All Self: " + a + " ms", n.appendChild(c);
          }
          this.appendDataElements(n, m.startData);
          this.appendDataElements(n, m.endData);
          return n;
        };
        f.prototype.appendDataElements = function(f, m) {
          if (!b.isNullOrUndefined(m)) {
            f.appendChild(document.createElement("hr"));
            var d;
            if (b.isObject(m)) {
              for (var a in m) {
                d = document.createElement("p"), d.textContent = a + ": " + m[a], f.appendChild(d);
              }
            } else {
              d = document.createElement("p"), d.textContent = m.toString(), f.appendChild(d);
            }
          }
        };
        f.prototype.removeTooltipContent = function() {
          for (var b = this._tooltip;b.firstChild;) {
            b.removeChild(b.firstChild);
          }
        };
        return f;
      }();
      g.Controller = f;
    })(k.Profiler || (k.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.NumberUtilities.clamp, k = function() {
        function b(d) {
          this.value = d;
        }
        b.prototype.toString = function() {
          return this.value;
        };
        b.AUTO = new b("auto");
        b.DEFAULT = new b("default");
        b.NONE = new b("none");
        b.HELP = new b("help");
        b.POINTER = new b("pointer");
        b.PROGRESS = new b("progress");
        b.WAIT = new b("wait");
        b.CELL = new b("cell");
        b.CROSSHAIR = new b("crosshair");
        b.TEXT = new b("text");
        b.ALIAS = new b("alias");
        b.COPY = new b("copy");
        b.MOVE = new b("move");
        b.NO_DROP = new b("no-drop");
        b.NOT_ALLOWED = new b("not-allowed");
        b.ALL_SCROLL = new b("all-scroll");
        b.COL_RESIZE = new b("col-resize");
        b.ROW_RESIZE = new b("row-resize");
        b.N_RESIZE = new b("n-resize");
        b.E_RESIZE = new b("e-resize");
        b.S_RESIZE = new b("s-resize");
        b.W_RESIZE = new b("w-resize");
        b.NE_RESIZE = new b("ne-resize");
        b.NW_RESIZE = new b("nw-resize");
        b.SE_RESIZE = new b("se-resize");
        b.SW_RESIZE = new b("sw-resize");
        b.EW_RESIZE = new b("ew-resize");
        b.NS_RESIZE = new b("ns-resize");
        b.NESW_RESIZE = new b("nesw-resize");
        b.NWSE_RESIZE = new b("nwse-resize");
        b.ZOOM_IN = new b("zoom-in");
        b.ZOOM_OUT = new b("zoom-out");
        b.GRAB = new b("grab");
        b.GRABBING = new b("grabbing");
        return b;
      }();
      g.MouseCursor = k;
      var s = function() {
        function b(d, a) {
          this._target = d;
          this._eventTarget = a;
          this._wheelDisabled = !1;
          this._boundOnMouseDown = this._onMouseDown.bind(this);
          this._boundOnMouseUp = this._onMouseUp.bind(this);
          this._boundOnMouseOver = this._onMouseOver.bind(this);
          this._boundOnMouseOut = this._onMouseOut.bind(this);
          this._boundOnMouseMove = this._onMouseMove.bind(this);
          this._boundOnMouseWheel = this._onMouseWheel.bind(this);
          this._boundOnDrag = this._onDrag.bind(this);
          a.addEventListener("mousedown", this._boundOnMouseDown, !1);
          a.addEventListener("mouseover", this._boundOnMouseOver, !1);
          a.addEventListener("mouseout", this._boundOnMouseOut, !1);
          a.addEventListener("onwheel" in document ? "wheel" : "mousewheel", this._boundOnMouseWheel, !1);
        }
        b.prototype.destroy = function() {
          var b = this._eventTarget;
          b.removeEventListener("mousedown", this._boundOnMouseDown);
          b.removeEventListener("mouseover", this._boundOnMouseOver);
          b.removeEventListener("mouseout", this._boundOnMouseOut);
          b.removeEventListener("onwheel" in document ? "wheel" : "mousewheel", this._boundOnMouseWheel);
          window.removeEventListener("mousemove", this._boundOnDrag);
          window.removeEventListener("mouseup", this._boundOnMouseUp);
          this._killHoverCheck();
          this._target = this._eventTarget = null;
        };
        b.prototype.updateCursor = function(d) {
          if (!b._cursorOwner || b._cursorOwner === this._target) {
            var a = this._eventTarget.parentElement;
            b._cursor !== d && (b._cursor = d, ["", "-moz-", "-webkit-"].forEach(function(c) {
              a.style.cursor = c + d;
            }));
            b._cursorOwner = b._cursor === k.DEFAULT ? null : this._target;
          }
        };
        b.prototype._onMouseDown = function(b) {
          this._killHoverCheck();
          if (0 === b.button) {
            var a = this._getTargetMousePos(b, b.target);
            this._dragInfo = {start:a, current:a, delta:{x:0, y:0}, hasMoved:!1, originalTarget:b.target};
            window.addEventListener("mousemove", this._boundOnDrag, !1);
            window.addEventListener("mouseup", this._boundOnMouseUp, !1);
            this._target.onMouseDown(a.x, a.y);
          }
        };
        b.prototype._onDrag = function(b) {
          var a = this._dragInfo;
          b = this._getTargetMousePos(b, a.originalTarget);
          var c = {x:b.x - a.start.x, y:b.y - a.start.y};
          a.current = b;
          a.delta = c;
          a.hasMoved = !0;
          this._target.onDrag(a.start.x, a.start.y, b.x, b.y, c.x, c.y);
        };
        b.prototype._onMouseUp = function(b) {
          window.removeEventListener("mousemove", this._boundOnDrag);
          window.removeEventListener("mouseup", this._boundOnMouseUp);
          var a = this;
          b = this._dragInfo;
          if (b.hasMoved) {
            this._target.onDragEnd(b.start.x, b.start.y, b.current.x, b.current.y, b.delta.x, b.delta.y);
          } else {
            this._target.onClick(b.current.x, b.current.y);
          }
          this._dragInfo = null;
          this._wheelDisabled = !0;
          setTimeout(function() {
            a._wheelDisabled = !1;
          }, 500);
        };
        b.prototype._onMouseOver = function(b) {
          b.target.addEventListener("mousemove", this._boundOnMouseMove, !1);
          if (!this._dragInfo) {
            var a = this._getTargetMousePos(b, b.target);
            this._target.onMouseOver(a.x, a.y);
            this._startHoverCheck(b);
          }
        };
        b.prototype._onMouseOut = function(b) {
          b.target.removeEventListener("mousemove", this._boundOnMouseMove, !1);
          if (!this._dragInfo) {
            this._target.onMouseOut();
          }
          this._killHoverCheck();
        };
        b.prototype._onMouseMove = function(b) {
          if (!this._dragInfo) {
            var a = this._getTargetMousePos(b, b.target);
            this._target.onMouseMove(a.x, a.y);
            this._killHoverCheck();
            this._startHoverCheck(b);
          }
        };
        b.prototype._onMouseWheel = function(b) {
          if (!(b.altKey || b.metaKey || b.ctrlKey || b.shiftKey || (b.preventDefault(), this._dragInfo || this._wheelDisabled))) {
            var a = this._getTargetMousePos(b, b.target);
            b = f("undefined" !== typeof b.deltaY ? b.deltaY / 16 : -b.wheelDelta / 40, -1, 1);
            this._target.onMouseWheel(a.x, a.y, Math.pow(1.2, b) - 1);
          }
        };
        b.prototype._startHoverCheck = function(d) {
          this._hoverInfo = {isHovering:!1, timeoutHandle:setTimeout(this._onMouseMoveIdleHandler.bind(this), b.HOVER_TIMEOUT), pos:this._getTargetMousePos(d, d.target)};
        };
        b.prototype._killHoverCheck = function() {
          if (this._hoverInfo) {
            clearTimeout(this._hoverInfo.timeoutHandle);
            if (this._hoverInfo.isHovering) {
              this._target.onHoverEnd();
            }
            this._hoverInfo = null;
          }
        };
        b.prototype._onMouseMoveIdleHandler = function() {
          var b = this._hoverInfo;
          b.isHovering = !0;
          this._target.onHoverStart(b.pos.x, b.pos.y);
        };
        b.prototype._getTargetMousePos = function(b, a) {
          var c = a.getBoundingClientRect();
          return{x:b.clientX - c.left, y:b.clientY - c.top};
        };
        b.HOVER_TIMEOUT = 500;
        b._cursor = k.DEFAULT;
        return b;
      }();
      g.MouseController = s;
    })(k.Profiler || (k.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        b[b.NONE = 0] = "NONE";
        b[b.WINDOW = 1] = "WINDOW";
        b[b.HANDLE_LEFT = 2] = "HANDLE_LEFT";
        b[b.HANDLE_RIGHT = 3] = "HANDLE_RIGHT";
        b[b.HANDLE_BOTH = 4] = "HANDLE_BOTH";
      })(b.FlameChartDragTarget || (b.FlameChartDragTarget = {}));
      var f = function() {
        function f(s) {
          this._controller = s;
          this._initialized = !1;
          this._canvas = document.createElement("canvas");
          this._context = this._canvas.getContext("2d");
          this._mouseController = new b.MouseController(this, this._canvas);
          s = s.container;
          s.appendChild(this._canvas);
          s = s.getBoundingClientRect();
          this.setSize(s.width);
        }
        Object.defineProperty(f.prototype, "canvas", {get:function() {
          return this._canvas;
        }, enumerable:!0, configurable:!0});
        f.prototype.setSize = function(b, f) {
          "undefined" === typeof f && (f = 20);
          this._width = b;
          this._height = f;
          this._resetCanvas();
          this.draw();
        };
        f.prototype.initialize = function(b, f) {
          this._initialized = !0;
          this.setRange(b, f);
          this.setWindow(b, f, !1);
          this.draw();
        };
        f.prototype.setWindow = function(b, f, d) {
          "undefined" === typeof d && (d = !0);
          this._windowStart = b;
          this._windowEnd = f;
          !d || this.draw();
        };
        f.prototype.setRange = function(b, f) {
          var d = !1;
          "undefined" === typeof d && (d = !0);
          this._rangeStart = b;
          this._rangeEnd = f;
          !d || this.draw();
        };
        f.prototype.destroy = function() {
          this._mouseController.destroy();
          this._mouseController = null;
          this._controller.container.removeChild(this._canvas);
          this._controller = null;
        };
        f.prototype._resetCanvas = function() {
          var b = window.devicePixelRatio, f = this._canvas;
          f.width = this._width * b;
          f.height = this._height * b;
          f.style.width = this._width + "px";
          f.style.height = this._height + "px";
        };
        f.prototype.draw = function() {
        };
        f.prototype._almostEq = function(b, f) {
          var d;
          "undefined" === typeof d && (d = 10);
          return Math.abs(b - f) < 1 / Math.pow(10, d);
        };
        f.prototype._windowEqRange = function() {
          return this._almostEq(this._windowStart, this._rangeStart) && this._almostEq(this._windowEnd, this._rangeEnd);
        };
        f.prototype._decimalPlaces = function(b) {
          return(+b).toFixed(10).replace(/^-?\d*\.?|0+$/g, "").length;
        };
        f.prototype._toPixelsRelative = function(b) {
          return 0;
        };
        f.prototype._toPixels = function(b) {
          return 0;
        };
        f.prototype._toTimeRelative = function(b) {
          return 0;
        };
        f.prototype._toTime = function(b) {
          return 0;
        };
        f.prototype.onMouseWheel = function(b, m, d) {
          b = this._toTime(b);
          m = this._windowStart;
          var a = this._windowEnd, c = a - m;
          d = Math.max((f.MIN_WINDOW_LEN - c) / c, d);
          this._controller.setWindow(m + (m - b) * d, a + (a - b) * d);
          this.onHoverEnd();
        };
        f.prototype.onMouseDown = function(b, f) {
        };
        f.prototype.onMouseMove = function(b, f) {
        };
        f.prototype.onMouseOver = function(b, f) {
        };
        f.prototype.onMouseOut = function() {
        };
        f.prototype.onDrag = function(b, f, d, a, c, n) {
        };
        f.prototype.onDragEnd = function(b, f, d, a, c, n) {
        };
        f.prototype.onClick = function(b, f) {
        };
        f.prototype.onHoverStart = function(b, f) {
        };
        f.prototype.onHoverEnd = function() {
        };
        f.DRAGHANDLE_WIDTH = 4;
        f.MIN_WINDOW_LEN = .1;
        return f;
      }();
      b.FlameChartBase = f;
    })(b.Profiler || (b.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.StringUtilities.trimMiddle, k = b.ObjectUtilities.createEmptyObject, s = function(m) {
        function d(a, b) {
          m.call(this, a);
          this._textWidth = {};
          this._minFrameWidthInPixels = 1;
          this._snapshot = b;
          this._kindStyle = k();
        }
        __extends(d, m);
        d.prototype.setSize = function(a, b) {
          m.prototype.setSize.call(this, a, b || this._initialized ? 12.5 * this._maxDepth : 100);
        };
        d.prototype.initialize = function(a, b) {
          this._initialized = !0;
          this._maxDepth = this._snapshot.maxDepth;
          this.setRange(a, b);
          this.setWindow(a, b, !1);
          this.setSize(this._width, 12.5 * this._maxDepth);
        };
        d.prototype.destroy = function() {
          m.prototype.destroy.call(this);
          this._snapshot = null;
        };
        d.prototype.draw = function() {
          var a = this._context, c = window.devicePixelRatio;
          b.ColorStyle.reset();
          a.save();
          a.scale(c, c);
          a.fillStyle = this._controller.theme.bodyBackground(1);
          a.fillRect(0, 0, this._width, this._height);
          this._initialized && this._drawChildren(this._snapshot);
          a.restore();
        };
        d.prototype._drawChildren = function(a, b) {
          "undefined" === typeof b && (b = 0);
          var d = a.getChildRange(this._windowStart, this._windowEnd);
          if (d) {
            for (var p = d.startIndex;p <= d.endIndex;p++) {
              var e = a.children[p];
              this._drawFrame(e, b) && this._drawChildren(e, b + 1);
            }
          }
        };
        d.prototype._drawFrame = function(a, c) {
          var d = this._context, p = this._toPixels(a.startTime), e = this._toPixels(a.endTime), q = e - p;
          if (q <= this._minFrameWidthInPixels) {
            return d.fillStyle = this._controller.theme.tabToolbar(1), d.fillRect(p, 12.5 * c, this._minFrameWidthInPixels, 12 + 12.5 * (a.maxDepth - a.depth)), !1;
          }
          0 > p && (e = q + p, p = 0);
          var e = e - p, l = this._kindStyle[a.kind.id];
          l || (l = b.ColorStyle.randomStyle(), l = this._kindStyle[a.kind.id] = {bgColor:l, textColor:b.ColorStyle.contrastStyle(l)});
          d.save();
          d.fillStyle = l.bgColor;
          d.fillRect(p, 12.5 * c, e, 12);
          12 < q && (q = a.kind.name) && q.length && (q = this._prepareText(d, q, e - 4), q.length && (d.fillStyle = l.textColor, d.textBaseline = "bottom", d.fillText(q, p + 2, 12.5 * (c + 1) - 1)));
          d.restore();
          return!0;
        };
        d.prototype._prepareText = function(a, b, d) {
          var p = this._measureWidth(a, b);
          if (d > p) {
            return b;
          }
          for (var p = 3, e = b.length;p < e;) {
            var q = p + e >> 1;
            this._measureWidth(a, f(b, q)) < d ? p = q + 1 : e = q;
          }
          b = f(b, e - 1);
          p = this._measureWidth(a, b);
          return p <= d ? b : "";
        };
        d.prototype._measureWidth = function(a, b) {
          var d = this._textWidth[b];
          d || (d = a.measureText(b).width, this._textWidth[b] = d);
          return d;
        };
        d.prototype._toPixelsRelative = function(a) {
          return a * this._width / (this._windowEnd - this._windowStart);
        };
        d.prototype._toPixels = function(a) {
          return this._toPixelsRelative(a - this._windowStart);
        };
        d.prototype._toTimeRelative = function(a) {
          return a * (this._windowEnd - this._windowStart) / this._width;
        };
        d.prototype._toTime = function(a) {
          return this._toTimeRelative(a) + this._windowStart;
        };
        d.prototype._getFrameAtPosition = function(a, b) {
          var d = 1 + b / 12.5 | 0, p = this._snapshot.query(this._toTime(a));
          if (p && p.depth >= d) {
            for (;p && p.depth > d;) {
              p = p.parent;
            }
            return p;
          }
          return null;
        };
        d.prototype.onMouseDown = function(a, b) {
          this._windowEqRange() || (this._mouseController.updateCursor(g.MouseCursor.ALL_SCROLL), this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:1});
        };
        d.prototype.onMouseMove = function(a, b) {
        };
        d.prototype.onMouseOver = function(a, b) {
        };
        d.prototype.onMouseOut = function() {
        };
        d.prototype.onDrag = function(a, b, d, p, e, q) {
          if (a = this._dragInfo) {
            e = this._toTimeRelative(-e), this._controller.setWindow(a.windowStartInitial + e, a.windowEndInitial + e);
          }
        };
        d.prototype.onDragEnd = function(a, b, d, p, e, q) {
          this._dragInfo = null;
          this._mouseController.updateCursor(g.MouseCursor.DEFAULT);
        };
        d.prototype.onClick = function(a, b) {
          this._dragInfo = null;
          this._mouseController.updateCursor(g.MouseCursor.DEFAULT);
        };
        d.prototype.onHoverStart = function(a, b) {
          var d = this._getFrameAtPosition(a, b);
          d && (this._hoveredFrame = d, this._controller.showTooltip(this, d, a, b));
        };
        d.prototype.onHoverEnd = function() {
          this._hoveredFrame && (this._hoveredFrame = null, this._controller.hideTooltip());
        };
        d.prototype.getStatistics = function(a) {
          var b = this._snapshot;
          b.statistics || b.calculateStatistics();
          return b.statistics[a.id];
        };
        return d;
      }(g.FlameChartBase);
      g.FlameChart = s;
    })(k.Profiler || (k.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.NumberUtilities.clamp;
      (function(b) {
        b[b.OVERLAY = 0] = "OVERLAY";
        b[b.STACK = 1] = "STACK";
        b[b.UNION = 2] = "UNION";
      })(g.FlameChartOverviewMode || (g.FlameChartOverviewMode = {}));
      var k = function(b) {
        function m(d, a) {
          "undefined" === typeof a && (a = 1);
          this._mode = a;
          this._overviewCanvasDirty = !0;
          this._overviewCanvas = document.createElement("canvas");
          this._overviewContext = this._overviewCanvas.getContext("2d");
          b.call(this, d);
        }
        __extends(m, b);
        m.prototype.setSize = function(d, a) {
          b.prototype.setSize.call(this, d, a || 64);
        };
        Object.defineProperty(m.prototype, "mode", {set:function(b) {
          this._mode = b;
          this.draw();
        }, enumerable:!0, configurable:!0});
        m.prototype._resetCanvas = function() {
          b.prototype._resetCanvas.call(this);
          this._overviewCanvas.width = this._canvas.width;
          this._overviewCanvas.height = this._canvas.height;
          this._overviewCanvasDirty = !0;
        };
        m.prototype.draw = function() {
          var b = this._context, a = window.devicePixelRatio, c = this._width, n = this._height;
          b.save();
          b.scale(a, a);
          b.fillStyle = this._controller.theme.bodyBackground(1);
          b.fillRect(0, 0, c, n);
          b.restore();
          this._initialized && (this._overviewCanvasDirty && (this._drawChart(), this._overviewCanvasDirty = !1), b.drawImage(this._overviewCanvas, 0, 0), this._drawSelection());
        };
        m.prototype._drawSelection = function() {
          var b = this._context, a = this._height, c = window.devicePixelRatio, n = this._selection ? this._selection.left : this._toPixels(this._windowStart), p = this._selection ? this._selection.right : this._toPixels(this._windowEnd), e = this._controller.theme;
          b.save();
          b.scale(c, c);
          this._selection ? (b.fillStyle = e.selectionText(.15), b.fillRect(n, 1, p - n, a - 1), b.fillStyle = "rgba(133, 0, 0, 1)", b.fillRect(n + .5, 0, p - n - 1, 4), b.fillRect(n + .5, a - 4, p - n - 1, 4)) : (b.fillStyle = e.bodyBackground(.4), b.fillRect(0, 1, n, a - 1), b.fillRect(p, 1, this._width, a - 1));
          b.beginPath();
          b.moveTo(n, 0);
          b.lineTo(n, a);
          b.moveTo(p, 0);
          b.lineTo(p, a);
          b.lineWidth = .5;
          b.strokeStyle = e.foregroundTextGrey(1);
          b.stroke();
          a = Math.abs((this._selection ? this._toTime(this._selection.right) : this._windowEnd) - (this._selection ? this._toTime(this._selection.left) : this._windowStart));
          b.fillStyle = e.selectionText(.5);
          b.font = "8px sans-serif";
          b.textBaseline = "alphabetic";
          b.textAlign = "end";
          b.fillText(a.toFixed(2), Math.min(n, p) - 4, 10);
          b.fillText((a / 60).toFixed(2), Math.min(n, p) - 4, 20);
          b.restore();
        };
        m.prototype._drawChart = function() {
          var b = window.devicePixelRatio, a = this._height, c = this._controller.activeProfile, n = 4 * this._width, p = c.totalTime / n, e = this._overviewContext, q = this._controller.theme.blueHighlight(1);
          e.save();
          e.translate(0, b * a);
          var l = -b * a / (c.maxDepth - 1);
          e.scale(b / 4, l);
          e.clearRect(0, 0, n, c.maxDepth - 1);
          1 == this._mode && e.scale(1, 1 / c.snapshotCount);
          for (var f = 0, w = c.snapshotCount;f < w;f++) {
            var r = c.getSnapshotAt(f);
            if (r) {
              var h = null, x = 0;
              e.beginPath();
              e.moveTo(0, 0);
              for (var y = 0;y < n;y++) {
                x = c.startTime + y * p, x = (h = h ? h.queryNext(x) : r.query(x)) ? h.getDepth() - 1 : 0, e.lineTo(y, x);
              }
              e.lineTo(y, 0);
              e.fillStyle = q;
              e.fill();
              1 == this._mode && e.translate(0, -a * b / l);
            }
          }
          e.restore();
        };
        m.prototype._toPixelsRelative = function(b) {
          return b * this._width / (this._rangeEnd - this._rangeStart);
        };
        m.prototype._toPixels = function(b) {
          return this._toPixelsRelative(b - this._rangeStart);
        };
        m.prototype._toTimeRelative = function(b) {
          return b * (this._rangeEnd - this._rangeStart) / this._width;
        };
        m.prototype._toTime = function(b) {
          return this._toTimeRelative(b) + this._rangeStart;
        };
        m.prototype._getDragTargetUnderCursor = function(b, a) {
          if (0 <= a && a < this._height) {
            var c = this._toPixels(this._windowStart), n = this._toPixels(this._windowEnd), p = 2 + g.FlameChartBase.DRAGHANDLE_WIDTH / 2, e = b >= c - p && b <= c + p, q = b >= n - p && b <= n + p;
            if (e && q) {
              return 4;
            }
            if (e) {
              return 2;
            }
            if (q) {
              return 3;
            }
            if (!this._windowEqRange() && b > c + p && b < n - p) {
              return 1;
            }
          }
          return 0;
        };
        m.prototype.onMouseDown = function(b, a) {
          var c = this._getDragTargetUnderCursor(b, a);
          0 === c ? (this._selection = {left:b, right:b}, this.draw()) : (1 === c && this._mouseController.updateCursor(g.MouseCursor.GRABBING), this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:c});
        };
        m.prototype.onMouseMove = function(b, a) {
          var c = g.MouseCursor.DEFAULT, n = this._getDragTargetUnderCursor(b, a);
          0 === n || this._selection || (c = 1 === n ? g.MouseCursor.GRAB : g.MouseCursor.EW_RESIZE);
          this._mouseController.updateCursor(c);
        };
        m.prototype.onMouseOver = function(b, a) {
          this.onMouseMove(b, a);
        };
        m.prototype.onMouseOut = function() {
          this._mouseController.updateCursor(g.MouseCursor.DEFAULT);
        };
        m.prototype.onDrag = function(b, a, c, n, p, e) {
          if (this._selection) {
            this._selection = {left:b, right:f(c, 0, this._width - 1)}, this.draw();
          } else {
            b = this._dragInfo;
            if (4 === b.target) {
              if (0 !== p) {
                b.target = 0 > p ? 2 : 3;
              } else {
                return;
              }
            }
            a = this._windowStart;
            c = this._windowEnd;
            p = this._toTimeRelative(p);
            switch(b.target) {
              case 1:
                a = b.windowStartInitial + p;
                c = b.windowEndInitial + p;
                break;
              case 2:
                a = f(b.windowStartInitial + p, this._rangeStart, c - g.FlameChartBase.MIN_WINDOW_LEN);
                break;
              case 3:
                c = f(b.windowEndInitial + p, a + g.FlameChartBase.MIN_WINDOW_LEN, this._rangeEnd);
                break;
              default:
                return;
            }
            this._controller.setWindow(a, c);
          }
        };
        m.prototype.onDragEnd = function(b, a, c, n, p, e) {
          this._selection && (this._selection = null, this._controller.setWindow(this._toTime(b), this._toTime(c)));
          this._dragInfo = null;
          this.onMouseMove(c, n);
        };
        m.prototype.onClick = function(b, a) {
          this._selection = this._dragInfo = null;
          this._windowEqRange() || (0 === this._getDragTargetUnderCursor(b, a) && this._controller.moveWindowTo(this._toTime(b)), this.onMouseMove(b, a));
          this.draw();
        };
        m.prototype.onHoverStart = function(b, a) {
        };
        m.prototype.onHoverEnd = function() {
        };
        return m;
      }(g.FlameChartBase);
      g.FlameChartOverview = k;
    })(k.Profiler || (k.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.NumberUtilities.clamp;
      (function(b) {
        b[b.OVERVIEW = 0] = "OVERVIEW";
        b[b.CHART = 1] = "CHART";
      })(g.FlameChartHeaderType || (g.FlameChartHeaderType = {}));
      var k = function(b) {
        function m(d, a) {
          this._type = a;
          b.call(this, d);
        }
        __extends(m, b);
        m.prototype.draw = function() {
          var b = this._context, a = window.devicePixelRatio, c = this._width, n = this._height;
          b.save();
          b.scale(a, a);
          b.fillStyle = this._controller.theme.tabToolbar(1);
          b.fillRect(0, 0, c, n);
          this._initialized && (0 == this._type ? (a = this._toPixels(this._windowStart), c = this._toPixels(this._windowEnd), b.fillStyle = this._controller.theme.bodyBackground(1), b.fillRect(a, 0, c - a, n), this._drawLabels(this._rangeStart, this._rangeEnd), this._drawDragHandle(a), this._drawDragHandle(c)) : this._drawLabels(this._windowStart, this._windowEnd));
          b.restore();
        };
        m.prototype._drawLabels = function(b, a) {
          var c = this._context, n = this._calculateTickInterval(b, a), p = Math.ceil(b / n) * n, e = 500 <= n, q = e ? 1E3 : 1, l = this._decimalPlaces(n / q), e = e ? "s" : "ms", f = this._toPixels(p), w = this._height / 2, r = this._controller.theme;
          c.lineWidth = 1;
          c.strokeStyle = r.contentTextDarkGrey(.5);
          c.fillStyle = r.contentTextDarkGrey(1);
          c.textAlign = "right";
          c.textBaseline = "middle";
          c.font = "11px sans-serif";
          for (r = this._width + m.TICK_MAX_WIDTH;f < r;) {
            c.fillText((p / q).toFixed(l) + " " + e, f - 7, w + 1), c.beginPath(), c.moveTo(f, 0), c.lineTo(f, this._height + 1), c.closePath(), c.stroke(), p += n, f = this._toPixels(p);
          }
        };
        m.prototype._calculateTickInterval = function(b, a) {
          var c = (a - b) / (this._width / m.TICK_MAX_WIDTH), n = Math.pow(10, Math.floor(Math.log(c) / Math.LN10)), c = c / n;
          return 5 < c ? 10 * n : 2 < c ? 5 * n : 1 < c ? 2 * n : n;
        };
        m.prototype._drawDragHandle = function(b) {
          var a = this._context;
          a.lineWidth = 2;
          a.strokeStyle = this._controller.theme.bodyBackground(1);
          a.fillStyle = this._controller.theme.foregroundTextGrey(.7);
          this._drawRoundedRect(a, b - g.FlameChartBase.DRAGHANDLE_WIDTH / 2, g.FlameChartBase.DRAGHANDLE_WIDTH, this._height - 2);
        };
        m.prototype._drawRoundedRect = function(b, a, c, n) {
          var p, e = !0;
          "undefined" === typeof e && (e = !0);
          "undefined" === typeof p && (p = !0);
          b.beginPath();
          b.moveTo(a + 2, 1);
          b.lineTo(a + c - 2, 1);
          b.quadraticCurveTo(a + c, 1, a + c, 3);
          b.lineTo(a + c, 1 + n - 2);
          b.quadraticCurveTo(a + c, 1 + n, a + c - 2, 1 + n);
          b.lineTo(a + 2, 1 + n);
          b.quadraticCurveTo(a, 1 + n, a, 1 + n - 2);
          b.lineTo(a, 3);
          b.quadraticCurveTo(a, 1, a + 2, 1);
          b.closePath();
          e && b.stroke();
          p && b.fill();
        };
        m.prototype._toPixelsRelative = function(b) {
          return b * this._width / (0 === this._type ? this._rangeEnd - this._rangeStart : this._windowEnd - this._windowStart);
        };
        m.prototype._toPixels = function(b) {
          return this._toPixelsRelative(b - (0 === this._type ? this._rangeStart : this._windowStart));
        };
        m.prototype._toTimeRelative = function(b) {
          return b * (0 === this._type ? this._rangeEnd - this._rangeStart : this._windowEnd - this._windowStart) / this._width;
        };
        m.prototype._toTime = function(b) {
          return this._toTimeRelative(b) + (0 === this._type ? this._rangeStart : this._windowStart);
        };
        m.prototype._getDragTargetUnderCursor = function(b, a) {
          if (0 <= a && a < this._height) {
            if (0 === this._type) {
              var c = this._toPixels(this._windowStart), n = this._toPixels(this._windowEnd), p = 2 + g.FlameChartBase.DRAGHANDLE_WIDTH / 2, c = b >= c - p && b <= c + p, n = b >= n - p && b <= n + p;
              if (c && n) {
                return 4;
              }
              if (c) {
                return 2;
              }
              if (n) {
                return 3;
              }
            }
            if (!this._windowEqRange()) {
              return 1;
            }
          }
          return 0;
        };
        m.prototype.onMouseDown = function(b, a) {
          var c = this._getDragTargetUnderCursor(b, a);
          1 === c && this._mouseController.updateCursor(g.MouseCursor.GRABBING);
          this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:c};
        };
        m.prototype.onMouseMove = function(b, a) {
          var c = g.MouseCursor.DEFAULT, n = this._getDragTargetUnderCursor(b, a);
          0 !== n && (1 !== n ? c = g.MouseCursor.EW_RESIZE : 1 !== n || this._windowEqRange() || (c = g.MouseCursor.GRAB));
          this._mouseController.updateCursor(c);
        };
        m.prototype.onMouseOver = function(b, a) {
          this.onMouseMove(b, a);
        };
        m.prototype.onMouseOut = function() {
          this._mouseController.updateCursor(g.MouseCursor.DEFAULT);
        };
        m.prototype.onDrag = function(b, a, c, n, p, e) {
          b = this._dragInfo;
          if (4 === b.target) {
            if (0 !== p) {
              b.target = 0 > p ? 2 : 3;
            } else {
              return;
            }
          }
          a = this._windowStart;
          c = this._windowEnd;
          p = this._toTimeRelative(p);
          switch(b.target) {
            case 1:
              c = 0 === this._type ? 1 : -1;
              a = b.windowStartInitial + c * p;
              c = b.windowEndInitial + c * p;
              break;
            case 2:
              a = f(b.windowStartInitial + p, this._rangeStart, c - g.FlameChartBase.MIN_WINDOW_LEN);
              break;
            case 3:
              c = f(b.windowEndInitial + p, a + g.FlameChartBase.MIN_WINDOW_LEN, this._rangeEnd);
              break;
            default:
              return;
          }
          this._controller.setWindow(a, c);
        };
        m.prototype.onDragEnd = function(b, a, c, n, p, e) {
          this._dragInfo = null;
          this.onMouseMove(c, n);
        };
        m.prototype.onClick = function(b, a) {
          1 === this._dragInfo.target && this._mouseController.updateCursor(g.MouseCursor.GRAB);
        };
        m.prototype.onHoverStart = function(b, a) {
        };
        m.prototype.onHoverEnd = function() {
        };
        m.TICK_MAX_WIDTH = 75;
        return m;
      }(g.FlameChartBase);
      g.FlameChartHeader = k;
    })(k.Profiler || (k.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        var g = function() {
          function b(d, a, c, n, p) {
            this.pageLoaded = d;
            this.threadsTotal = a;
            this.threadsLoaded = c;
            this.threadFilesTotal = n;
            this.threadFilesLoaded = p;
          }
          b.prototype.toString = function() {
            return "[" + ["pageLoaded", "threadsTotal", "threadsLoaded", "threadFilesTotal", "threadFilesLoaded"].map(function(b, a, c) {
              return b + ":" + this[b];
            }, this).join(", ") + "]";
          };
          return b;
        }();
        b.TraceLoggerProgressInfo = g;
        var k = function() {
          function m(b) {
            this._baseUrl = b;
            this._threads = [];
            this._progressInfo = null;
          }
          m.prototype.loadPage = function(b, a, c) {
            this._threads = [];
            this._pageLoadCallback = a;
            this._pageLoadProgressCallback = c;
            this._progressInfo = new g(!1, 0, 0, 0, 0);
            this._loadData([b], this._onLoadPage.bind(this));
          };
          Object.defineProperty(m.prototype, "buffers", {get:function() {
            for (var b = [], a = 0, c = this._threads.length;a < c;a++) {
              b.push(this._threads[a].buffer);
            }
            return b;
          }, enumerable:!0, configurable:!0});
          m.prototype._onProgress = function() {
            this._pageLoadProgressCallback && this._pageLoadProgressCallback.call(this, this._progressInfo);
          };
          m.prototype._onLoadPage = function(d) {
            if (d && 1 == d.length) {
              var a = this, c = 0;
              d = d[0];
              var n = d.length;
              this._threads = Array(n);
              this._progressInfo.pageLoaded = !0;
              this._progressInfo.threadsTotal = n;
              for (var p = 0;p < d.length;p++) {
                var e = d[p], q = [e.dict, e.tree];
                e.corrections && q.push(e.corrections);
                this._progressInfo.threadFilesTotal += q.length;
                this._loadData(q, function(e) {
                  return function(d) {
                    d && (d = new b.Thread(d), d.buffer.name = "Thread " + e, a._threads[e] = d);
                    c++;
                    a._progressInfo.threadsLoaded++;
                    a._onProgress();
                    c === n && a._pageLoadCallback.call(a, null, a._threads);
                  };
                }(p), function(b) {
                  a._progressInfo.threadFilesLoaded++;
                  a._onProgress();
                });
              }
              this._onProgress();
            } else {
              this._pageLoadCallback.call(this, "Error loading page.", null);
            }
          };
          m.prototype._loadData = function(b, a, c) {
            var n = 0, p = 0, e = b.length, q = [];
            q.length = e;
            for (var l = 0;l < e;l++) {
              var f = this._baseUrl + b[l], w = new XMLHttpRequest, r = /\.tl$/i.test(f) ? "arraybuffer" : "json";
              w.open("GET", f, !0);
              w.responseType = r;
              w.onload = function(b, l) {
                return function(d) {
                  if ("json" === l) {
                    if (d = this.response, "string" === typeof d) {
                      try {
                        d = JSON.parse(d), q[b] = d;
                      } catch (r) {
                        p++;
                      }
                    } else {
                      q[b] = d;
                    }
                  } else {
                    q[b] = this.response;
                  }
                  ++n;
                  c && c(n);
                  n === e && a(q);
                };
              }(l, r);
              w.send();
            }
          };
          m.colors = "#0044ff #8c4b00 #cc5c33 #ff80c4 #ffbfd9 #ff8800 #8c5e00 #adcc33 #b380ff #bfd9ff #ffaa00 #8c0038 #bf8f30 #f780ff #cc99c9 #aaff00 #000073 #452699 #cc8166 #cca799 #000066 #992626 #cc6666 #ccc299 #ff6600 #526600 #992663 #cc6681 #99ccc2 #ff0066 #520066 #269973 #61994d #739699 #ffcc00 #006629 #269199 #94994d #738299 #ff0000 #590000 #234d8c #8c6246 #7d7399 #ee00ff #00474d #8c2385 #8c7546 #7c8c69 #eeff00 #4d003d #662e1a #62468c #8c6969 #6600ff #4c2900 #1a6657 #8c464f #8c6981 #44ff00 #401100 #1a2466 #663355 #567365 #d90074 #403300 #101d40 #59562d #66614d #cc0000 #002b40 #234010 #4c2626 #4d5e66 #00a3cc #400011 #231040 #4c3626 #464359 #0000bf #331b00 #80e6ff #311a33 #4d3939 #a69b00 #003329 #80ffb2 #331a20 #40303d #00a658 #40ffd9 #ffc480 #ffe1bf #332b26 #8c2500 #9933cc #80fff6 #ffbfbf #303326 #005e8c #33cc47 #b2ff80 #c8bfff #263332 #00708c #cc33ad #ffe680 #f2ffbf #262a33 #388c00 #335ccc #8091ff #bfffd9".split(" ");
          return m;
        }();
        b.TraceLogger = k;
      })(b.TraceLogger || (b.TraceLogger = {}));
    })(b.Profiler || (b.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        var k;
        (function(b) {
          b[b.START_HI = 0] = "START_HI";
          b[b.START_LO = 4] = "START_LO";
          b[b.STOP_HI = 8] = "STOP_HI";
          b[b.STOP_LO = 12] = "STOP_LO";
          b[b.TEXTID = 16] = "TEXTID";
          b[b.NEXTID = 20] = "NEXTID";
        })(k || (k = {}));
        k = function() {
          function f(m) {
            2 <= m.length && (this._text = m[0], this._data = new DataView(m[1]), this._buffer = new b.TimelineBuffer, this._walkTree(0));
          }
          Object.defineProperty(f.prototype, "buffer", {get:function() {
            return this._buffer;
          }, enumerable:!0, configurable:!0});
          f.prototype._walkTree = function(b) {
            var d = this._data, a = this._buffer;
            do {
              var c = b * f.ITEM_SIZE, n = 4294967295 * d.getUint32(c + 0) + d.getUint32(c + 4), p = 4294967295 * d.getUint32(c + 8) + d.getUint32(c + 12), e = d.getUint32(c + 16), c = d.getUint32(c + 20), q = 1 === (e & 1), e = e >>> 1, e = this._text[e];
              a.enter(e, null, n / 1E6);
              q && this._walkTree(b + 1);
              a.leave(e, null, p / 1E6);
              b = c;
            } while (0 !== b);
          };
          f.ITEM_SIZE = 24;
          return f;
        }();
        f.Thread = k;
      })(b.TraceLogger || (b.TraceLogger = {}));
    })(b.Profiler || (b.Profiler = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.NumberUtilities.clamp, k = function() {
        function b() {
          this.length = 0;
          this.lines = [];
          this.format = [];
          this.time = [];
          this.repeat = [];
          this.length = 0;
        }
        b.prototype.append = function(b, a) {
          var c = this.lines;
          0 < c.length && c[c.length - 1] === b ? this.repeat[c.length - 1]++ : (this.lines.push(b), this.repeat.push(1), this.format.push(a ? {backgroundFillStyle:a} : void 0), this.time.push(performance.now()), this.length++);
        };
        b.prototype.get = function(b) {
          return this.lines[b];
        };
        b.prototype.getFormat = function(b) {
          return this.format[b];
        };
        b.prototype.getTime = function(b) {
          return this.time[b];
        };
        b.prototype.getRepeat = function(b) {
          return this.repeat[b];
        };
        return b;
      }();
      g.Buffer = k;
      var s = function() {
        function b(d) {
          this.lineColor = "#2A2A2A";
          this.alternateLineColor = "#262626";
          this.textColor = "#FFFFFF";
          this.selectionColor = "#96C9F3";
          this.selectionTextColor = "#000000";
          this.ratio = 1;
          this.showLineNumbers = !0;
          this.showLineCounter = this.showLineTime = !1;
          this.canvas = d;
          this.canvas.focus();
          this.context = d.getContext("2d", {original:!0});
          this.context.fillStyle = "#FFFFFF";
          this.fontSize = 10;
          this.columnIndex = this.pageIndex = this.lineIndex = 0;
          this.selection = null;
          this.lineHeight = 15;
          this.hasFocus = !1;
          window.addEventListener("resize", this._resizeHandler.bind(this), !1);
          this._resizeHandler();
          this.textMarginBottom = this.textMarginLeft = 4;
          this.refreshFrequency = 0;
          this.buffer = new k;
          d.addEventListener("keydown", function(b) {
            var d = 0;
            switch(b.keyCode) {
              case h:
                this.showLineNumbers = !this.showLineNumbers;
                break;
              case x:
                this.showLineTime = !this.showLineTime;
                break;
              case e:
                d = -1;
                break;
              case q:
                d = 1;
                break;
              case a:
                d = -this.pageLineCount;
                break;
              case c:
                d = this.pageLineCount;
                break;
              case n:
                d = -this.lineIndex;
                break;
              case p:
                d = this.buffer.length - this.lineIndex;
                break;
              case l:
                this.columnIndex -= b.metaKey ? 10 : 1;
                0 > this.columnIndex && (this.columnIndex = 0);
                b.preventDefault();
                break;
              case f:
                this.columnIndex += b.metaKey ? 10 : 1;
                b.preventDefault();
                break;
              case w:
                b.metaKey && (this.selection = {start:0, end:this.buffer.length}, b.preventDefault());
                break;
              case r:
                if (b.metaKey) {
                  var g = "";
                  if (this.selection) {
                    for (var m = this.selection.start;m <= this.selection.end;m++) {
                      g += this.buffer.get(m) + "\n";
                    }
                  } else {
                    g = this.buffer.get(this.lineIndex);
                  }
                  alert(g);
                }
              ;
            }
            b.metaKey && (d *= this.pageLineCount);
            d && (this.scroll(d), b.preventDefault());
            d && b.shiftKey ? this.selection ? this.lineIndex > this.selection.start ? this.selection.end = this.lineIndex : this.selection.start = this.lineIndex : 0 < d ? this.selection = {start:this.lineIndex - d, end:this.lineIndex} : 0 > d && (this.selection = {start:this.lineIndex, end:this.lineIndex - d}) : d && (this.selection = null);
            this.paint();
          }.bind(this), !1);
          d.addEventListener("focus", function(a) {
            this.hasFocus = !0;
          }.bind(this), !1);
          d.addEventListener("blur", function(a) {
            this.hasFocus = !1;
          }.bind(this), !1);
          var a = 33, c = 34, n = 36, p = 35, e = 38, q = 40, l = 37, f = 39, w = 65, r = 67, h = 78, x = 84;
        }
        b.prototype.resize = function() {
          this._resizeHandler();
        };
        b.prototype._resizeHandler = function() {
          var b = this.canvas.parentElement, a = b.clientWidth, b = b.clientHeight - 1, c = window.devicePixelRatio || 1;
          1 !== c ? (this.ratio = c / 1, this.canvas.width = a * this.ratio, this.canvas.height = b * this.ratio, this.canvas.style.width = a + "px", this.canvas.style.height = b + "px") : (this.ratio = 1, this.canvas.width = a, this.canvas.height = b);
          this.pageLineCount = Math.floor(this.canvas.height / this.lineHeight);
        };
        b.prototype.gotoLine = function(b) {
          this.lineIndex = f(b, 0, this.buffer.length - 1);
        };
        b.prototype.scrollIntoView = function() {
          this.lineIndex < this.pageIndex ? this.pageIndex = this.lineIndex : this.lineIndex >= this.pageIndex + this.pageLineCount && (this.pageIndex = this.lineIndex - this.pageLineCount + 1);
        };
        b.prototype.scroll = function(b) {
          this.gotoLine(this.lineIndex + b);
          this.scrollIntoView();
        };
        b.prototype.paint = function() {
          var b = this.pageLineCount;
          this.pageIndex + b > this.buffer.length && (b = this.buffer.length - this.pageIndex);
          var a = this.textMarginLeft, c = a + (this.showLineNumbers ? 5 * (String(this.buffer.length).length + 2) : 0), n = c + (this.showLineTime ? 40 : 10), p = n + 25;
          this.context.font = this.fontSize + 'px Consolas, "Liberation Mono", Courier, monospace';
          this.context.setTransform(this.ratio, 0, 0, this.ratio, 0, 0);
          for (var e = this.canvas.width, q = this.lineHeight, l = 0;l < b;l++) {
            var f = l * this.lineHeight, w = this.pageIndex + l, r = this.buffer.get(w), h = this.buffer.getFormat(w), x = this.buffer.getRepeat(w), y = 1 < w ? this.buffer.getTime(w) - this.buffer.getTime(0) : 0;
            this.context.fillStyle = w % 2 ? this.lineColor : this.alternateLineColor;
            h && h.backgroundFillStyle && (this.context.fillStyle = h.backgroundFillStyle);
            this.context.fillRect(0, f, e, q);
            this.context.fillStyle = this.selectionTextColor;
            this.context.fillStyle = this.textColor;
            this.selection && w >= this.selection.start && w <= this.selection.end && (this.context.fillStyle = this.selectionColor, this.context.fillRect(0, f, e, q), this.context.fillStyle = this.selectionTextColor);
            this.hasFocus && w === this.lineIndex && (this.context.fillStyle = this.selectionColor, this.context.fillRect(0, f, e, q), this.context.fillStyle = this.selectionTextColor);
            0 < this.columnIndex && (r = r.substring(this.columnIndex));
            f = (l + 1) * this.lineHeight - this.textMarginBottom;
            this.showLineNumbers && this.context.fillText(String(w), a, f);
            this.showLineTime && this.context.fillText(y.toFixed(1).padLeft(" ", 6), c, f);
            1 < x && this.context.fillText(String(x).padLeft(" ", 3), n, f);
            this.context.fillText(r, p, f);
          }
        };
        b.prototype.refreshEvery = function(b) {
          function a() {
            c.paint();
            c.refreshFrequency && setTimeout(a, c.refreshFrequency);
          }
          var c = this;
          this.refreshFrequency = b;
          c.refreshFrequency && setTimeout(a, c.refreshFrequency);
        };
        b.prototype.isScrolledToBottom = function() {
          return this.lineIndex === this.buffer.length - 1;
        };
        return b;
      }();
      g.Terminal = s;
    })(k.Terminal || (k.Terminal = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      var f = function() {
        function b(f) {
          this._lastWeightedTime = this._lastTime = this._index = 0;
          this._gradient = "#FF0000 #FF1100 #FF2300 #FF3400 #FF4600 #FF5700 #FF6900 #FF7B00 #FF8C00 #FF9E00 #FFAF00 #FFC100 #FFD300 #FFE400 #FFF600 #F7FF00 #E5FF00 #D4FF00 #C2FF00 #B0FF00 #9FFF00 #8DFF00 #7CFF00 #6AFF00 #58FF00 #47FF00 #35FF00 #24FF00 #12FF00 #00FF00".split(" ");
          this._canvas = f;
          this._context = f.getContext("2d");
          window.addEventListener("resize", this._resizeHandler.bind(this), !1);
          this._resizeHandler();
        }
        b.prototype._resizeHandler = function() {
          var b = this._canvas.parentElement, f = b.clientWidth, b = b.clientHeight - 1, d = window.devicePixelRatio || 1;
          1 !== d ? (this._ratio = d / 1, this._canvas.width = f * this._ratio, this._canvas.height = b * this._ratio, this._canvas.style.width = f + "px", this._canvas.style.height = b + "px") : (this._ratio = 1, this._canvas.width = f, this._canvas.height = b);
        };
        b.prototype.tickAndRender = function(b) {
          "undefined" === typeof b && (b = !1);
          if (0 === this._lastTime) {
            this._lastTime = performance.now();
          } else {
            var f = (performance.now() - this._lastTime) * (1 - .9) + .9 * this._lastWeightedTime, d = this._context, a = 2 * this._ratio, c = (this._canvas.width - 20) / (a + 1) | 0, n = this._index++;
            this._index > c && (this._index = 0);
            d.globalAlpha = 1;
            d.fillStyle = "black";
            d.fillRect(20 + n * (a + 1), 0, 4 * a, this._canvas.height);
            c = 1E3 / 60 / f;
            d.fillStyle = this._gradient[c * (this._gradient.length - 1) | 0];
            d.globalAlpha = b ? .5 : 1;
            d.fillRect(20 + n * (a + 1), 0, a, this._canvas.height * c | 0);
            0 === n % 16 && (d.globalAlpha = 1, d.fillStyle = "black", d.fillRect(0, 0, 20, this._canvas.height), d.fillStyle = "white", d.font = "10px Arial", d.fillText((1E3 / f).toFixed(0), 2, 8));
            this._lastTime = performance.now();
            this._lastWeightedTime = f;
          }
        };
        return b;
      }();
      b.FPS = f;
    })(b.Mini || (b.Mini = {}));
  })(b.Tools || (b.Tools = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load Shared Dependencies");
console.time("Load AVM2 Dependencies");
(function(b) {
  (function(k) {
    k.timelineBuffer = new b.Tools.Profiler.TimelineBuffer("AVM2");
    k.counter = new b.Metrics.Counter(!0);
    k.countTimeline = function(b, f) {
      "undefined" === typeof f && (f = 1);
      k.timelineBuffer && k.timelineBuffer.count(b, f);
    };
    k.enterTimeline = function(b, f) {
    };
    k.leaveTimeline = function(b) {
    };
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    function g(b) {
      for (var g = 0;g < arguments.length - 1;g++) {
      }
      var k = b.message;
      Array.prototype.slice.call(arguments, 1).forEach(function(b, d) {
        k = k.replace("%" + (d + 1), b);
      });
      return "Error #" + b.code + ": " + k;
    }
    k.Errors = {CallOfNonFunctionError:{code:1006, message:"%1 is not a function."}, ConvertNullToObjectError:{code:1009, message:"Cannot access a property or method of a null object reference."}, ConvertUndefinedToObjectError:{code:1010, message:"A term is undefined and has no properties."}, ClassNotFoundError:{code:1014, message:"Class %1 could not be found."}, CheckTypeFailedError:{code:1034, message:"Type Coercion failed: cannot convert %1 to %2."}, WrongArgumentCountError:{code:1063, message:"Argument count mismatch on %1. Expected %2, got %3."}, 
    XMLMarkupMustBeWellFormed:{code:1088, message:"The markup in the document following the root element must be well-formed."}, OutOfRangeError:{code:1125, message:"The index %1 is out of range %2."}, VectorFixedError:{code:1126, message:"Cannot change the length of a fixed Vector."}, InvalidRangeError:{code:1506, message:"The specified range is invalid."}, NullArgumentError:{code:1507, message:"Argument %1 cannot be null."}, InvalidArgumentError:{code:1508, message:"The value specified for argument %1 is invalid."}, 
    InvalidParamError:{code:2004, message:"One of the parameters is invalid."}, ParamRangeError:{code:2006, message:"The supplied index is out of bounds."}, NullPointerError:{code:2007, message:"Parameter %1 must be non-null."}, InvalidEnumError:{code:2008, message:"Parameter %1 must be one of the accepted values."}, InvalidBitmapData:{code:2015, message:"Invalid BitmapData."}, CompressedDataError:{code:2058, message:"There was an error decompressing the data."}, TooFewArgumentsError:{code:2001, 
    message:"Too few arguments were specified; got %1, %2 expected."}, SocketConnectError:{code:2011, message:"Socket connection failed to %1:%2."}, CantAddSelfError:{code:2024, message:"An object cannot be added as a child of itself."}, NotAChildError:{code:2025, message:"The supplied DisplayObject must be a child of the caller."}, ExternalInterfaceNotAvailableError:{code:2067, message:"The ExternalInterface is not available in this container. ExternalInterface requires Internet Explorer ActiveX, Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime."}, 
    InvalidStageMethodError:{code:2071, message:"The Stage class does not implement this property or method."}, SceneNotFoundError:{code:2108, message:"Scene %1 was not found."}, FrameLabelNotFoundError:{code:2109, message:"Frame label %1 not found in scene %2."}, CantAddParentError:{code:2150, message:"An object cannot be added as a child to one of it's children (or children's children, etc.)."}, ObjectWithStringsParamError:{code:2196, message:"Parameter %1 must be an Object with only String values."}};
    k.getErrorMessage = function(f) {
      if (!b.AVM2.Runtime.debuggerMode.value) {
        return "Error #" + f;
      }
      for (var g in k.Errors) {
        if (k.Errors[g].code == f) {
          return "Error #" + f + ": " + k.Errors[g].message;
        }
      }
      return "Error #" + f + ": (unknown)";
    };
    k.formatErrorMessage = g;
    k.translateErrorMessage = function(f) {
      if (f.type) {
        switch(f.type) {
          case "undefined_method":
            return g(k.Errors.CallOfNonFunctionError, "value");
          default:
            throw b.Debug.notImplemented(f.type);;
        }
      } else {
        return 0 <= f.message.indexOf("is not a function") ? g(k.Errors.CallOfNonFunctionError, "value") : f.message;
      }
    };
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Errors = Shumway.AVM2.Errors, getErrorMessage = Shumway.AVM2.getErrorMessage, formatErrorMessage = Shumway.AVM2.formatErrorMessage, translateErrorMessage = Shumway.AVM2.translateErrorMessage;
(function(b) {
  (function(k) {
    (function(g) {
      var f = null;
      "undefined" !== typeof TextDecoder && (f = new TextDecoder);
      var k = function() {
        function g(b) {
          this._bytes = b;
          this._view = new DataView(b.buffer, b.byteOffset);
          this._position = 0;
        }
        g._getResultBuffer = function(b) {
          if (!g._resultBuffer || g._resultBuffer.length < b) {
            g._resultBuffer = new Int32Array(2 * b);
          }
          return g._resultBuffer;
        };
        Object.defineProperty(g.prototype, "position", {get:function() {
          return this._position;
        }, enumerable:!0, configurable:!0});
        g.prototype.remaining = function() {
          return this._bytes.length - this._position;
        };
        g.prototype.seek = function(b) {
          this._position = b;
        };
        g.prototype.readU8 = function() {
          return this._bytes[this._position++];
        };
        g.prototype.readU8s = function(b) {
          var d = new Uint8Array(b);
          d.set(this._bytes.subarray(this._position, this._position + b), 0);
          this._position += b;
          return d;
        };
        g.prototype.readS8 = function() {
          return this._bytes[this._position++] << 24 >> 24;
        };
        g.prototype.readU32 = function() {
          return this.readS32() >>> 0;
        };
        g.prototype.readU30 = function() {
          return this.readU32();
        };
        g.prototype.readU30Unsafe = function() {
          return this.readU32();
        };
        g.prototype.readS16 = function() {
          return this.readU30Unsafe() << 16 >> 16;
        };
        g.prototype.readS32 = function() {
          var b = this.readU8();
          b & 128 && (b = b & 127 | this.readU8() << 7, b & 16384 && (b = b & 16383 | this.readU8() << 14, b & 2097152 && (b = b & 2097151 | this.readU8() << 21, b & 268435456 && (b = b & 268435455 | this.readU8() << 28, b &= 4294967295))));
          return b;
        };
        g.prototype.readWord = function() {
          var b = this._view.getUint32(this._position, !0);
          this._position += 4;
          return b;
        };
        g.prototype.readS24 = function() {
          return(this.readU8() | this.readU8() << 8 | this.readU8() << 16) << 8 >> 8;
        };
        g.prototype.readDouble = function() {
          var b = this._view.getFloat64(this._position, !0);
          this._position += 8;
          return b;
        };
        g.prototype.readUTFString = function(m) {
          if (f) {
            var d = this._position;
            this._position += m;
            return f.decode(this._bytes.subarray(d, d + m));
          }
          var d = this._position, a = d + m, c = this._bytes, n = 0;
          for (m = g._getResultBuffer(2 * m);d < a;) {
            var p = c[d++];
            if (127 >= p) {
              m[n++] = p;
            } else {
              if (192 <= p) {
                var e = 0;
                224 > p ? e = (p & 31) << 6 | c[d++] & 63 : 240 > p ? e = (p & 15) << 12 | (c[d++] & 63) << 6 | c[d++] & 63 : (e = ((p & 7) << 18 | (c[d++] & 63) << 12 | (c[d++] & 63) << 6 | c[d++] & 63) - 65536, m[n++] = ((e & 1047552) >>> 10) + 55296, e = (e & 1023) + 56320);
                m[n++] = e;
              }
            }
          }
          this._position = d;
          return b.StringUtilities.fromCharCodeArray(m.subarray(0, n));
        };
        g._resultBuffer = new Int32Array(256);
        return g;
      }();
      g.AbcStream = k;
    })(k.ABC || (k.ABC = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(b, k) {
  function g() {
    this.constructor = b;
  }
  for (var f in k) {
    k.hasOwnProperty(f) && (b[f] = k[f]);
  }
  g.prototype = k.prototype;
  b.prototype = new g;
};
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.isString, t = b.isNumeric, s = b.isObject, m = b.Debug.assert, d = b.Debug.notImplemented, a = function() {
        return function(a, b, c, e) {
          "undefined" === typeof e && (e = !1);
          this.name = a;
          this.type = b;
          this.value = c;
          this.optional = e;
        };
      }();
      g.Parameter = a;
      var c = function() {
        function a(b, c, e) {
          var h = b.constantPool, l = b.methods, d = b.classes, p = b.metadata;
          this.holder = e;
          this.name = h.multinames[c.readU30()];
          e = c.readU8();
          this.kind = e & 15;
          this.attributes = e >> 4 & 15;
          m(r.isQName(this.name), "Name must be a QName: " + this.name + ", kind: " + this.kind);
          switch(this.kind) {
            case 0:
            ;
            case 6:
              this.slotId = c.readU30();
              this.typeName = h.multinames[c.readU30()];
              b = c.readU30();
              this.value = void 0;
              0 !== b && (this.hasDefaultValue = !0, this.value = h.getValue(c.readU8(), b));
              break;
            case 1:
            ;
            case 3:
            ;
            case 2:
              this.dispId = c.readU30();
              this.methodInfo = l[c.readU30()];
              this.methodInfo.name = this.name;
              u.attachHolder(this.methodInfo, this.holder);
              this.methodInfo.abc = b;
              break;
            case 4:
              this.slotId = c.readU30();
              m(d, "Classes should be passed down here, I'm guessing whenever classes are being parsed.");
              this.classInfo = d[c.readU30()];
              break;
            case 5:
              m(!1, "Function encountered in the wild, should not happen");
          }
          if (this.attributes & 4) {
            var q, h = 0;
            for (b = c.readU30();h < b;h++) {
              l = p[c.readU30()], "__go_to_definition_help" !== l.name && "__go_to_ctor_definition_help" !== l.name && (q || (q = {}), q[l.name] = l);
            }
            q && (this.isClass() && (this.classInfo.metadata = q), this.metadata = q);
          }
        }
        a.prototype.isSlot = function() {
          return 0 === this.kind;
        };
        a.prototype.isConst = function() {
          return 6 === this.kind;
        };
        a.prototype.isMethod = function() {
          return 1 === this.kind;
        };
        a.prototype.isClass = function() {
          return 4 === this.kind;
        };
        a.prototype.isGetter = function() {
          return 2 === this.kind;
        };
        a.prototype.isSetter = function() {
          return 3 === this.kind;
        };
        a.prototype.isAccessor = function() {
          return this.isGetter() || this.isSetter();
        };
        a.prototype.isMethodOrAccessor = function() {
          return this.isMethod() || this.isGetter() || this.isSetter();
        };
        a.prototype.isProtected = function() {
          m(r.isQName(this.name));
          return this.name.namespaces[0].isProtected();
        };
        a.prototype.kindName = function() {
          switch(this.kind) {
            case 0:
              return "Slot";
            case 6:
              return "Const";
            case 1:
              return "Method";
            case 3:
              return "Setter";
            case 2:
              return "Getter";
            case 4:
              return "Class";
            case 5:
              return "Function";
          }
          b.Debug.unexpected();
        };
        a.prototype.isOverride = function() {
          return this.attributes & 2;
        };
        a.prototype.isFinal = function() {
          return this.attributes & 1;
        };
        a.prototype.toString = function() {
          var a = b.IntegerUtilities.getFlags(this.attributes, ["final", "override", "metadata"]);
          a && (a += " ");
          a += r.getQualifiedName(this.name);
          switch(this.kind) {
            case 0:
            ;
            case 6:
              return a + ", typeName: " + this.typeName + ", slotId: " + this.slotId + ", value: " + this.value;
            case 1:
            ;
            case 3:
            ;
            case 2:
              return a + ", " + this.kindName() + ": " + this.methodInfo.name;
            case 4:
              return a + ", slotId: " + this.slotId + ", class: " + this.classInfo;
          }
        };
        a.parseTraits = function(b, c, e) {
          for (var h = c.readU30(), l = [], d = 0;d < h;d++) {
            l.push(new a(b, c, e));
          }
          return l;
        };
        return a;
      }();
      g.Trait = c;
      var n = function() {
        return function(a, b, c) {
          this.abc = a;
          this.index = b;
          this.hash = a.hash & 65535 | c | b << 19;
        };
      }();
      g.Info = n;
      var p = function(h) {
        function d(b, c, e) {
          h.call(this, b, c, 131072);
          b = b.constantPool;
          c = e.readU30();
          this.returnType = b.multinames[e.readU30()];
          this.parameters = [];
          for (var l = 0;l < c;l++) {
            this.parameters.push(new a(void 0, b.multinames[e.readU30()], void 0));
          }
          this.debugName = b.strings[e.readU30()];
          this.flags = e.readU8();
          l = 0;
          if (this.flags & 8) {
            for (l = e.readU30(), m(c >= l), l = c - l;l < c;l++) {
              var p = e.readU30();
              this.parameters[l].value = b.getValue(e.readU8(), p);
              this.parameters[l].optional = !0;
            }
          }
          if (this.flags & 128) {
            for (l = 0;l < c;l++) {
              d.parseParameterNames ? this.parameters[l].name = b.strings[e.readU30()] : (e.readU30(), this.parameters[l].name = d._getParameterName(l));
            }
          } else {
            for (l = 0;l < c;l++) {
              this.parameters[l].name = d._getParameterName(l);
            }
          }
        }
        __extends(d, h);
        d._getParameterName = function(a) {
          return 26 > a ? String.fromCharCode(65 + a) : "P" + (a - 26);
        };
        d.prototype.toString = function() {
          var a = b.IntegerUtilities.getFlags(this.flags, "NEED_ARGUMENTS NEED_ACTIVATION NEED_REST HAS_OPTIONAL   SET_DXN HAS_PARAM_NAMES".split(" "));
          return(a ? a + " " : "") + this.name;
        };
        d.prototype.hasOptional = function() {
          return!!(this.flags & 8);
        };
        d.prototype.needsActivation = function() {
          return!!(this.flags & 2);
        };
        d.prototype.needsRest = function() {
          return!!(this.flags & 4);
        };
        d.prototype.needsArguments = function() {
          return!!(this.flags & 1);
        };
        d.prototype.isNative = function() {
          return!!(this.flags & 32);
        };
        d.prototype.isClassMember = function() {
          return this.holder instanceof q;
        };
        d.prototype.isInstanceMember = function() {
          return this.holder instanceof e;
        };
        d.prototype.isScriptMember = function() {
          return this.holder instanceof l;
        };
        d.prototype.hasSetsDxns = function() {
          return!!(this.flags & 64);
        };
        d.parseException = function(a, b) {
          var c = a.constantPool.multinames, c = {start:b.readU30(), end:b.readU30(), target:b.readU30(), typeName:c[b.readU30()], varName:c[b.readU30()]};
          m(!c.typeName || !c.typeName.isRuntime());
          m(!c.varName || c.varName.isQName());
          return c;
        };
        d.parseBody = function(a, b) {
          var e = a.methods, h = b.readU30(), e = e[h];
          e.index = h;
          e.hasBody = !0;
          m(!e.isNative());
          e.maxStack = b.readU30();
          e.localCount = b.readU30();
          e.initScopeDepth = b.readU30();
          e.maxScopeDepth = b.readU30();
          e.code = b.readU8s(b.readU30());
          for (var h = [], l = b.readU30(), p = 0;p < l;++p) {
            h.push(d.parseException(a, b));
          }
          e.exceptions = h;
          e.traits = c.parseTraits(a, b, e);
        };
        d.prototype.hasExceptions = function() {
          return 0 < this.exceptions.length;
        };
        d.parseParameterNames = !1;
        return d;
      }(n);
      g.MethodInfo = p;
      var e = function(a) {
        function e(b, h, l) {
          a.call(this, b, h, 65536);
          this.runtimeId = e.nextID++;
          h = b.constantPool;
          var d = b.methods;
          this.name = h.multinames[l.readU30()];
          m(r.isQName(this.name));
          this.superName = h.multinames[l.readU30()];
          this.flags = l.readU8();
          this.protectedNs = void 0;
          this.flags & 8 && (this.protectedNs = h.namespaces[l.readU30()]);
          var p = l.readU30();
          this.interfaces = [];
          for (var q = 0;q < p;q++) {
            this.interfaces[q] = h.multinames[l.readU30()];
          }
          this.init = d[l.readU30()];
          this.init.isInstanceInitializer = !0;
          this.init.name = this.name;
          u.attachHolder(this.init, this);
          this.traits = c.parseTraits(b, l, this);
        }
        __extends(e, a);
        e.prototype.toString = function() {
          var a = b.IntegerUtilities.getFlags(this.flags & 8, ["sealed", "final", "interface", "protected"]), a = (a ? a + " " : "") + this.name;
          this.superName && (a += " extends " + this.superName);
          return a;
        };
        e.prototype.isFinal = function() {
          return!!(this.flags & 2);
        };
        e.prototype.isSealed = function() {
          return!!(this.flags & 1);
        };
        e.prototype.isInterface = function() {
          return!!(this.flags & 4);
        };
        e.nextID = 1;
        return e;
      }(n);
      g.InstanceInfo = e;
      (function(a) {
        a[a.AbcMask = 65535] = "AbcMask";
        a[a.KindMask = 458752] = "KindMask";
        a[a.ClassInfo = 0] = "ClassInfo";
        a[a.InstanceInfo = 65536] = "InstanceInfo";
        a[a.MethodInfo = 131072] = "MethodInfo";
        a[a.ScriptInfo = 196608] = "ScriptInfo";
        a[a.NamespaceSet = 262144] = "NamespaceSet";
        a[a.IndexOffset = 19] = "IndexOffset";
      })(g.Hashes || (g.Hashes = {}));
      var q = function(a) {
        function b(e, h, l) {
          a.call(this, e, h, 0);
          this.runtimeId = b.nextID++;
          this.init = e.methods[l.readU30()];
          this.init.isClassInitializer = !0;
          u.attachHolder(this.init, this);
          this.traits = c.parseTraits(e, l, this);
          this.instanceInfo = e.instances[h];
          this.instanceInfo.classInfo = this;
          this.defaultValue = b._getDefaultValue(this.instanceInfo.name);
        }
        __extends(b, a);
        b._getDefaultValue = function(a) {
          return r.getQualifiedName(a) === r.Int || r.getQualifiedName(a) === r.Uint ? 0 : r.getQualifiedName(a) === r.Number ? NaN : r.getQualifiedName(a) === r.Boolean ? !1 : null;
        };
        b.prototype.toString = function() {
          return this.instanceInfo.name.toString();
        };
        b.nextID = 1;
        return b;
      }(n);
      g.ClassInfo = q;
      var l = function(a) {
        function b(e, h, l) {
          a.call(this, e, h, 196608);
          this.runtimeId = q.nextID++;
          this.name = e.name + "$script" + h;
          this.init = e.methods[l.readU30()];
          this.init.isScriptInitializer = !0;
          u.attachHolder(this.init, this);
          this.traits = c.parseTraits(e, l, this);
        }
        __extends(b, a);
        Object.defineProperty(b.prototype, "entryPoint", {get:function() {
          return this.init;
        }, enumerable:!0, configurable:!0});
        b.prototype.toString = function() {
          return this.name;
        };
        b.nextID = 1;
        return b;
      }(n);
      g.ScriptInfo = l;
      var u = function() {
        function a(c, d, r) {
          "undefined" === typeof r && (r = 0);
          k.enterTimeline("Parse ABC");
          this.name = d;
          this.env = {};
          k.enterTimeline("Adler");
          d = b.HashUtilities.hashBytesTo32BitsAdler(c, 0, c.length);
          k.leaveTimeline();
          r ? (this.hash = r, m(r === d)) : this.hash = d;
          d = new g.AbcStream(c);
          a._checkMagic(d);
          k.enterTimeline("Parse constantPool");
          this.constantPool = new x(d, this);
          k.leaveTimeline();
          k.enterTimeline("Parse Method Infos");
          this.methods = [];
          c = d.readU30();
          for (r = 0;r < c;++r) {
            this.methods.push(new p(this, r, d));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse MetaData Infos");
          this.metadata = [];
          c = d.readU30();
          for (r = 0;r < c;++r) {
            this.metadata.push(new h(this, d));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Instance Infos");
          this.instances = [];
          c = d.readU30();
          for (r = 0;r < c;++r) {
            this.instances.push(new e(this, r, d));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Class Infos");
          this.classes = [];
          for (r = 0;r < c;++r) {
            this.classes.push(new q(this, r, d));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Script Infos");
          this.scripts = [];
          c = d.readU30();
          for (r = 0;r < c;++r) {
            this.scripts.push(new l(this, r, d));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Method Body Info");
          c = d.readU30();
          for (r = 0;r < c;++r) {
            p.parseBody(this, d);
          }
          k.leaveTimeline();
          k.leaveTimeline();
        }
        a._checkMagic = function(a) {
          a = a.readWord();
          if (3014671 > a) {
            throw Error("Invalid ABC File (magic = " + Number(a).toString(16) + ")");
          }
        };
        Object.defineProperty(a.prototype, "lastScript", {get:function() {
          m(0 < this.scripts.length);
          return this.scripts[this.scripts.length - 1];
        }, enumerable:!0, configurable:!0});
        a.attachHolder = function(a, b) {
          m(!a.holder);
          a.holder = b;
        };
        a.prototype.toString = function() {
          return this.name;
        };
        a.prototype.getConstant = function(a) {
          m((this.hash & 65535) === (a & 65535));
          var b = a >> 19;
          switch(a & 458752) {
            case 0:
              return this.classes[b];
            case 65536:
              return this.instances[b];
            case 131072:
              return this.methods[b];
            case 196608:
              return this.scripts[b];
            case 262144:
              return this.constantPool.namespaceSets[b];
            default:
              d("Kind");
          }
        };
        return a;
      }();
      g.AbcFile = u;
      var w = function() {
        function a(b, c, e, h) {
          "undefined" === typeof c && (c = "");
          void 0 === c && (c = "");
          this.kind = b;
          this.uri = c;
          this.prefix = e;
          this.qualifiedName = void 0;
          this._buildNamespace(h);
        }
        a.prototype._buildNamespace = function(b) {
          22 === this.kind && (this.kind = 8);
          this.isPublic() && this.uri ? (b = this.uri.length - 1, this.uri.charCodeAt(b) > a._MIN_API_MARK && (m(!1, "What's this code for?"), this.uri = this.uri.substring(0, b - 1))) : this.isUnique() && (m(void 0 !== b), this.uri = "private " + b);
          26 === this.kind && (this.uri = "*");
          this.qualifiedName = a._qualifyNamespace(this.kind, this.uri, this.prefix ? this.prefix : "");
        };
        a._hashNamespace = function(c, e, h) {
          var l = new Int32Array(1 + e.length + h.length), d = 0;
          l[d++] = c;
          var p = a._knownURIs.indexOf(e);
          if (0 <= p) {
            return c << 2 | p;
          }
          for (c = 0;c < e.length;c++) {
            l[d++] = e.charCodeAt(c);
          }
          for (c = 0;c < h.length;c++) {
            l[d++] = h.charCodeAt(c);
          }
          return b.HashUtilities.hashBytesTo32BitsMD5(l, 0, d);
        };
        a._qualifyNamespace = function(c, e, h) {
          var l = c + e, d = a._mangledNamespaceCache[l];
          if (d) {
            return d;
          }
          d = b.StringUtilities.variableLengthEncodeInt32(a._hashNamespace(c, e, h));
          a._mangledNamespaceMap[d] = {kind:c, uri:e, prefix:h};
          return a._mangledNamespaceCache[l] = d;
        };
        a.fromQualifiedName = function(c) {
          var e = b.StringUtilities.fromEncoding(c[0]);
          c = a._mangledNamespaceMap[c.substring(0, e + 1)];
          return new a(c.kind, c.uri, c.prefix);
        };
        a.kindFromString = function(b) {
          for (var c in a._kinds) {
            if (a._kinds[c] === b) {
              return c;
            }
          }
          m(!1, "Cannot find kind " + b);
          return NaN;
        };
        a.createNamespace = function(b, c) {
          "undefined" === typeof c && (c = void 0);
          return new a(8, b, c);
        };
        a.parse = function(b, c, e) {
          var h = c.readU8();
          b = b.strings[c.readU30()];
          return new a(h, b, void 0, e);
        };
        a.prototype.isPublic = function() {
          return 8 === this.kind || 22 === this.kind;
        };
        a.prototype.isProtected = function() {
          return 24 === this.kind || 26 === this.kind;
        };
        a.prototype.isPrivate = function() {
          return 5 === this.kind;
        };
        a.prototype.isPackageInternal = function() {
          return 23 === this.kind;
        };
        a.prototype.isUnique = function() {
          return 5 === this.kind && !this.uri;
        };
        a.prototype.isDynamic = function() {
          return this.isPublic() && !this.uri;
        };
        a.prototype.getURI = function() {
          return this.uri;
        };
        a.prototype.toString = function() {
          return a._kinds[this.kind] + (this.uri ? " " + this.uri : "");
        };
        a.prototype.clone = function() {
          var b = Object.create(a.prototype);
          b.kind = this.kind;
          b.uri = this.uri;
          b.prefix = this.prefix;
          b.qualifiedName = this.qualifiedName;
          return b;
        };
        a.prototype.isEqualTo = function(a) {
          return this.qualifiedName === a.qualifiedName;
        };
        a.prototype.inNamespaceSet = function(a) {
          for (var b = 0;b < a.length;b++) {
            if (a[b].qualifiedName === this.qualifiedName) {
              return!0;
            }
          }
          return!1;
        };
        a.prototype.getAccessModifier = function() {
          return a._kinds[this.kind];
        };
        a.prototype.getQualifiedName = function() {
          return this.qualifiedName;
        };
        a.fromSimpleName = function(b) {
          if (b in a._simpleNameCache) {
            return a._simpleNameCache[b];
          }
          var c;
          0 === b.indexOf("[") ? (m("]" === b[b.length - 1]), c = b.substring(1, b.length - 1).split(",")) : c = [b];
          return a._simpleNameCache[b] = c.map(function(b) {
            b = b.trim();
            var c;
            0 < b.indexOf(" ") ? (c = b.substring(0, b.indexOf(" ")).trim(), b = b.substring(b.indexOf(" ") + 1).trim()) : (c = a._kinds, b === c[8] || b === c[23] || b === c[5] || b === c[24] || b === c[25] || b === c[26] ? (c = b, b = "") : c = a._publicPrefix);
            return new a(a.kindFromString(c), b);
          });
        };
        a._publicPrefix = "public";
        a._kinds = function() {
          var c = b.ObjectUtilities.createMap();
          c[8] = a._publicPrefix;
          c[23] = "packageInternal";
          c[5] = "private";
          c[24] = "protected";
          c[25] = "explicit";
          c[26] = "staticProtected";
          return c;
        }();
        a._MIN_API_MARK = 58004;
        a._MAX_API_MARK = 63743;
        a._knownURIs = [""];
        a._mangledNamespaceCache = b.ObjectUtilities.createMap();
        a._mangledNamespaceMap = b.ObjectUtilities.createMap();
        a.PUBLIC = new a(8);
        a.PROTECTED = new a(24);
        a.PROXY = new a(8, "http://www.adobe.com/2006/actionscript/flash/proxy");
        a.VECTOR = new a(8, "__AS3__.vec");
        a.VECTOR_PACKAGE = new a(23, "__AS3__.vec");
        a.BUILTIN = new a(5, "builtin.as$0");
        a._simpleNameCache = b.ObjectUtilities.createMap();
        return a;
      }();
      g.Namespace = w;
      w.prototype = Object.create(w.prototype);
      var r = function() {
        function a(b, c, e) {
          "undefined" === typeof e && (e = 0);
          void 0 !== c && m(null === c || f(c), "Multiname name must be a string. " + c);
          this.runtimeId = a._nextID++;
          this.namespaces = b;
          this.name = c;
          this.flags = e;
        }
        a.parse = function(c, e, h, l, d) {
          var p = 0, r = e.readU8(), q, n = [], x = 0;
          switch(r) {
            case 7:
            ;
            case 13:
              (p = e.readU30()) ? n = [c.namespaces[p]] : x &= ~a.RUNTIME_NAME;
              (p = e.readU30()) && (q = c.strings[p]);
              break;
            case 15:
            ;
            case 16:
              (p = e.readU30()) ? q = c.strings[p] : x &= ~a.RUNTIME_NAME;
              x |= a.RUNTIME_NAMESPACE;
              break;
            case 17:
            ;
            case 18:
              x |= a.RUNTIME_NAMESPACE;
              x |= a.RUNTIME_NAME;
              break;
            case 9:
            ;
            case 14:
              (p = e.readU30()) ? q = c.strings[p] : x &= ~a.RUNTIME_NAME;
              p = e.readU30();
              m(0 !== p);
              n = c.namespaceSets[p];
              break;
            case 27:
            ;
            case 28:
              x |= a.RUNTIME_NAME;
              p = e.readU30();
              m(0 !== p);
              n = c.namespaceSets[p];
              break;
            case 29:
              return c = e.readU32(), p = e.readU32(), m(1 === p), e = e.readU32(), p = void 0, h[c] && h[e] ? (p = new a(h[c].namespaces, h[c].name, x), p.typeParameter = h[e]) : l.push({index:d, factoryTypeIndex:c, typeParameterIndex:e, flags:x}), p;
            default:
              b.Debug.unexpected();
          }
          switch(r) {
            case 13:
            ;
            case 16:
            ;
            case 18:
            ;
            case 14:
            ;
            case 28:
              x |= a.ATTRIBUTE;
          }
          return new a(n, q, x);
        };
        a.isMultiname = function(b) {
          return "number" === typeof b || "string" === typeof b || b instanceof a || b instanceof Number;
        };
        a.needsResolution = function(b) {
          return b instanceof a && 1 < b.namespaces.length;
        };
        a.isQName = function(b) {
          return b instanceof a ? b.namespaces && 1 === b.namespaces.length : !0;
        };
        a.isRuntimeName = function(b) {
          return b instanceof a && b.isRuntimeName();
        };
        a.isRuntimeNamespace = function(b) {
          return b instanceof a && b.isRuntimeNamespace();
        };
        a.isRuntime = function(b) {
          return b instanceof a && b.isRuntimeName() || b.isRuntimeNamespace();
        };
        a.getQualifiedName = function(b) {
          m(a.isQName(b));
          if (b instanceof a) {
            if (void 0 !== b.qualifiedName) {
              return b.qualifiedName;
            }
            var c = String(b.name);
            if (t(c) && b.namespaces[0].isPublic()) {
              return b.qualifiedName = c;
            }
            b = b.qualifiedName = a.qualifyName(b.namespaces[0], c);
          }
          return b;
        };
        a.qualifyName = function(a, c) {
          return b.StringUtilities.concat3("$", a.qualifiedName, c);
        };
        a.stripPublicQualifier = function(a) {
          var b = "$" + w.PUBLIC.qualifiedName;
          return 0 !== a.indexOf(b) ? void 0 : a.substring(b.length);
        };
        a.fromQualifiedName = function(b) {
          if (b instanceof a) {
            return b;
          }
          if (t(b)) {
            return new a([w.PUBLIC], b);
          }
          if ("$" === b[0]) {
            var c = w.fromQualifiedName(b.substring(1));
            return new a([c], b.substring(1 + c.qualifiedName.length));
          }
        };
        a.getNameFromPublicQualifiedName = function(b) {
          b = a.fromQualifiedName(b);
          m(b.getNamespace().isPublic());
          return b.name;
        };
        a.getFullQualifiedName = function(b) {
          var c = a.getQualifiedName(b);
          b instanceof a && b.typeParameter && (c += "$" + a.getFullQualifiedName(b.typeParameter));
          return c;
        };
        a.getPublicQualifiedName = function(c) {
          var e;
          if ("string" === typeof c && (e = a._publicQualifiedNameCache[c])) {
            return e;
          }
          if (t(c)) {
            return b.toNumber(c);
          }
          if (null !== c && s(c)) {
            return c;
          }
          e = a.qualifyName(w.PUBLIC, c);
          "string" === typeof c && (a._publicQualifiedNameCache[c] = e);
          return e;
        };
        a.isPublicQualifiedName = function(a) {
          return "number" === typeof a || t(a) || 1 === a.indexOf(w.PUBLIC.qualifiedName);
        };
        a.getAccessModifier = function(b) {
          m(a.isQName(b));
          if ("number" === typeof b || "string" === typeof b || b instanceof Number) {
            return "public";
          }
          m(b instanceof a);
          return b.namespaces[0].getAccessModifier();
        };
        a.isNumeric = function(b) {
          return "number" === typeof b ? !0 : "string" === typeof b ? t(b) : !isNaN(parseInt(a.getName(b), 10));
        };
        a.getName = function(b) {
          m(b instanceof a);
          m(!b.isRuntimeName());
          return b.getName();
        };
        a.isAnyName = function(a) {
          return "object" === typeof a && !a.isRuntimeName() && !a.name;
        };
        a.fromSimpleName = function(b) {
          m(b);
          if (b in a._simpleNameCache) {
            return a._simpleNameCache[b];
          }
          var c, e;
          c = b.lastIndexOf(".");
          0 >= c && (c = b.lastIndexOf(" "));
          0 < c && c < b.length - 1 ? (e = b.substring(c + 1).trim(), c = b.substring(0, c).trim()) : (e = b, c = "");
          return a._simpleNameCache[b] = new a(w.fromSimpleName(c), e);
        };
        a.prototype.getQName = function(b) {
          m(0 <= b && b < this.namespaces.length);
          this._qualifiedNameCache || (this._qualifiedNameCache = []);
          var c = this._qualifiedNameCache[b];
          c || (c = this._qualifiedNameCache[b] = new a([this.namespaces[b]], this.name, this.flags));
          return c;
        };
        a.prototype.hasQName = function(b) {
          m(b instanceof a);
          if (this.name !== b.name) {
            return!1;
          }
          for (var c = 0;c < this.namespaces.length;c++) {
            if (this.namespaces[c].isEqualTo(b.namespaces[0])) {
              return!0;
            }
          }
          return!1;
        };
        a.prototype.isAttribute = function() {
          return this.flags & a.ATTRIBUTE;
        };
        a.prototype.isAnyName = function() {
          return a.isAnyName(this);
        };
        a.prototype.isAnyNamespace = function() {
          return!this.isRuntimeNamespace() && (0 === this.namespaces.length || this.isAnyName() && 1 !== this.namespaces.length);
        };
        a.prototype.isRuntimeName = function() {
          return!!(this.flags & a.RUNTIME_NAME);
        };
        a.prototype.isRuntimeNamespace = function() {
          return!!(this.flags & a.RUNTIME_NAMESPACE);
        };
        a.prototype.isRuntime = function() {
          return!!(this.flags & (a.RUNTIME_NAME | a.RUNTIME_NAMESPACE));
        };
        a.prototype.isQName = function() {
          return 1 === this.namespaces.length && !this.isAnyName();
        };
        a.prototype.hasTypeParameter = function() {
          return!!this.typeParameter;
        };
        a.prototype.getName = function() {
          return this.name;
        };
        a.prototype.getOriginalName = function() {
          m(this.isQName());
          var a = this.namespaces[0].uri;
          a && (a += ".");
          return a + this.name;
        };
        a.prototype.getNamespace = function() {
          m(!this.isRuntimeNamespace());
          m(1 === this.namespaces.length);
          return this.namespaces[0];
        };
        a.prototype.nameToString = function() {
          if (this.isAnyName()) {
            return "*";
          }
          var a = this.getName();
          return this.isRuntimeName() ? "[]" : a;
        };
        a.prototype.hasObjectName = function() {
          return "object" === typeof this.name;
        };
        a.prototype.toString = function() {
          var a = this.isAttribute() ? "@" : "";
          if (this.isAnyNamespace()) {
            a += "*::" + this.nameToString();
          } else {
            if (this.isRuntimeNamespace()) {
              a += "[]::" + this.nameToString();
            } else {
              if (1 === this.namespaces.length && this.isQName()) {
                a += this.namespaces[0].toString() + "::", a += this.nameToString();
              } else {
                for (var a = a + "{", b = 0, c = this.namespaces.length;b < c;b++) {
                  a += this.namespaces[b].toString(), b + 1 < c && (a += ",");
                }
                a += "}::" + this.nameToString();
              }
            }
          }
          this.hasTypeParameter() && (a += "<" + this.typeParameter.toString() + ">");
          return a;
        };
        a.ATTRIBUTE = 1;
        a.RUNTIME_NAMESPACE = 2;
        a.RUNTIME_NAME = 4;
        a._nextID = 0;
        a._publicQualifiedNameCache = b.ObjectUtilities.createMap();
        a._simpleNameCache = b.ObjectUtilities.createMap();
        a.Int = a.getPublicQualifiedName("int");
        a.Uint = a.getPublicQualifiedName("uint");
        a.Class = a.getPublicQualifiedName("Class");
        a.Array = a.getPublicQualifiedName("Array");
        a.Object = a.getPublicQualifiedName("Object");
        a.String = a.getPublicQualifiedName("String");
        a.Number = a.getPublicQualifiedName("Number");
        a.Boolean = a.getPublicQualifiedName("Boolean");
        a.Function = a.getPublicQualifiedName("Function");
        a.XML = a.getPublicQualifiedName("XML");
        a.XMLList = a.getPublicQualifiedName("XMLList");
        a.TO_STRING = a.getPublicQualifiedName("toString");
        a.VALUE_OF = a.getPublicQualifiedName("valueOf");
        a.TEMPORARY = new a([], "");
        return a;
      }();
      g.Multiname = r;
      var h = function() {
        function a(b, c) {
          for (var e = b.constantPool.strings, h = this.name = e[c.readU30()], l = c.readU30(), d = [], p = [], r = 0;r < l;r++) {
            d[r] = e[c.readU30()];
          }
          for (r = 0;r < l;r++) {
            var q = d[r];
            p[r] = {key:q, value:e[c.readU30()]};
            q && "native" === h && (m(!this.hasOwnProperty(q)), this[q] = p[r].value);
          }
          this.value = p;
        }
        a.prototype.toString = function() {
          return "[" + this.name + "]";
        };
        return a;
      }();
      g.MetaDataInfo = h;
      (function(a) {
        a[a.Undefined = 0] = "Undefined";
        a[a.Utf8 = 1] = "Utf8";
        a[a.Float = 2] = "Float";
        a[a.Int = 3] = "Int";
        a[a.UInt = 4] = "UInt";
        a[a.PrivateNs = 5] = "PrivateNs";
        a[a.Double = 6] = "Double";
        a[a.QName = 7] = "QName";
        a[a.Namespace = 8] = "Namespace";
        a[a.Multiname = 9] = "Multiname";
        a[a.False = 10] = "False";
        a[a.True = 11] = "True";
        a[a.Null = 12] = "Null";
        a[a.QNameA = 13] = "QNameA";
        a[a.MultinameA = 14] = "MultinameA";
        a[a.RTQName = 15] = "RTQName";
        a[a.RTQNameA = 16] = "RTQNameA";
        a[a.RTQNameL = 17] = "RTQNameL";
        a[a.RTQNameLA = 18] = "RTQNameLA";
        a[a.NameL = 19] = "NameL";
        a[a.NameLA = 20] = "NameLA";
        a[a.NamespaceSet = 21] = "NamespaceSet";
        a[a.PackageNamespace = 22] = "PackageNamespace";
        a[a.PackageInternalNs = 23] = "PackageInternalNs";
        a[a.ProtectedNamespace = 24] = "ProtectedNamespace";
        a[a.ExplicitNamespace = 25] = "ExplicitNamespace";
        a[a.StaticProtectedNs = 26] = "StaticProtectedNs";
        a[a.MultinameL = 27] = "MultinameL";
        a[a.MultinameLA = 28] = "MultinameLA";
        a[a.TypeName = 29] = "TypeName";
        a[a.ClassSealed = 1] = "ClassSealed";
        a[a.ClassFinal = 2] = "ClassFinal";
        a[a.ClassInterface = 4] = "ClassInterface";
        a[a.ClassProtectedNs = 8] = "ClassProtectedNs";
      })(g.CONSTANT || (g.CONSTANT = {}));
      (function(a) {
        a[a.Arguments = 1] = "Arguments";
        a[a.Activation = 2] = "Activation";
        a[a.Needrest = 4] = "Needrest";
        a[a.HasOptional = 8] = "HasOptional";
        a[a.IgnoreRest = 16] = "IgnoreRest";
        a[a.Native = 32] = "Native";
        a[a.Setsdxns = 64] = "Setsdxns";
        a[a.HasParamNames = 128] = "HasParamNames";
      })(g.METHOD || (g.METHOD = {}));
      (function(a) {
        a[a.Slot = 0] = "Slot";
        a[a.Method = 1] = "Method";
        a[a.Getter = 2] = "Getter";
        a[a.Setter = 3] = "Setter";
        a[a.Class = 4] = "Class";
        a[a.Function = 5] = "Function";
        a[a.Const = 6] = "Const";
      })(g.TRAIT || (g.TRAIT = {}));
      (function(a) {
        a[a.Final = 1] = "Final";
        a[a.Override = 2] = "Override";
        a[a.Metadata = 4] = "Metadata";
      })(g.ATTR || (g.ATTR = {}));
      (function(a) {
        a[a.CASEINSENSITIVE = 1] = "CASEINSENSITIVE";
        a[a.DESCENDING = 2] = "DESCENDING";
        a[a.UNIQUESORT = 4] = "UNIQUESORT";
        a[a.RETURNINDEXEDARRAY = 8] = "RETURNINDEXEDARRAY";
        a[a.NUMERIC = 16] = "NUMERIC";
      })(g.SORT || (g.SORT = {}));
      var x = function() {
        function a(b, c) {
          var e, h = [0];
          e = b.readU30();
          for (var l = 1;l < e;++l) {
            h.push(b.readS32());
          }
          var d = [0];
          e = b.readU30();
          for (l = 1;l < e;++l) {
            d.push(b.readU32());
          }
          var p = [NaN];
          e = b.readU30();
          for (l = 1;l < e;++l) {
            p.push(b.readDouble());
          }
          k.enterTimeline("Parse Strings");
          var q = [""];
          e = b.readU30();
          for (l = 1;l < e;++l) {
            q.push(b.readUTFString(b.readU30()));
          }
          k.leaveTimeline();
          this.ints = h;
          this.uints = d;
          this.doubles = p;
          this.strings = q;
          k.enterTimeline("Parse Namespaces");
          h = [void 0];
          e = b.readU30();
          for (l = 1;l < e;++l) {
            h.push(w.parse(this, b, c.hash + l));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Namespace Sets");
          d = [void 0];
          e = b.readU30();
          for (l = 1;l < e;++l) {
            p = b.readU30();
            q = [];
            q.runtimeId = a._nextNamespaceSetID++;
            q.hash = c.hash & 65535 | 262144 | l << 19;
            for (var n = 0;n < p;++n) {
              q.push(h[b.readU30()]);
            }
            d.push(q);
          }
          k.leaveTimeline();
          this.namespaces = h;
          this.namespaceSets = d;
          k.enterTimeline("Parse Multinames");
          h = [void 0];
          d = [];
          e = b.readU30();
          for (l = 1;l < e;++l) {
            h.push(r.parse(this, b, h, d, l));
          }
          for (l = 0;l < d.length;l++) {
            e = d[l], q = h[e.factoryTypeIndex], p = h[e.typeParameterIndex], m(q && p), q = new r(q.namespaces, q.name, e.flags), q.typeParameter = p, h[e.index] = q;
          }
          k.leaveTimeline();
          this.multinames = h;
        }
        a.prototype.getValue = function(a, c) {
          switch(a) {
            case 3:
              return this.ints[c];
            case 4:
              return this.uints[c];
            case 6:
              return this.doubles[c];
            case 1:
              return this.strings[c];
            case 11:
              return!0;
            case 10:
              return!1;
            case 12:
              return null;
            case 0:
              break;
            case 8:
            ;
            case 23:
              return this.namespaces[c];
            case 7:
            ;
            case 14:
            ;
            case 15:
            ;
            case 16:
            ;
            case 17:
            ;
            case 18:
            ;
            case 19:
            ;
            case 20:
              return this.multinames[c];
            case 2:
              b.Debug.warning("TODO: CONSTANT.Float may be deprecated?");
              break;
            default:
              m(!1, "Not Implemented Kind " + a);
          }
        };
        a._nextNamespaceSetID = 1;
        return a;
      }();
      g.ConstantPool = x;
    })(k.ABC || (k.ABC = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(a, b, c, l) {
        "undefined" === typeof l && (l = null);
        0 !== c.length && (a.enter(b + " {"), c.forEach(function(b, c) {
          b.trace(a, l);
        }), a.leave("}"));
      }
      function k(a, b, c) {
        var l;
        "undefined" === typeof l && (l = !1);
        var n = c.position, f = "";
        null === a.operands ? f = "null" : a.operands.forEach(function(l, h) {
          var n = f, u;
          a: {
            u = 0;
            switch(l.size) {
              case "s08":
                u = c.readS8();
                break;
              case "u08":
                u = c.readU8();
                break;
              case "s16":
                u = c.readS16();
                break;
              case "s24":
                u = c.readS24();
                break;
              case "u30":
                u = c.readU30();
                break;
              case "u32":
                u = c.readU32();
                break;
              default:
                d(!1);
            }
            var g = "";
            switch(l.type) {
              case "":
                break;
              case "I":
                g = b.constantPool.ints[u];
                break;
              case "U":
                g = b.constantPool.uints[u];
                break;
              case "D":
                g = b.constantPool.doubles[u];
                break;
              case "S":
                g = b.constantPool.strings[u];
                break;
              case "N":
                g = b.constantPool.namespaces[u];
                break;
              case "CI":
                g = b.classes[u];
                break;
              case "M":
                u = b.constantPool.multinames[u];
                break a;
              default:
                g = "?";
            }
            u = l.name + ":" + u + ("" === g ? "" : " (" + g + ")");
          }
          f = n + u;
          h < a.operands.length - 1 && (f += ", ");
        });
        l && c.seek(n);
        return f;
      }
      function s(a, b) {
        var c = new n(a);
        b.scripts.forEach(function(a) {
          c.traceTraits(a.traits);
        });
      }
      function m(a, c) {
        var q = new b.Metrics.Counter(!0), l = new b.Metrics.Counter(!0), n = new b.Metrics.Counter(!0), f = new b.Metrics.Counter(!0), r = {}, h = {}, x = {};
        c.classes.forEach(function(a) {
          r[a.instanceInfo.name.name] = !0;
        });
        c.scripts.forEach(function(a) {
          a.traits.forEach(function(a) {
            if (a.isClass()) {
              var b = a.classInfo.instanceInfo.superName ? a.classInfo.instanceInfo.superName.name : "?";
              b in r || l.count(b);
              a.classInfo.traits.forEach(function(a) {
                a.isMethod() ? h[a.name.name] = !0 : x[a.name.name] = !0;
              });
              a.classInfo.instanceInfo.traits.forEach(function(a) {
                !a.isMethod() || a.attributes & 2 ? x[a.name.name] = !0 : h[a.name.name] = !0;
              });
            }
          });
        });
        var m = new b.Metrics.Counter(!0);
        c.methods.forEach(function(a) {
          function l(a) {
            var b = 0;
            switch(a.size) {
              case "s08":
                b = p.readS8();
                break;
              case "u08":
                b = p.readU8();
                break;
              case "s16":
                b = p.readS16();
                break;
              case "s24":
                b = p.readS24();
                break;
              case "u30":
                b = p.readU30();
                break;
              case "u32":
                b = p.readU32();
                break;
              default:
                d(!1);
            }
            var h = "";
            switch(a.type) {
              case "":
                break;
              case "I":
                h = c.constantPool.ints[b];
                break;
              case "U":
                h = c.constantPool.uints[b];
                break;
              case "D":
                h = c.constantPool.doubles[b];
                break;
              case "S":
                h = c.constantPool.strings[b];
                break;
              case "N":
                h = c.constantPool.namespaces[b];
                break;
              case "CI":
                h = c.classes[b];
                break;
              case "M":
                h = c.constantPool.multinames[b];
                break;
              default:
                h = "?";
            }
            return h;
          }
          if (a.code) {
            for (var p = new g.AbcStream(a.code);0 < p.remaining();) {
              a = p.readU8();
              var k = b.AVM2.opcodeTable[a], s = null;
              if (k) {
                switch(m.count(k.name), k.operands && (s = k.operands.map(l)), a) {
                  case 65:
                  ;
                  case 67:
                    continue;
                  case 70:
                  ;
                  case 76:
                  ;
                  case 79:
                  ;
                  case 68:
                  ;
                  case 69:
                  ;
                  case 78:
                    !s[0] || s[0].name in h || n.count(s[0].name);
                    break;
                  case 74:
                    !s[0] || s[0].name in r || q.count(s[0].name);
                    break;
                  case 102:
                  ;
                  case 97:
                    !s[0] || s[0].name in x || f.count(s[0].name);
                }
              }
            }
          }
        });
        a.writeLn(JSON.stringify({definedClasses:r, definedMethods:h, definedProperties:x, libraryClasses:q.counts, librarySuperClasses:l.counts, libraryMethods:n.counts, libraryProperties:f.counts, operations:m.counts}, null, 2));
      }
      var d = b.Debug.assert, a = b.Debug.notImplemented, c = new b.Options.Option("f", "filter", "string", "SpciMsmNtu", "[S]ource, constant[p]ool, [c]lasses, [i]nstances, [M]etadata, [s]cripts, [m]ethods, multi[N]ames, S[t]atistics, [u]tf");
      g.AbcFile.prototype.trace = function(a) {
        0 <= c.value.indexOf("p") && this.constantPool.trace(a);
        0 <= c.value.indexOf("N") && a.writeArray(this.constantPool.multinames, null, !0);
        0 <= c.value.indexOf("c") && f(a, "classes", this.classes);
        0 <= c.value.indexOf("i") && f(a, "instances", this.instances);
        0 <= c.value.indexOf("M") && f(a, "metadata", this.metadata);
        0 <= c.value.indexOf("s") && f(a, "scripts", this.scripts);
        0 <= c.value.indexOf("m") && f(a, "methods", this.methods, this);
        0 <= c.value.indexOf("S") && s(a, this);
        0 <= c.value.indexOf("t") && m(a, this);
      };
      g.ConstantPool.prototype.trace = function(a) {
        a.enter("constantPool {");
        for (var b in this) {
          "namespaces" === b ? (a.enter("namespaces {"), this.namespaces.forEach(function(b, c) {
            a.writeLn(("" + c).padRight(" ", 3) + (b ? b.toString() : "*"));
          }), a.leave("}")) : this[b] instanceof Array && (a.enter(b + " " + this[b].length + " {"), a.writeArray(this[b]), a.leave("}"));
        }
        a.leave("}");
      };
      g.ClassInfo.prototype.trace = function(a) {
        a.enter("class " + this + " {");
        f(a, "traits", this.traits);
        a.leave("}");
      };
      g.MetaDataInfo.prototype.trace = function(a) {
        a.enter(this + " {");
        this.value.forEach(function(b) {
          a.writeLn((b.key ? b.key + ": " : "") + '"' + b.value + '"');
        });
        a.leave("}");
      };
      g.InstanceInfo.prototype.trace = function(a) {
        a.enter("instance " + this + " {");
        f(a, "traits", this.traits);
        a.leave("}");
      };
      g.ScriptInfo.prototype.trace = function(a) {
        a.enter("script " + this + " {");
        f(a, "traits", this.traits);
        a.leave("}");
      };
      g.Trait.prototype.trace = function(a) {
        if (this.metadata) {
          for (var b in this.metadata) {
            this.metadata.hasOwnProperty(b) && this.metadata[b].trace(a);
          }
        }
        a.writeLn(this);
      };
      g.MethodInfo.prototype.trace = function(a) {
        var c = this.abc;
        a.enter("method" + (this.name ? " " + this.name : "") + " {");
        a.writeLn("flags: " + b.IntegerUtilities.getFlags(this.flags, "NEED_ARGUMENTS NEED_ACTIVATION NEED_REST HAS_OPTIONAL  NATIVE SET_DXN HAS_PARAM_NAMES".split(" ")));
        a.writeLn("parameters: " + this.parameters.map(function(a) {
          return(a.type ? g.Multiname.getQualifiedName(a.type) + "::" : "") + a.name;
        }));
        if (this.code) {
          var q = new g.AbcStream(this.code);
          f(a, "traits", this.traits);
          for (a.enter("code {");0 < q.remaining();) {
            var l = q.readU8(), n = b.AVM2.opcodeTable[l], w;
            w = ("" + q.position).padRight(" ", 6);
            switch(l) {
              case 27:
                w += n.name + ": defaultOffset: " + q.readS24();
                l = q.readU30();
                w += ", caseCount: " + l;
                for (n = 0;n < l + 1;n++) {
                  w += " offset: " + q.readS24();
                }
                a.writeLn(w);
                break;
              default:
                n ? (w += n.name.padRight(" ", 20), n.operands ? (0 < n.operands.length && (w += k(n, c, q)), a.writeLn(w)) : d(!1, "Opcode: " + n.name + " has undefined operands.")) : d(!1, "Opcode: " + l + " is not implemented.");
            }
          }
          a.leave("}");
        }
        a.leave("}");
      };
      var n = function() {
        function c(a) {
          return void 0 === a ? "undefined" : null === a ? "null" : "string" === typeof a ? '"' + a + '"' : String(a);
        }
        function e(a, b) {
          "undefined" === typeof b && (b = !1);
          return a.parameters.map(function(a) {
            var e = a.name;
            b || (a.type && (e += ":" + a.type.getName()), void 0 !== a.value && (e += " = " + c(a.value)));
            return e;
          }).join(", ");
        }
        function d(a) {
          this.writer = a;
        }
        d.prototype = {traceTraits:function(b, d, q) {
          var r = this.writer, h = this;
          b.forEach(function(b) {
            var l;
            l = g.Multiname.getAccessModifier(b.name);
            var n = b.name.namespaces[0].uri;
            n && ("http://adobe.com/AS3/2006/builtin" === n && (n = "AS3"), l = "public" === l ? q === n ? "" : n : l);
            d && (l += " static");
            if (b.isSlot() || b.isConst()) {
              h.traceMetadata(b.metadata), l = b.isConst() ? l + " const" : l + " var", l += " " + b.name.getName(), b.typeName && (l += ":" + b.typeName.getName()), b.value && (l += " = " + c(b.value)), r.writeLn(l + ";");
            } else {
              if (b.isMethod() || b.isGetter() || b.isSetter()) {
                h.traceMetadata(b.metadata);
                n = b.methodInfo;
                b.attributes & 2 && (l += " override");
                n.isNative() && (l += " native");
                l = l + " function" + (b.isGetter() ? " get" : b.isSetter() ? " set" : "");
                l += " " + b.name.getName();
                l += "(" + e(n) + ")";
                l += n.returnType ? ":" + n.returnType.getName() : "";
                var f;
                b.holder instanceof g.ClassInfo ? (f = b.holder.instanceInfo.name, f.getName()) : b.holder instanceof g.InstanceInfo && (f = b.holder.name, f.getName());
                n.isNative();
                n.isNative() ? r.writeLn(l + ";") : q ? r.writeLn(l + ";") : r.writeLn(l + ' { notImplemented("' + b.name.getName() + '"); }');
              } else {
                b.isClass() ? (f = b.classInfo.instanceInfo.name, r.enter("package " + f.namespaces[0].uri + " {\n"), h.traceMetadata(b.metadata), h.traceClass(b.classInfo), r.leave("\n}"), h.traceClassStub(b)) : a(b);
              }
            }
          });
        }, traceClassStub2:function(a) {
          function b(a, h) {
            "undefined" === typeof h && (h = !1);
            var l = [];
            a.forEach(function(a, b) {
              (a.isMethod() || a.isGetter() || a.isSetter()) && a.methodInfo.isNative() && l.push(a);
            });
            l.forEach(function(a, b) {
              var h = a.methodInfo, d = a.name.getName();
              c.writeLn("// " + d + " :: " + (h.parameters.length ? e(h) : "void") + " -> " + (h.returnType ? h.returnType.getName() : "any"));
              c.enter((a.isGetter() ? '"get ' + d + '"' : a.isSetter() ? '"set ' + d + '"' : d) + ": function " + d + "(" + e(h, !0) + ") {");
              c.writeLn('  notImplemented("' + p + "." + d + '");');
              c.leave("}" + (b === l.length - 1 ? "" : ",\n"));
            });
          }
          var c = this.writer, d = a.classInfo, h = d.instanceInfo, p = h.name.getName();
          a = a.metadata ? a.metadata.native : null;
          if (!a) {
            return!1;
          }
          c.writeLn("Cut and paste the following into `native.js' and edit accordingly");
          c.writeLn("8< --------------------------------------------------------------");
          c.enter("natives." + a.cls + " = function " + a.cls + "(runtime, scope, instanceConstructor, baseClass) {");
          c.writeLn('var c = new Class("' + p + '", instanceConstructor, ApplicationDomain.passthroughCallable(instanceConstructor));');
          c.writeLn("c.extend(baseClass);\n");
          c.enter("c.nativeStatics = {");
          b(d.traits, !0);
          c.leave("};\n");
          c.enter("c.nativeMethods = {");
          b(h.traits);
          c.leave("};\n");
          c.writeLn("return c;");
          c.leave("};");
          c.writeLn("-------------------------------------------------------------- >8");
          return!0;
        }, traceClassStub:function(a) {
          function c(a) {
            return{properties:a.filter(function(a) {
              return!1;
            }), methods:a.filter(function(a) {
              return(a.isMethod() || a.isGetter() || a.isSetter()) && !0 === a.methodInfo.isNative();
            })};
          }
          function d(a, h) {
            function l(a, b) {
              var c = a.methodInfo, d = a.name.getName(), n = "// (" + (c.parameters.length ? e(c) : "void") + ") -> " + (c.returnType ? c.returnType.getName() : "any"), f = d;
              a.isGetter() ? f = "get" : a.isSetter() && (f = "set");
              p.enter(f + ": function " + d + "(" + e(c, !0) + ") { " + n);
              p.writeLn('notImplemented("' + q + "." + d + '");');
              h || (a.isGetter() ? p.writeLn("return this._" + d + ";") : a.isSetter() && p.writeLn("this._" + d + " = " + c.parameters[0].name + ";"));
              p.leave("}" + (b ? "," : ""));
            }
            "undefined" === typeof h && (h = !1);
            a = c(a);
            var n = [], f = b.ObjectUtilities.createEmptyObject();
            a.methods.forEach(function(a, b) {
              var c = a.name.getName();
              a.isGetter() || a.isSetter() ? (f[c] || (f[c] = []), f[c].push(a)) : n.push(a);
            });
            for (var w = 0;w < n.length;w++) {
              l(n[w], w < n.length - 1);
            }
            for (var g = b.ObjectUtilities.toKeyValueArray(f), m = 0;m < g.length;m++) {
              p.enter(g[m][0] + ": {");
              for (var y = g[m][1], w = 0;w < y.length;w++) {
                l(y[w], w < y.length - 1);
              }
              p.leave("}" + (m < g.length - 1 ? "," : ""));
            }
            a.properties.forEach(function(b, c) {
              var e = b.name.getName(), h = c === a.properties.length - 1;
              b.name.getNamespace().isPublic() && p.writeLn(e + ": " + ("'public " + b.name.name + "'") + (h ? "" : ","));
            });
          }
          var p = this.writer;
          a = a.classInfo;
          var h = a.instanceInfo, q = h.name.getName();
          p.writeLn("Cut and paste the following glue and edit accordingly.");
          p.writeLn("Class " + h);
          p.writeLn("8< --------------------------------------------------------------");
          var n = h.name.namespaces[0].uri;
          p.enter("var " + q + "Definition = (function () {");
          p.enter("return {");
          p.writeLn("// (" + e(h.init, !1) + ")");
          p.writeLn('__class__: "' + n + "." + q + '",');
          p.enter("initialize: function () {");
          p.leave("},");
          p.enter("__glue__: {");
          p.enter("native: {");
          p.enter("static: {");
          d(a.traits, !0);
          p.leave("},");
          p.enter("instance: {");
          d(h.traits);
          p.leave("}");
          p.leave("},");
          p.enter("script: {");
          p.writeLn("instance: Glue.ALL");
          p.leave("}");
          p.leave("}");
          p.leave("};");
          p.leave("}).call(this);");
          p.writeLn("-------------------------------------------------------------- >8");
          return!0;
        }, traceClass:function(a) {
          var b = this.writer, c = a.instanceInfo, d = c.name, h = g.Multiname.getAccessModifier(d);
          c.isFinal() && (h += " final");
          c.isSealed() || (h += " dynamic");
          h += c.isInterface() ? " interface " : " class ";
          h += d.getName();
          c.superName && "Object" !== c.superName.getName() && (h += " extends " + c.superName.getName());
          c.interfaces.length && (h += " implements " + c.interfaces.map(function(a) {
            return a.getName();
          }).join(", "));
          b.enter(h + " {");
          c.isInterface() || b.writeLn("public function " + d.getName() + "(" + e(c.init) + ") {}");
          var p;
          c.isInterface() && (p = d.namespaces[0].uri + ":" + d.name);
          this.traceTraits(a.traits, !0, p);
          this.traceTraits(c.traits, !1, p);
          b.leave("}");
        }, traceMetadata:function(a) {
          var b = this.writer, c;
          for (c in a) {
            a.hasOwnProperty(c) && 0 !== c.indexOf("__") && b.writeLn("[" + c + "(" + a[c].value.map(function(a) {
              return(a.key ? a.key + "=" : "") + '"' + a.value + '"';
            }).join(", ") + ")]");
          }
        }};
        return d;
      }();
    })(k.ABC || (k.ABC = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = b.Debug.assert, f = b.Debug.unexpected, t = b.AVM2.ABC.AbcStream, s = b.ArrayUtilities.top, m = b.ArrayUtilities.peek;
    (function(a) {
      a[a.bkpt = 1] = "bkpt";
      a[a.nop = 2] = "nop";
      a[a["throw"] = 3] = "throw";
      a[a.getsuper = 4] = "getsuper";
      a[a.setsuper = 5] = "setsuper";
      a[a.dxns = 6] = "dxns";
      a[a.dxnslate = 7] = "dxnslate";
      a[a.kill = 8] = "kill";
      a[a.label = 9] = "label";
      a[a.lf32x4 = 10] = "lf32x4";
      a[a.sf32x4 = 11] = "sf32x4";
      a[a.ifnlt = 12] = "ifnlt";
      a[a.ifnle = 13] = "ifnle";
      a[a.ifngt = 14] = "ifngt";
      a[a.ifnge = 15] = "ifnge";
      a[a.jump = 16] = "jump";
      a[a.iftrue = 17] = "iftrue";
      a[a.iffalse = 18] = "iffalse";
      a[a.ifeq = 19] = "ifeq";
      a[a.ifne = 20] = "ifne";
      a[a.iflt = 21] = "iflt";
      a[a.ifle = 22] = "ifle";
      a[a.ifgt = 23] = "ifgt";
      a[a.ifge = 24] = "ifge";
      a[a.ifstricteq = 25] = "ifstricteq";
      a[a.ifstrictne = 26] = "ifstrictne";
      a[a.lookupswitch = 27] = "lookupswitch";
      a[a.pushwith = 28] = "pushwith";
      a[a.popscope = 29] = "popscope";
      a[a.nextname = 30] = "nextname";
      a[a.hasnext = 31] = "hasnext";
      a[a.pushnull = 32] = "pushnull";
      a[a.pushundefined = 33] = "pushundefined";
      a[a.pushfloat = 34] = "pushfloat";
      a[a.nextvalue = 35] = "nextvalue";
      a[a.pushbyte = 36] = "pushbyte";
      a[a.pushshort = 37] = "pushshort";
      a[a.pushtrue = 38] = "pushtrue";
      a[a.pushfalse = 39] = "pushfalse";
      a[a.pushnan = 40] = "pushnan";
      a[a.pop = 41] = "pop";
      a[a.dup = 42] = "dup";
      a[a.swap = 43] = "swap";
      a[a.pushstring = 44] = "pushstring";
      a[a.pushint = 45] = "pushint";
      a[a.pushuint = 46] = "pushuint";
      a[a.pushdouble = 47] = "pushdouble";
      a[a.pushscope = 48] = "pushscope";
      a[a.pushnamespace = 49] = "pushnamespace";
      a[a.hasnext2 = 50] = "hasnext2";
      a[a.li8 = 53] = "li8";
      a[a.li16 = 54] = "li16";
      a[a.li32 = 55] = "li32";
      a[a.lf32 = 56] = "lf32";
      a[a.lf64 = 57] = "lf64";
      a[a.si8 = 58] = "si8";
      a[a.si16 = 59] = "si16";
      a[a.si32 = 60] = "si32";
      a[a.sf32 = 61] = "sf32";
      a[a.sf64 = 62] = "sf64";
      a[a.newfunction = 64] = "newfunction";
      a[a.call = 65] = "call";
      a[a.construct = 66] = "construct";
      a[a.callmethod = 67] = "callmethod";
      a[a.callstatic = 68] = "callstatic";
      a[a.callsuper = 69] = "callsuper";
      a[a.callproperty = 70] = "callproperty";
      a[a.returnvoid = 71] = "returnvoid";
      a[a.returnvalue = 72] = "returnvalue";
      a[a.constructsuper = 73] = "constructsuper";
      a[a.constructprop = 74] = "constructprop";
      a[a.callsuperid = 75] = "callsuperid";
      a[a.callproplex = 76] = "callproplex";
      a[a.callinterface = 77] = "callinterface";
      a[a.callsupervoid = 78] = "callsupervoid";
      a[a.callpropvoid = 79] = "callpropvoid";
      a[a.sxi1 = 80] = "sxi1";
      a[a.sxi8 = 81] = "sxi8";
      a[a.sxi16 = 82] = "sxi16";
      a[a.applytype = 83] = "applytype";
      a[a.pushfloat4 = 84] = "pushfloat4";
      a[a.newobject = 85] = "newobject";
      a[a.newarray = 86] = "newarray";
      a[a.newactivation = 87] = "newactivation";
      a[a.newclass = 88] = "newclass";
      a[a.getdescendants = 89] = "getdescendants";
      a[a.newcatch = 90] = "newcatch";
      a[a.findpropstrict = 93] = "findpropstrict";
      a[a.findproperty = 94] = "findproperty";
      a[a.finddef = 95] = "finddef";
      a[a.getlex = 96] = "getlex";
      a[a.setproperty = 97] = "setproperty";
      a[a.getlocal = 98] = "getlocal";
      a[a.setlocal = 99] = "setlocal";
      a[a.getglobalscope = 100] = "getglobalscope";
      a[a.getscopeobject = 101] = "getscopeobject";
      a[a.getproperty = 102] = "getproperty";
      a[a.getouterscope = 103] = "getouterscope";
      a[a.initproperty = 104] = "initproperty";
      a[a.setpropertylate = 105] = "setpropertylate";
      a[a.deleteproperty = 106] = "deleteproperty";
      a[a.deletepropertylate = 107] = "deletepropertylate";
      a[a.getslot = 108] = "getslot";
      a[a.setslot = 109] = "setslot";
      a[a.getglobalslot = 110] = "getglobalslot";
      a[a.setglobalslot = 111] = "setglobalslot";
      a[a.convert_s = 112] = "convert_s";
      a[a.esc_xelem = 113] = "esc_xelem";
      a[a.esc_xattr = 114] = "esc_xattr";
      a[a.convert_i = 115] = "convert_i";
      a[a.convert_u = 116] = "convert_u";
      a[a.convert_d = 117] = "convert_d";
      a[a.convert_b = 118] = "convert_b";
      a[a.convert_o = 119] = "convert_o";
      a[a.checkfilter = 120] = "checkfilter";
      a[a.convert_f = 121] = "convert_f";
      a[a.unplus = 122] = "unplus";
      a[a.convert_f4 = 123] = "convert_f4";
      a[a.coerce = 128] = "coerce";
      a[a.coerce_b = 129] = "coerce_b";
      a[a.coerce_a = 130] = "coerce_a";
      a[a.coerce_i = 131] = "coerce_i";
      a[a.coerce_d = 132] = "coerce_d";
      a[a.coerce_s = 133] = "coerce_s";
      a[a.astype = 134] = "astype";
      a[a.astypelate = 135] = "astypelate";
      a[a.coerce_u = 136] = "coerce_u";
      a[a.coerce_o = 137] = "coerce_o";
      a[a.negate = 144] = "negate";
      a[a.increment = 145] = "increment";
      a[a.inclocal = 146] = "inclocal";
      a[a.decrement = 147] = "decrement";
      a[a.declocal = 148] = "declocal";
      a[a["typeof"] = 149] = "typeof";
      a[a.not = 150] = "not";
      a[a.bitnot = 151] = "bitnot";
      a[a.add = 160] = "add";
      a[a.subtract = 161] = "subtract";
      a[a.multiply = 162] = "multiply";
      a[a.divide = 163] = "divide";
      a[a.modulo = 164] = "modulo";
      a[a.lshift = 165] = "lshift";
      a[a.rshift = 166] = "rshift";
      a[a.urshift = 167] = "urshift";
      a[a.bitand = 168] = "bitand";
      a[a.bitor = 169] = "bitor";
      a[a.bitxor = 170] = "bitxor";
      a[a.equals = 171] = "equals";
      a[a.strictequals = 172] = "strictequals";
      a[a.lessthan = 173] = "lessthan";
      a[a.lessequals = 174] = "lessequals";
      a[a.greaterthan = 175] = "greaterthan";
      a[a.greaterequals = 176] = "greaterequals";
      a[a["instanceof"] = 177] = "instanceof";
      a[a.istype = 178] = "istype";
      a[a.istypelate = 179] = "istypelate";
      a[a["in"] = 180] = "in";
      a[a.increment_i = 192] = "increment_i";
      a[a.decrement_i = 193] = "decrement_i";
      a[a.inclocal_i = 194] = "inclocal_i";
      a[a.declocal_i = 195] = "declocal_i";
      a[a.negate_i = 196] = "negate_i";
      a[a.add_i = 197] = "add_i";
      a[a.subtract_i = 198] = "subtract_i";
      a[a.multiply_i = 199] = "multiply_i";
      a[a.getlocal0 = 208] = "getlocal0";
      a[a.getlocal1 = 209] = "getlocal1";
      a[a.getlocal2 = 210] = "getlocal2";
      a[a.getlocal3 = 211] = "getlocal3";
      a[a.setlocal0 = 212] = "setlocal0";
      a[a.setlocal1 = 213] = "setlocal1";
      a[a.setlocal2 = 214] = "setlocal2";
      a[a.setlocal3 = 215] = "setlocal3";
      a[a.invalid = 237] = "invalid";
      a[a.debug = 239] = "debug";
      a[a.debugline = 240] = "debugline";
      a[a.debugfile = 241] = "debugfile";
      a[a.bkptline = 242] = "bkptline";
      a[a.timestamp = 243] = "timestamp";
    })(k.OP || (k.OP = {}));
    k.opcodeTable = [null, {name:"bkpt", canThrow:!1, operands:[]}, {name:"nop", canThrow:!1, operands:[]}, {name:"throw", canThrow:!0, operands:[]}, {name:"getsuper", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"setsuper", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"dxns", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"dxnslate", canThrow:!0, operands:[]}, {name:"kill", canThrow:!1, operands:[{name:"index", size:"u30", type:""}]}, 
    {name:"label", canThrow:!1, operands:[]}, {name:"lf32x4", canThrow:!0, operands:[]}, {name:"sf32x4", canThrow:!0, operands:[]}, {name:"ifnlt", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifnle", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifngt", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifnge", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"jump", canThrow:!1, operands:[{name:"offset", size:"s24", 
    type:""}]}, {name:"iftrue", canThrow:!1, operands:[{name:"offset", size:"s24", type:""}]}, {name:"iffalse", canThrow:!1, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifeq", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifne", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"iflt", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifle", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifgt", canThrow:!0, 
    operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifge", canThrow:!0, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifstricteq", canThrow:!1, operands:[{name:"offset", size:"s24", type:""}]}, {name:"ifstrictne", canThrow:!1, operands:[{name:"offset", size:"s24", type:""}]}, {name:"lookupswitch", canThrow:!1, operands:null}, {name:"pushwith", canThrow:!1, operands:[]}, {name:"popscope", canThrow:!1, operands:[]}, {name:"nextname", canThrow:!0, operands:[]}, {name:"hasnext", canThrow:!0, 
    operands:[]}, {name:"pushnull", canThrow:!1, operands:[]}, {name:"pushundefined", canThrow:!1, operands:[]}, null, {name:"nextvalue", canThrow:!0, operands:[]}, {name:"pushbyte", canThrow:!1, operands:[{name:"value", size:"s08", type:""}]}, {name:"pushshort", canThrow:!1, operands:[{name:"value", size:"s16", type:""}]}, {name:"pushtrue", canThrow:!1, operands:[]}, {name:"pushfalse", canThrow:!1, operands:[]}, {name:"pushnan", canThrow:!1, operands:[]}, {name:"pop", canThrow:!1, operands:[]}, 
    {name:"dup", canThrow:!1, operands:[]}, {name:"swap", canThrow:!1, operands:[]}, {name:"pushstring", canThrow:!1, operands:[{name:"index", size:"u30", type:"S"}]}, {name:"pushint", canThrow:!1, operands:[{name:"index", size:"u30", type:"I"}]}, {name:"pushuint", canThrow:!1, operands:[{name:"index", size:"u30", type:"U"}]}, {name:"pushdouble", canThrow:!1, operands:[{name:"index", size:"u30", type:"D"}]}, {name:"pushscope", canThrow:!1, operands:[]}, {name:"pushnamespace", canThrow:!1, operands:[{name:"index", 
    size:"u30", type:"N"}]}, {name:"hasnext2", canThrow:!0, operands:[{name:"object", size:"u30", type:""}, {name:"index", size:"u30", type:""}]}, {name:"lix8", canThrow:!0, operands:null}, {name:"lix16", canThrow:!0, operands:null}, {name:"li8", canThrow:!0, operands:[]}, {name:"li16", canThrow:!0, operands:[]}, {name:"li32", canThrow:!0, operands:[]}, {name:"lf32", canThrow:!0, operands:[]}, {name:"lf64", canThrow:!0, operands:[]}, {name:"si8", canThrow:!0, operands:[]}, {name:"si16", canThrow:!0, 
    operands:[]}, {name:"si32", canThrow:!0, operands:[]}, {name:"sf32", canThrow:!0, operands:[]}, {name:"sf64", canThrow:!0, operands:[]}, null, {name:"newfunction", canThrow:!0, operands:[{name:"index", size:"u30", type:"MI"}]}, {name:"call", canThrow:!0, operands:[{name:"argCount", size:"u30", type:""}]}, {name:"construct", canThrow:!0, operands:[{name:"argCount", size:"u30", type:""}]}, {name:"callmethod", canThrow:!0, operands:[{name:"index", size:"u30", type:""}, {name:"argCount", size:"u30", 
    type:""}]}, {name:"callstatic", canThrow:!0, operands:[{name:"index", size:"u30", type:"MI"}, {name:"argCount", size:"u30", type:""}]}, {name:"callsuper", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}, {name:"argCount", size:"u30", type:""}]}, {name:"callproperty", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}, {name:"argCount", size:"u30", type:""}]}, {name:"returnvoid", canThrow:!1, operands:[]}, {name:"returnvalue", canThrow:!0, operands:[]}, {name:"constructsuper", 
    canThrow:!0, operands:[{name:"argCount", size:"u30", type:""}]}, {name:"constructprop", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}, {name:"argCount", size:"u30", type:""}]}, {name:"callsuperid", canThrow:!0, operands:null}, {name:"callproplex", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}, {name:"argCount", size:"u30", type:""}]}, {name:"callinterface", canThrow:!0, operands:null}, {name:"callsupervoid", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}, 
    {name:"argCount", size:"u30", type:""}]}, {name:"callpropvoid", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}, {name:"argCount", size:"u30", type:""}]}, {name:"sxi1", canThrow:!1, operands:[]}, {name:"sxi8", canThrow:!1, operands:[]}, {name:"sxi16", canThrow:!1, operands:[]}, {name:"applytype", canThrow:!0, operands:[{name:"argCount", size:"u30", type:""}]}, {name:"pushfloat4", canThrow:!1, operands:null}, {name:"newobject", canThrow:!0, operands:[{name:"argCount", size:"u30", type:""}]}, 
    {name:"newarray", canThrow:!0, operands:[{name:"argCount", size:"u30", type:""}]}, {name:"newactivation", canThrow:!0, operands:[]}, {name:"newclass", canThrow:!0, operands:[{name:"index", size:"u30", type:"CI"}]}, {name:"getdescendants", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"newcatch", canThrow:!0, operands:[{name:"index", size:"u30", type:"EI"}]}, {name:"findpropglobalstrict", canThrow:!0, operands:null}, {name:"findpropglobal", canThrow:!0, operands:null}, {name:"findpropstrict", 
    canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"findproperty", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"finddef", canThrow:!0, operands:null}, {name:"getlex", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"setproperty", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"getlocal", canThrow:!1, operands:[{name:"index", size:"u30", type:""}]}, {name:"setlocal", canThrow:!1, operands:[{name:"index", size:"u30", 
    type:""}]}, {name:"getglobalscope", canThrow:!1, operands:[]}, {name:"getscopeobject", canThrow:!1, operands:[{name:"index", size:"u30", type:""}]}, {name:"getproperty", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"getouterscope", canThrow:!1, operands:null}, {name:"initproperty", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, null, {name:"deleteproperty", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, null, {name:"getslot", canThrow:!0, 
    operands:[{name:"index", size:"u30", type:""}]}, {name:"setslot", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"getglobalslot", canThrow:!1, operands:[{name:"index", size:"u30", type:""}]}, {name:"setglobalslot", canThrow:!1, operands:[{name:"index", size:"u30", type:""}]}, {name:"convert_s", canThrow:!0, operands:[]}, {name:"esc_xelem", canThrow:!0, operands:[]}, {name:"esc_xattr", canThrow:!0, operands:[]}, {name:"convert_i", canThrow:!0, operands:[]}, {name:"convert_u", 
    canThrow:!0, operands:[]}, {name:"convert_d", canThrow:!0, operands:[]}, {name:"convert_b", canThrow:!0, operands:[]}, {name:"convert_o", canThrow:!0, operands:[]}, {name:"checkfilter", canThrow:!0, operands:[]}, {name:"convert_f", canThrow:!0, operands:[]}, {name:"unplus", canThrow:!0, operands:[]}, {name:"convert_f4", canThrow:!0, operands:[]}, null, null, null, null, {name:"coerce", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"coerce_b", canThrow:!0, operands:[]}, 
    {name:"coerce_a", canThrow:!0, operands:[]}, {name:"coerce_i", canThrow:!0, operands:[]}, {name:"coerce_d", canThrow:!0, operands:[]}, {name:"coerce_s", canThrow:!0, operands:[]}, {name:"astype", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"astypelate", canThrow:!0, operands:[]}, {name:"coerce_u", canThrow:!0, operands:[]}, {name:"coerce_o", canThrow:!0, operands:[]}, null, null, null, null, null, null, {name:"negate", canThrow:!0, operands:[]}, {name:"increment", canThrow:!0, 
    operands:[]}, {name:"inclocal", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"decrement", canThrow:!0, operands:[]}, {name:"declocal", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"typeof", canThrow:!1, operands:[]}, {name:"not", canThrow:!1, operands:[]}, {name:"bitnot", canThrow:!0, operands:[]}, null, null, null, null, null, null, null, null, {name:"add", canThrow:!0, operands:[]}, {name:"subtract", canThrow:!0, operands:[]}, {name:"multiply", 
    canThrow:!0, operands:[]}, {name:"divide", canThrow:!0, operands:[]}, {name:"modulo", canThrow:!0, operands:[]}, {name:"lshift", canThrow:!0, operands:[]}, {name:"rshift", canThrow:!0, operands:[]}, {name:"urshift", canThrow:!0, operands:[]}, {name:"bitand", canThrow:!0, operands:[]}, {name:"bitor", canThrow:!0, operands:[]}, {name:"bitxor", canThrow:!0, operands:[]}, {name:"equals", canThrow:!0, operands:[]}, {name:"strictequals", canThrow:!0, operands:[]}, {name:"lessthan", canThrow:!0, operands:[]}, 
    {name:"lessequals", canThrow:!0, operands:[]}, {name:"greaterthan", canThrow:!0, operands:[]}, {name:"greaterequals", canThrow:!0, operands:[]}, {name:"instanceof", canThrow:!0, operands:[]}, {name:"istype", canThrow:!0, operands:[{name:"index", size:"u30", type:"M"}]}, {name:"istypelate", canThrow:!0, operands:[]}, {name:"in", canThrow:!0, operands:[]}, null, null, null, null, null, null, null, null, null, null, null, {name:"increment_i", canThrow:!0, operands:[]}, {name:"decrement_i", canThrow:!0, 
    operands:[]}, {name:"inclocal_i", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"declocal_i", canThrow:!0, operands:[{name:"index", size:"u30", type:""}]}, {name:"negate_i", canThrow:!0, operands:[]}, {name:"add_i", canThrow:!0, operands:[]}, {name:"subtract_i", canThrow:!0, operands:[]}, {name:"multiply_i", canThrow:!0, operands:[]}, null, null, null, null, null, null, null, null, {name:"getlocal0", canThrow:!1, operands:[]}, {name:"getlocal1", canThrow:!1, operands:[]}, 
    {name:"getlocal2", canThrow:!1, operands:[]}, {name:"getlocal3", canThrow:!1, operands:[]}, {name:"setlocal0", canThrow:!1, operands:[]}, {name:"setlocal1", canThrow:!1, operands:[]}, {name:"setlocal2", canThrow:!1, operands:[]}, {name:"setlocal3", canThrow:!1, operands:[]}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, {name:"invalid", canThrow:!1, operands:[]}, null, {name:"debug", canThrow:!0, operands:[{name:"debugType", 
    size:"u08", type:""}, {name:"index", size:"u30", type:"S"}, {name:"reg", size:"u08", type:""}, {name:"extra", size:"u30", type:""}]}, {name:"debugline", canThrow:!0, operands:[{name:"lineNumber", size:"u30", type:""}]}, {name:"debugfile", canThrow:!0, operands:[{name:"index", size:"u30", type:"S"}]}, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
    k.opcodeName = function(a) {
      return k.opcodeTable[a].name;
    };
    var d = function() {
      function a(c) {
        var e = c.readU8();
        this.op = e;
        this.originalPosition = c.position;
        var d = b.AVM2.opcodeTable[e];
        d || f("Unknown Op " + e);
        this.canThrow = d.canThrow;
        var p;
        switch(e) {
          case 27:
            d = c.readS24();
            this.offsets = [];
            p = c.readU30() + 1;
            for (e = 0;e < p;e++) {
              this.offsets.push(c.readS24());
            }
            this.offsets.push(d);
            break;
          default:
            for (e = 0, p = d.operands.length;e < p;e++) {
              var r = d.operands[e];
              switch(r.size) {
                case "u08":
                  this[r.name] = c.readU8();
                  break;
                case "s08":
                  this[r.name] = c.readS8();
                  break;
                case "s16":
                  this[r.name] = c.readS16();
                  break;
                case "s24":
                  this[r.name] = c.readS24();
                  break;
                case "u30":
                  this[r.name] = c.readU30();
                  break;
                case "u32":
                  this[r.name] = c.readU32();
                  break;
                default:
                  f();
              }
            }
          ;
        }
      }
      a.prototype.makeBlockHead = function(a) {
        if (this.succs) {
          return a;
        }
        this.bid = a;
        this.succs = [];
        this.preds = [];
        this.dominatees = [];
        return a + 1;
      };
      a.prototype.trace = function(a) {
        this.succs && a.writeLn("#" + this.bid);
      };
      a.prototype.toString = function(a) {
        var c = b.AVM2.opcodeTable[this.op], e = c.name.padRight(" ", 20), d, p;
        if (27 === this.op) {
          for (e += "targets:", d = 0, p = this.targets.length;d < p;d++) {
            e += (0 < d ? "," : "") + this.targets[d].position;
          }
        } else {
          for (d = 0, p = c.operands.length;d < p;d++) {
            var h = c.operands[d];
            if ("offset" === h.name) {
              e += "target:" + this.target.position;
            } else {
              var e = e + (h.name + ": "), n = this[h.name];
              if (a) {
                switch(h.type) {
                  case "":
                    e += n;
                    break;
                  case "I":
                    e += a.constantPool.ints[n];
                    break;
                  case "U":
                    e += a.constantPool.uints[n];
                    break;
                  case "D":
                    e += a.constantPool.doubles[n];
                    break;
                  case "S":
                    e += a.constantPool.strings[n];
                    break;
                  case "N":
                    e += a.constantPool.namespaces[n];
                    break;
                  case "CI":
                    e += a.classes[n];
                    break;
                  case "M":
                    e += a.constantPool.multinames[n];
                    break;
                  default:
                    e += "?";
                }
              } else {
                e += n;
              }
            }
            d < p - 1 && (e += ", ");
          }
        }
        return e;
      };
      return a;
    }();
    k.Bytecode = d;
    var a = b.BitSets.BITS_PER_WORD, c = b.BitSets.ADDRESS_BITS_PER_WORD, n = b.BitSets.BIT_INDEX_MASK, p = function(b) {
      function d(a, c) {
        b.call(this, a);
        this.blockById = c;
      }
      __extends(d, b);
      d.prototype.forEachBlock = function(b) {
        g(b);
        for (var c = this.blockById, e = this.bits, d = 0, h = e.length;d < h;d++) {
          var p = e[d];
          if (p) {
            for (var n = 0;n < a;n++) {
              p & 1 << n && b(c[d * a + n]);
            }
          }
        }
      };
      d.prototype.choose = function() {
        for (var b = this.blockById, c = this.bits, e = 0, d = c.length;e < d;e++) {
          var h = c[e];
          if (h) {
            for (var p = 0;p < a;p++) {
              if (h & 1 << p) {
                return b[e * a + p];
              }
            }
          }
        }
      };
      d.prototype.members = function() {
        for (var b = this.blockById, c = [], e = this.bits, d = 0, h = e.length;d < h;d++) {
          var p = e[d];
          if (p) {
            for (var n = 0;n < a;n++) {
              p & 1 << n && c.push(b[d * a + n]);
            }
          }
        }
        return c;
      };
      d.prototype.setBlocks = function(a) {
        for (var b = this.bits, e = 0, d = a.length;e < d;e++) {
          var h = a[e].bid;
          b[h >> c] |= 1 << (h & n);
        }
      };
      return d;
    }(b.BitSets.Uint32ArrayBitSet);
    k.BlockSet = p;
    p = function() {
      function a(b) {
        this.methodInfo = b;
        this.methodInfo.code && (k.enterTimeline("normalizeBytecode"), this.normalizeBytecode(), k.leaveTimeline());
      }
      a.prototype.makeBlockSetFactory = function(a, c) {
        g(!this.boundBlockSet);
        this.boundBlockSet = function() {
          return new b.AVM2.BlockSet(a, c);
        };
      };
      a.prototype.accessLocal = function(a) {
        0 !== a-- && a < this.methodInfo.parameters.length && (this.methodInfo.parameters[a].isUsed = !0);
      };
      a.prototype.getInvalidTarget = function(a, b) {
        if (a && a[b]) {
          return a[b];
        }
        var c = Object.create(d.prototype);
        c.op = 237;
        c.position = b;
        a && (a[b] = c);
        return c;
      };
      a.prototype.normalizeBytecode = function() {
        for (var a = [], b = [], c = new t(this.methodInfo.code), e;0 < c.remaining();) {
          var p = c.position;
          e = new d(c);
          switch(e.op) {
            case 2:
            ;
            case 9:
              a[p] = b.length;
              continue;
            case 27:
              this.methodInfo.hasLookupSwitches = !0;
              e.targets = [];
              for (var h = e.offsets, n = 0, f = h.length;n < f;n++) {
                h[n] += p;
              }
              break;
            case 16:
            ;
            case 21:
            ;
            case 12:
            ;
            case 22:
            ;
            case 13:
            ;
            case 23:
            ;
            case 14:
            ;
            case 24:
            ;
            case 15:
            ;
            case 19:
            ;
            case 20:
            ;
            case 25:
            ;
            case 26:
            ;
            case 17:
            ;
            case 18:
              e.offset += c.position;
              break;
            case 208:
            ;
            case 209:
            ;
            case 210:
            ;
            case 211:
              this.accessLocal(e.op - 208);
              break;
            case 98:
              this.accessLocal(e.index);
          }
          e.position = b.length;
          a[p] = b.length;
          b.push(e);
        }
        for (var c = {}, g = 0, m = b.length;g < m;g++) {
          switch(e = b[g], e.op) {
            case 27:
              h = e.offsets;
              n = 0;
              for (f = h.length;n < f;n++) {
                p = a[h[n]], e.targets.push(b[p] || this.getInvalidTarget(c, h[n])), h[n] = p;
              }
              break;
            case 16:
            ;
            case 21:
            ;
            case 12:
            ;
            case 22:
            ;
            case 13:
            ;
            case 23:
            ;
            case 14:
            ;
            case 24:
            ;
            case 15:
            ;
            case 19:
            ;
            case 20:
            ;
            case 25:
            ;
            case 26:
            ;
            case 17:
            ;
            case 18:
              p = a[e.offset], e.target = b[p] || this.getInvalidTarget(c, e.offset), e.offset = p;
          }
        }
        this.bytecodes = b;
        e = this.methodInfo.exceptions;
        n = 0;
        for (f = e.length;n < f;n++) {
          h = e[n], h.start = a[h.start], h.end = a[h.end], h.offset = a[h.target], h.target = b[h.offset], h.target.exception = h;
        }
      };
      a.prototype.analyzeControlFlow = function() {
        g(this.bytecodes);
        k.enterTimeline("analyzeControlFlow");
        this.detectBasicBlocks();
        this.normalizeReachableBlocks();
        this.computeDominance();
        this.analyzedControlFlow = !0;
        k.leaveTimeline();
        return!0;
      };
      a.prototype.detectBasicBlocks = function() {
        var a = this.bytecodes, b = this.methodInfo.exceptions, c = 0 < b.length, e = {}, d, h, p, n;
        n = a[0].makeBlockHead(0);
        h = 0;
        for (p = a.length - 1;h < p;h++) {
          switch(d = a[h], d.op) {
            case 71:
            ;
            case 72:
            ;
            case 3:
              n = a[h + 1].makeBlockHead(n);
              break;
            case 27:
              d = d.targets;
              for (var f = 0, m = d.length;f < m;f++) {
                n = d[f].makeBlockHead(n);
              }
              n = a[h + 1].makeBlockHead(n);
              break;
            case 16:
            ;
            case 21:
            ;
            case 12:
            ;
            case 22:
            ;
            case 13:
            ;
            case 23:
            ;
            case 14:
            ;
            case 24:
            ;
            case 15:
            ;
            case 19:
            ;
            case 20:
            ;
            case 25:
            ;
            case 26:
            ;
            case 17:
            ;
            case 18:
              n = d.target.makeBlockHead(n), n = a[h + 1].makeBlockHead(n);
          }
        }
        d = a[p];
        switch(d.op) {
          case 27:
            d = d.targets;
            f = 0;
            for (m = d.length;f < m;f++) {
              n = d[f].makeBlockHead(n);
            }
            break;
          case 16:
            n = d.target.makeBlockHead(n);
            break;
          case 21:
          ;
          case 12:
          ;
          case 22:
          ;
          case 13:
          ;
          case 23:
          ;
          case 14:
          ;
          case 24:
          ;
          case 15:
          ;
          case 19:
          ;
          case 20:
          ;
          case 25:
          ;
          case 26:
          ;
          case 17:
          ;
          case 18:
            n = d.target.makeBlockHead(n), a[h + 1] = this.getInvalidTarget(null, h + 1), n = a[h + 1].makeBlockHead(n);
        }
        if (c) {
          for (f = 0;f < b.length;f++) {
            h = b[f], p = a[h.end + 1], n = a[h.start].makeBlockHead(n), p && (n = p.makeBlockHead(n)), n = h.target.makeBlockHead(n);
          }
        }
        var k = a[0];
        h = 1;
        for (p = a.length;h < p;h++) {
          if (a[h].succs) {
            g(k.succs);
            e[k.bid] = k;
            d = a[h - 1];
            k.end = d;
            var s = a[h];
            switch(d.op) {
              case 71:
              ;
              case 72:
              ;
              case 3:
                break;
              case 27:
                f = 0;
                for (m = d.targets.length;f < m;f++) {
                  k.succs.push(d.targets[f]);
                }
                break;
              case 16:
                k.succs.push(d.target);
                break;
              case 21:
              ;
              case 12:
              ;
              case 22:
              ;
              case 13:
              ;
              case 23:
              ;
              case 14:
              ;
              case 24:
              ;
              case 15:
              ;
              case 19:
              ;
              case 20:
              ;
              case 25:
              ;
              case 26:
              ;
              case 17:
              ;
              case 18:
                k.succs.push(d.target);
                d.target !== s && k.succs.push(s);
                break;
              default:
                k.succs.push(s);
            }
            if (c) {
              f = k;
              m = [];
              d = 0;
              for (var t = b.length;d < t;d++) {
                var K = b[d];
                f.position >= K.start && f.end.position <= K.end && m.push(K.target);
              }
              d = m;
              k.hasCatches = 0 < d.length;
              k.succs.push.apply(k.succs, d);
            }
            k = s;
          }
        }
        e[k.bid] = k;
        d = a[p - 1];
        switch(d.op) {
          case 27:
            f = 0;
            for (m = d.targets.length;f < m;f++) {
              k.succs.push(d.targets[f]);
            }
            break;
          case 16:
            k.succs.push(d.target);
        }
        k.end = d;
        this.makeBlockSetFactory(n, e);
      };
      a.prototype.normalizeReachableBlocks = function() {
        var a = this.bytecodes[0];
        g(0 === a.preds.length);
        var b = [], c = {}, e = {}, d = [a];
        for (e[a.bid] = !0;a = s(d);) {
          if (c[a.bid]) {
            if (1 === c[a.bid]) {
              c[a.bid] = 2;
              b.push(a);
              for (var h = a.succs, p = 0, n = h.length;p < n;p++) {
                h[p].preds.push(a);
              }
            }
            e[a.bid] = !1;
            d.pop();
          } else {
            for (c[a.bid] = 1, e[a.bid] = !0, h = a.succs, p = 0, n = h.length;p < n;p++) {
              var f = h[p];
              e[f.bid] && (a.spbacks || (a.spbacks = new this.boundBlockSet), a.spbacks.set(f.bid));
              !c[f.bid] && d.push(f);
            }
          }
        }
        this.blocks = b.reverse();
      };
      a.prototype.computeDominance = function() {
        var a = this.blocks, b = a.length, c = Array(b);
        c[0] = 0;
        for (var e = {}, d = 0;d < b;d++) {
          e[a[d].bid] = d;
        }
        for (var h = !0;h;) {
          for (h = !1, d = 1;d < b;d++) {
            var p = a[d].preds, n = p.length, f = e[p[0].bid];
            if (!(f in c)) {
              for (var m = 1;m < n && !(f = e[p[m].bid], f in c);m++) {
              }
            }
            g(f in c);
            for (m = 0;m < n;m++) {
              var k = e[p[m].bid];
              if (k !== f && k in c) {
                for (;k !== f;) {
                  for (;k > f;) {
                    k = c[k];
                  }
                  for (;f > k;) {
                    f = c[f];
                  }
                }
                f = k;
              }
            }
            c[d] !== f && (c[d] = f, h = !0);
          }
        }
        a[0].dominator = a[0];
        for (d = 1;d < b;d++) {
          e = a[d], m = a[c[d]], e.dominator = m, m.dominatees.push(e), e.npreds = e.preds.length;
        }
        b = [a[0]];
        for (a[0].level || (a[0].level = 0);e = b.shift();) {
          a = e.dominatees;
          for (m = 0;m < a.length;m++) {
            a[m].level = e.level + 1;
          }
          b.push.apply(b, a);
        }
      };
      a.prototype.markLoops = function() {
        function a(b) {
          var c = 1, h = {}, e = {}, d = [], p = [], l = [], n = b.level + 1;
          b = [b];
          for (var q, r;q = s(b);) {
            if (h[q.bid]) {
              if (m(p) === q) {
                p.pop();
                var f = [];
                do {
                  r = d.pop(), e[r.bid] = !0, f.push(r);
                } while (r !== q);
                (1 < f.length || r.spbacks && r.spbacks.get(r.bid)) && l.push(f);
              }
              b.pop();
            } else {
              h[q.bid] = c++;
              d.push(q);
              p.push(q);
              r = q.succs;
              for (var f = 0, x = r.length;f < x;f++) {
                if (q = r[f], !(q.level < n)) {
                  var w = q.bid;
                  if (!h[w]) {
                    b.push(q);
                  } else {
                    if (!e[w]) {
                      for (;h[m(p).bid] > h[w];) {
                        p.pop();
                      }
                    }
                  }
                }
              }
            }
          }
          return l;
        }
        function b(a, c) {
          var h = new e;
          h.setBlocks(a);
          h.recount();
          this.id = c;
          this.body = h;
          this.exit = new e;
          this.save = {};
          this.head = new e;
          this.npreds = 0;
          this._dirtyLocals = null;
        }
        if (!this.analyzedControlFlow && !this.analyzeControlFlow()) {
          return!1;
        }
        var c = this.bytecodes, e = this.boundBlockSet;
        b.prototype.getDirtyLocals = function() {
          if (this._dirtyLocals) {
            return this._dirtyLocals;
          }
          var a = this._dirtyLocals = [];
          this.body.members().forEach(function(b) {
            var h = b.position;
            for (b = b.end.position;h <= b;h++) {
              var e = c[h], d = e.op;
              switch(d) {
                case 146:
                ;
                case 148:
                ;
                case 99:
                ;
                case 194:
                ;
                case 195:
                  a[e.index] = !0;
                  break;
                case 50:
                  a[e.index] = !0;
                  a[e.object] = !0;
                  break;
                case 212:
                ;
                case 213:
                ;
                case 214:
                ;
                case 215:
                  a[d - 212] = !0;
              }
            }
          });
          return a;
        };
        var d = function(a) {
          for (var b = new e, c = 0, h = a.length;c < h;c++) {
            var d = a[c], p = d.spbacks;
            if (p) {
              for (var d = d.succs, l = 0, n = d.length;l < n;l++) {
                var q = d[l];
                p.get(q.bid) && b.set(q.dominator.bid);
              }
            }
          }
          return b.members();
        }(this.blocks);
        if (0 >= d.length) {
          return this.markedLoops = !0;
        }
        for (var d = d.sort(function(a, b) {
          return a.level - b.level;
        }), h = 0, p = d.length - 1;0 <= p;p--) {
          var n = d[p], f = a(n);
          if (0 !== f.length) {
            for (var g = 0, k = f.length;g < k;g++) {
              for (var t = f[g], O = new b(t, h++), K = 0, F = t.length;K < F;K++) {
                var J = t[K];
                if (J.level === n.level + 1 && !J.loop) {
                  J.loop = O;
                  O.head.set(J.bid);
                  for (var A = J.preds, B = 0, z = A.length;B < z;B++) {
                    O.body.get(A[B].bid) && J.npreds--;
                  }
                  O.npreds += J.npreds;
                }
              }
              K = 0;
              for (F = t.length;K < F;K++) {
                J = t[K], J.level === n.level + 1 && (J.npreds = O.npreds);
              }
              O.head.recount();
            }
          }
        }
        return this.markedLoops = !0;
      };
      return a;
    }();
    k.Analysis = p;
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Bytecode = Shumway.AVM2.Bytecode, Analysis = Shumway.AVM2.Analysis;
(function(b) {
  (function(k) {
    var g = b.Options.Option, f = b.Options.OptionSet, t = b.Settings.shumwayOptions.register(new f("AVM2"));
    (function(b) {
      var m = t.register(new f("Runtime"));
      b.traceExecution = m.register(new g("tx", "traceExecution", "number", 0, "trace script execution", {choices:{off:0, normal:2, verbose:3}}));
      b.traceCallExecution = m.register(new g("txc", "traceCallExecution", "number", 0, "trace call execution", {choices:{off:0, normal:1, verbose:2}}));
      b.traceFunctions = m.register(new g("t", "traceFunctions", "number", 0, "trace functions", {choices:{off:0, compiled:1, "compiled & abc":2}}));
      b.traceClasses = m.register(new g("tc", "traceClasses", "boolean", !1, "trace class creation"));
      b.traceDomain = m.register(new g("td", "traceDomain", "boolean", !1, "trace domain property access"));
      b.debuggerMode = m.register(new g("db", "debuggerMode", "boolean", !0, "enable debugger mode"));
      b.globalMultinameAnalysis = m.register(new g("ga", "globalMultinameAnalysis", "boolean", !1, "Global multiname analysis."));
      b.codeCaching = m.register(new g("cc", "codeCaching", "boolean", !1, "Enable code caching."));
      b.compilerEnableExceptions = m.register(new g("cex", "exceptions", "boolean", !1, "Compile functions with catch blocks."));
      b.compilerMaximumMethodSize = m.register(new g("cmms", "maximumMethodSize", "number", 4096, "Compiler maximum method size."));
      b = b.ExecutionMode || (b.ExecutionMode = {});
      b[b.INTERPRET = 1] = "INTERPRET";
      b[b.COMPILE = 2] = "COMPILE";
    })(k.Runtime || (k.Runtime = {}));
    (function(b) {
      b.options = t.register(new f("Compiler"));
      b.traceLevel = b.options.register(new g("tc4", "tc4", "number", 0, "Compiler Trace Level"));
      b.breakFilter = b.options.register(new g("", "break", "string", "", "Set a break point at methods whose qualified name matches this string pattern."));
      b.compileFilter = b.options.register(new g("", "compile", "string", "", "Only compile methods whose qualified name matches this string pattern."));
      b.enableDirtyLocals = b.options.register(new g("dl", "dirtyLocals", "boolean", !0, "Performe dirty local analysis to minimise PHI nodes."));
    })(k.Compiler || (k.Compiler = {}));
    (function(b) {
      b.options = t.register(new f("Verifier"));
      b.enabled = b.options.register(new g("verifier", "verifier", "boolean", !0, "Enable verifier."));
      b.traceLevel = b.options.register(new g("tv", "tv", "number", 0, "Verifier Trace Level"));
    })(k.Verifier || (k.Verifier = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Namespace = Shumway.AVM2.ABC.Namespace;
(function(b) {
  (function(k) {
    (function(g) {
      function f(a) {
        var c = this.resolutionMap[a.runtimeId];
        if (c) {
          return c;
        }
        var c = this.resolutionMap[a.runtimeId] = b.ObjectUtilities.createMap(), h = this.bindings, e;
        for (e in h.map) {
          var d = e, p = h.map[e].trait;
          if (p.isGetter() || p.isSetter()) {
            d = d.substring(g.Binding.KEY_PREFIX_LENGTH);
          }
          d = W.fromQualifiedName(d);
          d.getNamespace().inNamespaceSet(a) && (c[d.getName()] = W.getQualifiedName(p.name));
        }
        return c;
      }
      function t(a, c, h) {
        na(c) ? c = String(Q(c)) : "object" === typeof c && (c = String(c));
        return b.isNumeric(c) ? b.toNumber(c) : a ? 1 < a.length ? (a = this.getNamespaceResolutionMap(a)[c]) ? a : W.getPublicQualifiedName(c) : W.qualifyName(a[0], c) : W.getPublicQualifiedName(c);
      }
      function s(a) {
        return this.asGetProperty(void 0, a, 0);
      }
      function m(a, b, c) {
        a = this.resolveMultinameProperty(a, b, c);
        return this.asGetNumericProperty && W.isNumeric(a) ? this.asGetNumericProperty(a) : this[a];
      }
      function d(a) {
        la(b.isString(a));
        return this[a];
      }
      function a(a, b, c) {
        b = b ? null : this;
        var h = this.asOpenMethods;
        return(b && h && h[a] ? h[a] : this[a]).asApply(b, c);
      }
      function c(a, b) {
        return this.asSetProperty(void 0, a, 0, b);
      }
      function n(a, b) {
        b === W.VALUE_OF ? (ia(a, "original_valueOf", a.valueOf), a.valueOf = g.forwardValueOf) : b === W.TO_STRING && (ia(a, "original_toString", a.toString), a.toString = g.forwardToString);
      }
      function p(a, b, c, h) {
        "object" === typeof b && (b = String(b));
        a = this.resolveMultinameProperty(a, b, c);
        if (this.asSetNumericProperty && W.isNumeric(a)) {
          return this.asSetNumericProperty(a, h);
        }
        (b = this.asSlots.byQN[a]) && (b = b.type) && b.coerce && (h = b.coerce(h));
        n(this, a);
        this[a] = h;
      }
      function e(a, b) {
        return this.asDefineProperty(void 0, a, 0, b);
      }
      function q(a, b, c, h) {
        "object" === typeof b && (b = String(b));
        a = this.resolveMultinameProperty(a, b, c);
        Object.defineProperty(this, a, h);
      }
      function l(a, b) {
        return this.asCallProperty(void 0, a, 0, !1, b);
      }
      function u(a, b, c, h, e) {
        g.traceCallExecution.value && ra.enter("call " + (this.class ? this.class + " " : "") + b + "(" + ya(e) + ") #" + ka.count(b));
        h = h ? null : this;
        a = this.resolveMultinameProperty(a, b, c);
        this.asGetNumericProperty && W.isNumeric(a) ? a = this.asGetNumericProperty(a) : (b = this.asOpenMethods, a = h && b && b[a] ? b[a] : this[a]);
        e = a.asApply(h, e);
        0 < g.traceCallExecution.value && ra.leave("return " + va(e));
        return e;
      }
      function w(a, b, c, h, e) {
        g.traceCallExecution.value && ra.enter("call super " + (this.class ? this.class + " " : "") + c + "(" + ya(e) + ") #" + ka.count(c));
        a = a.object.baseClass;
        b = a.traitsPrototype.resolveMultinameProperty(b, c, h);
        c = a.traitsPrototype.asOpenMethods;
        la(c && c[b]);
        e = c[b].asApply(this, e);
        0 < g.traceCallExecution.value && ra.leave("return " + va(e));
        return e;
      }
      function r(a, b, c, h, e) {
        g.traceCallExecution.value && ra.enter("set super " + (this.class ? this.class + " " : "") + c + "(" + va(e) + ") #" + ka.count(c));
        a = a.object.baseClass;
        var d = a.traitsPrototype.resolveMultinameProperty(b, c, h);
        this.asSlots.byQN[d] ? this.asSetProperty(b, c, h, e) : a.traitsPrototype[g.VM_OPEN_SET_METHOD_PREFIX + d].call(this, e);
        0 < g.traceCallExecution.value && ra.leave("");
      }
      function h(a, b, c, h) {
        g.traceCallExecution.value && ra.enter("get super " + (this.class ? this.class + " " : "") + c + " #" + ka.count(c));
        a = a.object.baseClass;
        var e = a.traitsPrototype.resolveMultinameProperty(b, c, h);
        b = this.asSlots.byQN[e] ? this.asGetProperty(b, c, h) : a.traitsPrototype[g.VM_OPEN_GET_METHOD_PREFIX + e].call(this);
        0 < g.traceCallExecution.value && ra.leave("return " + va(b));
        return b;
      }
      function x(a, b) {
        if (a.classInfo) {
          var c = W.getQualifiedName(a.classInfo.instanceInfo.name);
          if (c === W.String) {
            return String.asApply(null, b);
          }
          if (c === W.Boolean) {
            return Boolean.asApply(null, b);
          }
          if (c === W.Number) {
            return Number.asApply(null, b);
          }
        }
        c = a.instanceConstructor;
        switch(b.length) {
          case 0:
            return new c;
          case 1:
            return new c(b[0]);
          case 2:
            return new c(b[0], b[1]);
          case 3:
            return new c(b[0], b[1], b[2]);
          case 4:
            return new c(b[0], b[1], b[2], b[3]);
          case 5:
            return new c(b[0], b[1], b[2], b[3], b[4]);
          case 6:
            return new c(b[0], b[1], b[2], b[3], b[4], b[5]);
          case 7:
            return new c(b[0], b[1], b[2], b[3], b[4], b[5], b[6]);
          case 8:
            return new c(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
          case 9:
            return new c(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8]);
          case 10:
            return new c(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9]);
        }
        for (var h = [], e = 0;e < b.length;e++) {
          h[e + 1] = b[e];
        }
        return new (Function.bind.asApply(c, h));
      }
      function y(a, b, c, h) {
        a = this.asGetProperty(a, b, c);
        g.traceCallExecution.value && ra.enter("construct " + b + "(" + ya(h) + ") #" + ka.count(b));
        b = x(a, h);
        0 < g.traceCallExecution.value && ra.leave("return " + va(b));
        return b;
      }
      function G(a, b, c) {
        return this.resolveMultinameProperty(a, b, c) in this;
      }
      function I(a, b, c) {
        a = this.resolveMultinameProperty(a, b, c);
        return oa(this, a);
      }
      function C(a, b, c) {
        a = this.resolveMultinameProperty(a, b, c);
        return pa(this, a);
      }
      function E(a, b, c) {
        return this.asHasTraitProperty(a, b, c) ? !1 : delete this[this.resolveMultinameProperty(a, b, c)];
      }
      function O(a, b, c) {
        a = this.resolveMultinameProperty(a, b, c);
        return 0 <= this.asBindings.indexOf(a);
      }
      function K(a) {
        return this[a];
      }
      function F(a, b) {
        this[a] = b;
      }
      function J(a) {
        0 === a && ia(this, "asEnumerableKeys", this.asGetEnumerableKeys());
        for (var b = this.asEnumerableKeys;a < b.length;) {
          if (this.asHasProperty(void 0, b[a], 0)) {
            return a + 1;
          }
          a++;
        }
        return 0;
      }
      function A(a) {
        var b = this.asEnumerableKeys;
        la(b && 0 < a && a < b.length + 1);
        return b[a - 1];
      }
      function B(a) {
        return this.asGetPublicProperty(this.asNextName(a));
      }
      function z(a) {
        if (na(a.object)) {
          a.index = 0, a.object = null;
        } else {
          var b = sa(a.object), c = b.asNextNameIndex(a.index);
          if (0 < c) {
            a.index = c, a.object = b;
          } else {
            for (;;) {
              b = Object.getPrototypeOf(b);
              if (!b) {
                a.index = 0;
                a.object = null;
                break;
              }
              c = b.asNextNameIndex(0);
              if (0 < c) {
                a.index = c;
                a.object = b;
                break;
              }
            }
          }
        }
      }
      function P() {
        if (this instanceof String || this instanceof Number) {
          return[];
        }
        for (var a = Object.keys(this), c = [], h = 0;h < a.length;h++) {
          var e = a[h];
          b.isNumeric(e) ? c.push(e) : (e = W.stripPublicQualifier(e), void 0 !== e && c.push(e));
        }
        return c;
      }
      function D(a, b) {
        a || L("TypeError", k.Errors.NullPointerError, b);
      }
      function L(a, c) {
        for (var h = 0;h < arguments.length - 2;h++) {
        }
        h = b.AVM2.formatErrorMessage.apply(null, Array.prototype.slice.call(arguments, 1));
        M(g.AVM2.currentDomain(), a, h, c.code);
      }
      function M(a, b, c, h) {
        throw new (a.getClass(b).instanceConstructor)(c, h);
      }
      function V(a, b) {
        return a.coerce(b);
      }
      function Q(a) {
        return "string" === typeof a ? a : void 0 == a ? null : a + "";
      }
      function U(a) {
        return void 0 == a ? null : "string" === typeof a || "number" === typeof a ? a : Object(a);
      }
      function S(a, b) {
        return String(a).localeCompare(String(b));
      }
      function aa(a) {
        return a instanceof b.AVM2.AS.ASXML || a instanceof b.AVM2.AS.ASXMLList;
      }
      function $(b) {
        "Object Number Boolean String Array Date RegExp".split(" ").forEach(function(a) {
          wa(b[a].prototype, g.VM_NATIVE_PROTOTYPE_FLAG, !0);
        });
        ia(b.Object.prototype, "getNamespaceResolutionMap", f);
        ia(b.Object.prototype, "resolveMultinameProperty", t);
        ia(b.Object.prototype, "asGetProperty", m);
        ia(b.Object.prototype, "asGetPublicProperty", s);
        ia(b.Object.prototype, "asGetResolvedStringProperty", d);
        ia(b.Object.prototype, "asSetProperty", p);
        ia(b.Object.prototype, "asSetPublicProperty", c);
        ia(b.Object.prototype, "asDefineProperty", q);
        ia(b.Object.prototype, "asDefinePublicProperty", e);
        ia(b.Object.prototype, "asCallProperty", u);
        ia(b.Object.prototype, "asCallSuper", w);
        ia(b.Object.prototype, "asGetSuper", h);
        ia(b.Object.prototype, "asSetSuper", r);
        ia(b.Object.prototype, "asCallPublicProperty", l);
        ia(b.Object.prototype, "asCallResolvedStringProperty", a);
        ia(b.Object.prototype, "asConstructProperty", y);
        ia(b.Object.prototype, "asHasProperty", G);
        ia(b.Object.prototype, "asHasPropertyInternal", G);
        ia(b.Object.prototype, "asHasOwnProperty", I);
        ia(b.Object.prototype, "asPropertyIsEnumerable", C);
        ia(b.Object.prototype, "asHasTraitProperty", O);
        ia(b.Object.prototype, "asDeleteProperty", E);
        ia(b.Object.prototype, "asHasNext2", z);
        ia(b.Object.prototype, "asNextName", A);
        ia(b.Object.prototype, "asNextValue", B);
        ia(b.Object.prototype, "asNextNameIndex", J);
        ia(b.Object.prototype, "asGetEnumerableKeys", P);
        ia(b.Function.prototype, "asCall", b.Function.prototype.call);
        ia(b.Function.prototype, "asApply", b.Function.prototype.apply);
        "Array Object Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" ").forEach(function(a) {
          a in b ? (ia(b[a].prototype, "asGetNumericProperty", K), ia(b[a].prototype, "asSetNumericProperty", F)) : log(a + " was not found in globals");
        });
        b.Array.prototype.asGetProperty = function(a, b, c) {
          return "number" === typeof b ? this[b] : m.call(this, a, b, c);
        };
        b.Array.prototype.asSetProperty = function(a, b, c, h) {
          if ("number" === typeof b) {
            this[b] = h;
          } else {
            return p.call(this, a, b, c, h);
          }
        };
      }
      function ea(a, b) {
        b && (new g.CatchBindings(new g.Scope(null, this), b)).applyTo(a, this);
      }
      function Z(a, b) {
        "undefined" === typeof b && (b = 0);
        return Array.prototype.slice.call(a, b);
      }
      function v(a) {
        return!a.hasBody || a.hasExceptions() && !g.compilerEnableExceptions.value || a.hasSetsDxns() || a.code.length > g.compilerMaximumMethodSize.value ? !1 : !0;
      }
      function X(a) {
        return!v(a) || a.isClassInitializer || a.isScriptInitializer ? !1 : !0;
      }
      function ba(a) {
        if (a.hasExceptions()) {
          return!1;
        }
        a = a.holder;
        a instanceof da && (a = a.instanceInfo);
        if (a instanceof ja) {
          switch(a.name.namespaces[0].uri) {
            case "flash.geom":
            ;
            case "flash.events":
              return!0;
          }
          switch(a.name.getOriginalName()) {
            case "com.google.youtube.model.VideoData":
              return!0;
          }
        }
        return!1;
      }
      function R(a) {
        if (g.codeCaching.value) {
          var b = g.CODE_CACHE[a.abc.hash];
          if (b) {
            b.isInitialized || (b.isInitialized = !0);
            if (b = b.methods[a.index]) {
              return log("Linking CC: " + a), k.countTimeline("Code Cache Hit"), b;
            }
            a.isInstanceInitializer || a.isClassInitializer ? k.countTimeline("Code Cache Query On Initializer") : (k.countTimeline("Code Cache MISS ON OTHER"), warn("Shouldn't MISS: " + a + " " + a.debugName));
            k.countTimeline("Code Cache Miss");
          } else {
            warn("Cannot Find Code Cache For ABC, name: " + a.abc.name + ", hash: " + a.abc.hash), k.countTimeline("Code Cache ABC Miss");
          }
        }
      }
      function H(a, c, h) {
        var e = !1, d = a.parameters.map(function(a) {
          void 0 !== a.value && (e = !0);
          return a.value;
        });
        h = h ? function(c) {
          var h = this === jsGlobal ? c.global.object : this, p = Z(arguments, 1);
          e && p.length < d.length && (p = p.concat(d.slice(p.length - d.length)));
          return b.AVM2.Interpreter.interpretMethod(h, a, c, p);
        } : function() {
          var h = this === jsGlobal ? c.global.object : this, p = Z(arguments);
          e && p.length < d.length && (p = p.concat(d.slice(arguments.length - d.length)));
          return b.AVM2.Interpreter.interpretMethod(h, a, c, p);
        };
        a.hasSetsDxns() && (h = function(a) {
          return function() {
            var c = b.AVM2.AS.ASXML.defaultNamespace;
            try {
              var h = a.apply(this, arguments);
              b.AVM2.AS.ASXML.defaultNamespace = c;
              return h;
            } catch (e) {
              throw b.AVM2.AS.ASXML.defaultNamespace = c, e;
            }
          };
        }(h));
        h.instanceConstructor = h;
        h.debugName = "Interpreter Function #" + Ga++;
        return h;
      }
      function Y(a, c, h, e, d) {
        d = R(a);
        var p;
        d || (p = k.Compiler.compileMethod(a, c, h));
        c = a.name ? W.getQualifiedName(a.name) : "fn" + Aa;
        a.holder && (h = "", a.holder instanceof da ? h = "static$" + a.holder.instanceInfo.name.getName() : a.holder instanceof ja ? h = a.holder.name.getName() : a.holder instanceof N && (h = "script"), c = h + "$" + c);
        c = b.StringUtilities.escapeString(c);
        a.verified && (c += "$V");
        e || (h = b.AVM2.Compiler.breakFilter.value) && 0 <= c.search(h) && (e = !0);
        h = p.body;
        e && (h = "{ debugger; \n" + h + "}");
        if (!d) {
          var l = "function " + c + " (" + p.parameters.join(", ") + ") " + h
        }
        1 < g.traceFunctions.value && a.trace(new T, a.abc);
        a.debugTrace = function() {
          a.trace(new T, a.abc);
        };
        0 < g.traceFunctions.value && log(l);
        e = d || (new Function("return " + l))();
        e.debugName = "Compiled Function #" + Ha++;
        return e;
      }
      function ga(a, c, h, e) {
        la(!a.isNative(), "Method should have a builtin: " + a.name);
        if (a.freeMethod) {
          return h ? g.bindFreeMethodScope(a, c) : a.freeMethod;
        }
        var d;
        if (d = g.checkMethodOverrides(a)) {
          return la(!h), d;
        }
        ca(a);
        d = !1;
        1 !== a.abc.applicationDomain.mode && X(a) || ba(a) || (d = !0);
        var p = b.AVM2.Compiler.compileFilter.value;
        p && a.name && 0 > W.getQualifiedName(a.name).search(p) && (d = !0);
        d ? a.freeMethod = H(a, c, h) : (Aa++, a.freeMethod = Y(a, c, h, e, a.isInstanceInitializer));
        a.freeMethod.methodInfo = a;
        return h ? g.bindFreeMethodScope(a, c) : a.freeMethod;
      }
      function ca(a) {
        if (!a.analysis) {
          a.analysis = new k.Analysis(a);
          a.needsActivation() && (a.activationPrototype = new Ba(a), (new g.ActivationBindings(a)).applyTo(a.abc.applicationDomain, a.activationPrototype));
          for (var b = a.exceptions, c = 0, h = b.length;c < h;c++) {
            var e = b[c];
            if (e.varName) {
              var d = Object.create(ma.prototype);
              d.kind = 0;
              d.name = e.varName;
              d.typeName = e.typeName;
              d.holder = a;
              e.scopeObject = new ea(a.abc.applicationDomain, d);
            } else {
              e.scopeObject = new ea(void 0, void 0);
            }
          }
        }
      }
      g.sealConstTraits = !1;
      g.useAsAdd = !0;
      var ka = new b.Metrics.Counter(!0), W = b.AVM2.ABC.Multiname, ha = b.AVM2.ABC.Namespace, da = b.AVM2.ABC.ClassInfo, ja = b.AVM2.ABC.InstanceInfo, N = b.AVM2.ABC.ScriptInfo, ma = b.AVM2.ABC.Trait, T = b.IndentingWriter, oa = b.ObjectUtilities.hasOwnProperty, pa = b.ObjectUtilities.propertyIsEnumerable, na = b.isNullOrUndefined, fa = b.ObjectUtilities.createEmptyObject, sa = b.ObjectUtilities.boxValue, xa = b.FunctionUtilities.bindSafely, la = b.Debug.assert, qa = b.ObjectUtilities.defineNonEnumerableGetterOrSetter, 
      ia = b.ObjectUtilities.defineNonEnumerableProperty, wa = b.ObjectUtilities.defineReadOnlyProperty, Ia = b.ObjectUtilities.defineNonEnumerableGetter, va = b.StringUtilities.toSafeString, ya = b.StringUtilities.toSafeArrayString;
      g.VM_SLOTS = "asSlots";
      g.VM_LENGTH = "asLength";
      g.VM_BINDINGS = "asBindings";
      g.VM_NATIVE_PROTOTYPE_FLAG = "asIsNative";
      g.VM_OPEN_METHODS = "asOpenMethods";
      g.VM_OPEN_METHOD_PREFIX = "m";
      g.VM_MEMOIZER_PREFIX = "z";
      g.VM_OPEN_SET_METHOD_PREFIX = "s";
      g.VM_OPEN_GET_METHOD_PREFIX = "g";
      g.SAVED_SCOPE_NAME = "$SS";
      g.VM_METHOD_OVERRIDES = fa();
      var Ga = 1, Ha = 1, Aa = 0;
      g.isNativePrototype = function(a) {
        return Object.prototype.hasOwnProperty.call(a, g.VM_NATIVE_PROTOTYPE_FLAG);
      };
      var ra = new T;
      g.patch = function(a, c) {
        la(b.isFunction(c));
        for (var h = 0;h < a.length;h++) {
          var e = a[h];
          e.get ? qa(e.object, e.get, c, !0) : e.set ? qa(e.object, e.set, c, !1) : ia(e.object, e.name, c);
        }
      };
      g.applyNonMemoizedMethodTrait = function(a, c, h, e, d) {
        la(e);
        if (c.isMethod()) {
          var p = [{object:h, name:a}, {object:h, name:g.VM_OPEN_METHOD_PREFIX + a}];
          c = g.makeTrampoline(c, e, d, p, c.methodInfo.parameters.length, "");
          var l = xa(c, h);
          wa(l, g.VM_LENGTH, c.asLength);
          wa(l, W.getPublicQualifiedName("prototype"), null);
          ia(h, a, l);
          ia(h, g.VM_OPEN_METHOD_PREFIX + a, l);
        } else {
          if (c.isGetter() || c.isSetter()) {
            var p = [{object:h}], n = 0;
            (l = c.isGetter()) ? p[0].get = a : (p[0].set = a, n = 1);
            c = g.makeTrampoline(c, e, d, p, n, "");
            qa(h, a, c, l);
          } else {
            b.Debug.unexpected(c);
          }
        }
      };
      g.applyMemoizedMethodTrait = function(a, b, c, h, e) {
        la(h, b);
        if (b.isMethod()) {
          var d = {value:null}, p = c.asOpenMethods, l = [{object:d, name:"value"}, {object:p, name:a}, {object:c, name:g.VM_OPEN_METHOD_PREFIX + a}];
          b = g.makeTrampoline(b, h, e, l, b.methodInfo.parameters.length, String(b.name));
          d.value = b;
          p[a] = b;
          ia(c, g.VM_OPEN_METHOD_PREFIX + a, b);
          Ia(c, a, g.makeMemoizer(a, d));
          n(c, a);
        } else {
          b.isGetter() ? (l = [{object:c, get:a}, {object:c, name:g.VM_OPEN_GET_METHOD_PREFIX + a}], b = g.makeTrampoline(b, h, e, l, 0, String(b.name)), ia(c, g.VM_OPEN_GET_METHOD_PREFIX + a, b), qa(c, a, b, !0)) : b.isSetter() && (l = [{object:c, set:a}, {object:c, name:g.VM_OPEN_SET_METHOD_PREFIX + a}], b = g.makeTrampoline(b, h, e, l, 0, String(b.name)), ia(c, g.VM_OPEN_SET_METHOD_PREFIX + a, b), qa(c, a, b, !1));
        }
      };
      g.getNamespaceResolutionMap = f;
      g.resolveMultinameProperty = t;
      g.asGetPublicProperty = s;
      g.asGetProperty = m;
      g.asGetResolvedStringProperty = d;
      g.asCallResolvedStringProperty = a;
      g.asGetResolvedStringPropertyFallback = function(a) {
        a = W.getNameFromPublicQualifiedName(a);
        return this.asGetProperty([ha.PUBLIC], a, 0);
      };
      g.asSetPublicProperty = c;
      g.forwardValueOf = new Function("", "return this." + W.VALUE_OF + ".apply(this, arguments)");
      g.forwardToString = new Function("", "return this." + W.TO_STRING + ".apply(this, arguments)");
      g.asSetProperty = p;
      g.asDefinePublicProperty = e;
      g.asDefineProperty = q;
      g.asCallPublicProperty = l;
      g.asCallProperty = u;
      g.asCallSuper = w;
      g.asSetSuper = r;
      g.asGetSuper = h;
      g.construct = x;
      g.asConstructProperty = y;
      g.asHasProperty = G;
      g.asHasOwnProperty = I;
      g.asPropertyIsEnumerable = C;
      g.asDeleteProperty = E;
      g.asHasTraitProperty = O;
      g.asGetNumericProperty = K;
      g.asSetNumericProperty = F;
      g.asGetDescendants = function(a, c, h) {
        b.Debug.notImplemented("asGetDescendants");
      };
      g.asNextNameIndex = J;
      g.asNextName = A;
      g.asNextValue = B;
      g.asHasNext2 = z;
      g.asGetEnumerableKeys = P;
      g.asTypeOf = function(a) {
        if (a) {
          if (a.constructor === String) {
            return "string";
          }
          if (a.constructor === Number) {
            return "number";
          }
          if (a.constructor === Boolean) {
            return "boolean";
          }
          if (a instanceof b.AVM2.AS.ASXML || a instanceof b.AVM2.AS.ASXMLList) {
            return "xml";
          }
          if (b.AVM2.AS.ASClass.isType(a)) {
            return "object";
          }
        }
        return typeof a;
      };
      g.publicizeProperties = function(a) {
        for (var b = Object.keys(a), c = 0;c < b.length;c++) {
          var h = b[c];
          if (!W.isPublicQualifiedName(h)) {
            var e = a[h];
            a[W.getPublicQualifiedName(h)] = e;
            delete a[h];
          }
        }
      };
      g.asGetSlot = function(a, b) {
        return a[a.asSlots.byID[b].name];
      };
      g.asSetSlot = function(a, b, c) {
        b = a.asSlots.byID[b];
        if (!b.const) {
          var h = b.type;
          a[b.name] = h && h.coerce ? h.coerce(c) : c;
        }
      };
      g.asCheckVectorSetNumericProperty = function(a, c, h) {
        (0 > a || a > c || a === c && h || !b.isNumeric(a)) && L("RangeError", k.Errors.OutOfRangeError, a, c);
      };
      g.asCheckVectorGetNumericProperty = function(a, c) {
        (0 > a || a >= c || !b.isNumeric(a)) && L("RangeError", k.Errors.OutOfRangeError, a, c);
      };
      g.checkNullParameter = D;
      g.checkParameterType = function(a, b, c) {
        D(a, b);
        c.isType(a) || L("TypeError", k.Errors.CheckTypeFailedError, a, c.classInfo.instanceInfo.name.getOriginalName());
      };
      g.throwError = L;
      g.throwErrorFromVM = M;
      g.translateError = function(a, c) {
        if (c instanceof Error) {
          var h = a.getClass(c.name);
          if (h) {
            return new h.instanceConstructor(b.AVM2.translateErrorMessage(c));
          }
          b.Debug.unexpected("Can't translate error: " + c);
        }
        return c;
      };
      g.asIsInstanceOf = function(a, b) {
        return a.isInstanceOf(b);
      };
      g.asIsType = function(a, b) {
        return a.isType(b);
      };
      g.asAsType = function(a, b) {
        return a.isType(b) ? b : null;
      };
      g.asCoerceByMultiname = function(a, b, c) {
        la(b.isQName());
        switch(W.getQualifiedName(b)) {
          case W.Int:
            return c | 0;
          case W.Uint:
            return c >>> 0;
          case W.String:
            return Q(c);
          case W.Number:
            return+c;
          case W.Boolean:
            return!!c;
          case W.Object:
            return U(c);
        }
        return V(a.abc.applicationDomain.getType(b), c);
      };
      g.asCoerce = V;
      g.asCoerceString = Q;
      g.asCoerceInt = function(a) {
        return a | 0;
      };
      g.asCoerceUint = function(a) {
        return a >>> 0;
      };
      g.asCoerceNumber = function(a) {
        return+a;
      };
      g.asCoerceBoolean = function(a) {
        return!!a;
      };
      g.asCoerceObject = U;
      g.asDefaultCompareFunction = S;
      g.asCompare = function(a, c, h, e) {
        b.Debug.assertNotImplemented(!(h & 4), "UNIQUESORT");
        b.Debug.assertNotImplemented(!(h & 8), "RETURNINDEXEDARRAY");
        var d = 0;
        e || (e = S);
        h & 1 && (a = String(a).toLowerCase(), c = String(c).toLowerCase());
        h & 16 ? (a = b.toNumber(a), c = b.toNumber(c), d = a < c ? -1 : a > c ? 1 : 0) : d = e(a, c);
        h & 2 && (d *= -1);
        return d;
      };
      g.asAdd = function(a, b) {
        return "string" === typeof a || "string" === typeof b ? String(a) + String(b) : a + b;
      };
      g.getDescendants = function(a, b) {
        if (!aa(a)) {
          throw "Not XML object in getDescendants";
        }
        return a.descendants(b);
      };
      g.checkFilter = function(a) {
        if (!a.class || !aa(a)) {
          throw "TypeError operand of childFilter not of XML type";
        }
        return a;
      };
      g.initializeGlobalObject = $;
      $(jsGlobal);
      g.nameInTraits = function(a, b) {
        if (a.hasOwnProperty(g.VM_BINDINGS) && a.hasOwnProperty(b)) {
          return!0;
        }
        var c = Object.getPrototypeOf(a);
        return c.hasOwnProperty(g.VM_BINDINGS) && c.hasOwnProperty(b);
      };
      g.CatchScopeObject = ea;
      var ta = function() {
        function a(b) {
          this.scriptInfo = b;
          b.global = this;
          this.scriptBindings = new g.ScriptBindings(b, new g.Scope(null, this, !1));
          this.scriptBindings.applyTo(b.abc.applicationDomain, this);
          b.loaded = !0;
        }
        a.prototype.toString = function() {
          return "[object global]";
        };
        a.prototype.isExecuted = function() {
          return this.scriptInfo.executed;
        };
        a.prototype.isExecuting = function() {
          return this.scriptInfo.executing;
        };
        a.prototype.ensureExecuted = function() {
          b.AVM2.Runtime.ensureScriptIsExecuted(this.scriptInfo);
        };
        return a;
      }();
      g.Global = ta;
      ia(ta.prototype, W.getPublicQualifiedName("toString"), function() {
        return this.toString();
      });
      ta = function() {
        function a(b) {
          this._isLazyInitializer = !0;
          la(!b.asLazyInitializer);
          this._target = b;
          this._resolved = null;
        }
        a.create = function(b) {
          return b.asLazyInitializer ? b.asLazyInitializer : b.asLazyInitializer = new a(b);
        };
        a.prototype.resolve = function() {
          if (this._resolved) {
            return this._resolved;
          }
          if (this._target instanceof N) {
            var a = this._target;
            g.ensureScriptIsExecuted(a, "Lazy Initializer");
            return this._resolved = a.global;
          }
          if (this._target instanceof da) {
            return a = this._target, a.classObject ? this._resolved = a.classObject : this._resolved = a.abc.applicationDomain.getProperty(a.instanceInfo.name, !1, !1);
          }
          b.Debug.notImplemented(String(this._target));
        };
        return a;
      }();
      g.LazyInitializer = ta;
      g.forEachPublicProperty = function(a, c, h) {
        if (!a.asBindings) {
          for (var e in a) {
            c.call(h, e, a[e]);
          }
        } else {
          for (e in a) {
            if (b.isNumeric(e)) {
              c.call(h, e, a[e]);
            } else {
              if (W.isPublicQualifiedName(e) && 0 > a.asBindings.indexOf(e)) {
                var d = W.stripPublicQualifier(e);
                c.call(h, d, a[e]);
              }
            }
          }
        }
      };
      g.wrapJSObject = function(a) {
        var b = Object.create(a), c;
        for (c in a) {
          Object.defineProperty(b, W.getPublicQualifiedName(c), function(a, b) {
            return{get:function() {
              return a[b];
            }, set:function(c) {
              a[b] = c;
            }, enumerable:!0};
          }(a, c));
        }
        return b;
      };
      g.asCreateActivation = function(a) {
        return Object.create(a.activationPrototype);
      };
      ta = function() {
        function a() {
        }
        a.updateTraits = function(c) {
          for (var h = 0;h < c.length;h++) {
            var e = c[h], d = e.name.name, e = e.name.getNamespace();
            e.isDynamic() || (a.hasNonDynamicNamespaces[d] = !0, a.wasResolved[d] && b.Debug.notImplemented("We have to the undo the optimization, " + d + " can now bind to " + e));
          }
        };
        a.loadAbc = function(b) {
          if (g.globalMultinameAnalysis.value) {
            var c = b.scripts, h = b.classes;
            b = b.methods;
            for (var e = 0;e < c.length;e++) {
              a.updateTraits(c[e].traits);
            }
            for (e = 0;e < h.length;e++) {
              a.updateTraits(h[e].traits), a.updateTraits(h[e].instanceInfo.traits);
            }
            for (e = 0;e < b.length;e++) {
              b[e].traits && a.updateTraits(b[e].traits);
            }
          }
        };
        a.resolveMultiname = function(b) {
          var c = b.name;
          if (!a.hasNonDynamicNamespaces[c]) {
            return a.wasResolved[c] = !0, new W([ha.PUBLIC], b.name);
          }
        };
        a.hasNonDynamicNamespaces = fa();
        a.wasResolved = fa();
        return a;
      }();
      g.GlobalMultinameResolver = ta;
      var Ba = function() {
        return function(a) {
          this.methodInfo = a;
        };
      }();
      g.ActivationInfo = Ba;
      g.HasNext2Info = function() {
        return function(a, b) {
          this.object = a;
          this.index = b;
        };
      }();
      g.sliceArguments = Z;
      g.canCompile = v;
      g.shouldCompile = X;
      g.forceCompile = ba;
      g.CODE_CACHE = fa();
      g.searchCodeCache = R;
      g.createInterpretedFunction = H;
      g.debugName = function(a) {
        return b.isFunction(a) ? a.debugName : a;
      };
      g.createCompiledFunction = Y;
      g.createFunction = ga;
      g.ensureFunctionIsInitialized = ca;
      g.getTraitFunction = function(a, c, h) {
        la(c);
        la(a.isMethod() || a.isGetter() || a.isSetter());
        var e = a.methodInfo, d;
        if (e.isNative()) {
          if ((c = a.metadata) && c.native ? d = b.AVM2.AS.getNative(c.native.value[0].value) : h && (d = b.AVM2.AS.getMethodOrAccessorNative(a, h)), !d) {
            return b.Debug.warning("No native method for: " + a.kindName() + " " + e.holder + "::" + W.getQualifiedName(e.name) + ", make sure you've got the static keyword for static methods."), function(c) {
              return function() {
                b.Debug.warning("Calling undefined native method: " + a.kindName() + " " + c.holder.name + "::" + W.getQualifiedName(c.name));
              };
            }(e);
          }
        } else {
          2 <= g.traceExecution.value && log("Creating Function For Trait: " + a.holder + " " + a), d = ga(e, c, !1, !1), la(d);
        }
        3 <= g.traceExecution.value && log("Made Function: " + W.getQualifiedName(e.name));
        return d;
      };
      g.createClass = function(a, c, h) {
        var e = a.instanceInfo, d = a.abc.applicationDomain, p = W.getName(e.name);
        k.enterTimeline("createClass", {className:p, classInfo:a});
        g.traceExecution.value && log("Creating " + (e.isInterface() ? "Interface" : "Class") + ": " + p + (a.native ? " replaced with native " + a.native.cls : ""));
        c = e.isInterface() ? b.AVM2.AS.createInterface(a) : b.AVM2.AS.createClass(a, c, h);
        g.traceClasses.value && (d.loadedClasses.push(c), d.traceLoadedClasses());
        if (e.isInterface()) {
          return k.leaveTimeline(), c;
        }
        d.onMessage.notify1("classCreated", c);
        a.classObject = c;
        g.traceExecution.value && log("Running " + (e.isInterface() ? "Interface" : "Class") + ": " + p + " Static Constructor");
        k.enterTimeline("staticInitializer");
        ga(a.init, h, !1, !1).call(c);
        k.leaveTimeline();
        g.traceExecution.value && log("Done With Static Constructor");
        g.sealConstTraits && this.sealConstantTraits(c, a.traits);
        k.leaveTimeline();
        return c;
      };
      g.sealConstantTraits = function(a, b) {
        for (var c = 0, h = b.length;c < h;c++) {
          var e = b[c];
          e.isConst() && (e = W.getQualifiedName(e.name), function(b, c) {
            Object.defineProperty(a, b, {configurable:!1, enumerable:!1, get:function() {
              return c;
            }, set:function() {
              M(g.AVM2.currentDomain(), "ReferenceError", "Illegal write to read-only property " + b + ".", 0);
            }});
          }(e, a[e]));
        }
      };
      g.applyType = function(a, c, h) {
        c = c.classInfo.instanceInfo.name.name;
        if ("Vector" === c) {
          la(1 === h.length);
          h = h[0];
          if (!na(h)) {
            switch(c = h.classInfo.instanceInfo.name.name.toLowerCase(), c) {
              case "number":
                c = "double";
              case "int":
              ;
              case "uint":
              ;
              case "double":
                return a.abc.applicationDomain.getClass("packageInternal __AS3__.vec.Vector$" + c);
            }
          }
          return a.abc.applicationDomain.getClass("packageInternal __AS3__.vec.Vector$object").applyType(h);
        }
        b.Debug.notImplemented(c);
      };
      g.createName = function(a, b) {
        return new W(a, b);
      };
    })(k.Runtime || (k.Runtime = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var CC = Shumway.AVM2.Runtime.CODE_CACHE, HasNext2Info = Shumway.AVM2.Runtime.HasNext2Info, asCreateActivation = Shumway.AVM2.Runtime.asCreateActivation, asIsInstanceOf = Shumway.AVM2.Runtime.asIsInstanceOf, asIsType = Shumway.AVM2.Runtime.asIsType, asAsType = Shumway.AVM2.Runtime.asAsType, asTypeOf = Shumway.AVM2.Runtime.asTypeOf, asCoerceByMultiname = Shumway.AVM2.Runtime.asCoerceByMultiname, asCoerce = Shumway.AVM2.Runtime.asCoerce, asCoerceString = Shumway.AVM2.Runtime.asCoerceString, asCoerceInt = 
Shumway.AVM2.Runtime.asCoerceInt, asCoerceUint = Shumway.AVM2.Runtime.asCoerceUint, asCoerceNumber = Shumway.AVM2.Runtime.asCoerceNumber, asCoerceBoolean = Shumway.AVM2.Runtime.asCoerceBoolean, asCoerceObject = Shumway.AVM2.Runtime.asCoerceObject, asCompare = Shumway.AVM2.Runtime.asCompare, asAdd = Shumway.AVM2.Runtime.asAdd, applyType = Shumway.AVM2.Runtime.applyType, asGetSlot = Shumway.AVM2.Runtime.asGetSlot, asSetSlot = Shumway.AVM2.Runtime.asSetSlot, asHasNext2 = Shumway.AVM2.Runtime.asHasNext2, 
getDescendants = Shumway.AVM2.Runtime.getDescendants, checkFilter = Shumway.AVM2.Runtime.checkFilter, sliceArguments = Shumway.AVM2.Runtime.sliceArguments, createFunction = Shumway.AVM2.Runtime.createFunction, createName = Shumway.AVM2.Runtime.createName;
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.AVM2.ABC.Multiname, t = b.ObjectUtilities.createEmptyObject, s = b.Debug.assert, m = b.ObjectUtilities.boxValue, d = function() {
        function a(a, d, p) {
          "undefined" === typeof p && (p = !1);
          this.parent = a;
          this.object = m(d);
          s(b.isObject(this.object));
          this.global = a ? a.global : this;
          this.isWith = p;
          this.cache = t();
        }
        a.prototype.findDepth = function(a) {
          for (var b = this, d = 0;b;) {
            if (b.object === a) {
              return d;
            }
            d++;
            b = b.parent;
          }
          return-1;
        };
        a.prototype.getScopeObjects = function() {
          for (var a = [], b = this;b;) {
            a.unshift(b.object), b = b.parent;
          }
          return a;
        };
        a.prototype.findScopeProperty = function(a, d, p, e, q, l) {
          k.countTimeline("findScopeProperty");
          var g, w;
          w = a ? 1 < a.length ? a.runtimeId + "$" + d : a[0].qualifiedName + "$" + d : d;
          if (!l && (g = this.cache[w])) {
            return g;
          }
          if (this.object.asHasPropertyInternal(a, d, p)) {
            return this.isWith ? this.object : this.cache[w] = this.object;
          }
          if (this.parent) {
            return this.cache[w] = this.parent.findScopeProperty(a, d, p, e, q, l);
          }
          if (l) {
            return null;
          }
          if (g = e.abc.applicationDomain.findDomainProperty(new f(a, d, p), q, !0)) {
            return g;
          }
          q && b.Debug.unexpected("Cannot find property " + d);
          return this.global.object;
        };
        return a;
      }();
      g.Scope = d;
      g.bindFreeMethodScope = function(a, b) {
        var d = a.freeMethod;
        if (a.lastBoundMethod && a.lastBoundMethod.scope === b) {
          return a.lastBoundMethod.boundMethod;
        }
        s(d, "There should already be a cached method.");
        var p, e = b.global.object;
        if (!a.hasOptional() && !a.needsArguments() && !a.needsRest()) {
          switch(a.parameters.length) {
            case 0:
              p = function() {
                return d.call(this === jsGlobal ? e : this, b);
              };
              break;
            case 1:
              p = function(a) {
                return d.call(this === jsGlobal ? e : this, b, a);
              };
              break;
            case 2:
              p = function(a, p) {
                return d.call(this === jsGlobal ? e : this, b, a, p);
              };
              break;
            case 3:
              p = function(a, p, f) {
                return d.call(this === jsGlobal ? e : this, b, a, p, f);
              };
          }
        }
        p || (k.countTimeline("Bind Scope - Slow Path"), p = function() {
          Array.prototype.unshift.call(arguments, b);
          return d.asApply(this === jsGlobal ? b.global.object : this, arguments);
        });
        p.methodInfo = a;
        p.instanceConstructor = p;
        a.lastBoundMethod = {scope:b, boundMethod:p};
        return p;
      };
    })(k.Runtime || (k.Runtime = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Scope = Shumway.AVM2.Runtime.Scope;
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.AVM2.ABC.Multiname, t = b.AVM2.ABC.Trait, s = b.ObjectUtilities.hasOwnProperty, m = b.ObjectUtilities.createMap, d = b.ObjectUtilities.cloneObject, a = b.ObjectUtilities.copyProperties, c = b.ObjectUtilities.createEmptyObject, n = b.Debug.assert, p = b.ObjectUtilities.defineNonEnumerableProperty, e = b.ObjectUtilities.defineNonEnumerableGetter, q = b.FunctionUtilities.makeForwardingGetter, l = b.ArrayUtilities.pushUnique, u = function() {
        function a(b) {
          this.trait = b;
        }
        a.getKey = function(b, c) {
          var h = b;
          c.isGetter() ? h = a.GET_PREFIX + b : c.isSetter() && (h = a.SET_PREFIX + b);
          return h;
        };
        a.prototype.toString = function() {
          return String(this.trait);
        };
        a.SET_PREFIX = "set ";
        a.GET_PREFIX = "get ";
        a.KEY_PREFIX_LENGTH = 4;
        return a;
      }();
      g.Binding = u;
      var w = function() {
        return function(a, b, c, h) {
          this.name = a;
          this.isConst = b;
          this.type = c;
          this.trait = h;
        };
      }();
      g.SlotInfo = w;
      var r = function() {
        return function() {
          this.byID = m();
          this.byQN = m();
        };
      }();
      g.SlotInfoMap = r;
      var h = function() {
        function a() {
          this.map = m();
          this.slots = [];
          this.nextSlotId = 1;
        }
        a.prototype.assignNextSlot = function(a) {
          n(a instanceof t);
          n(a.isSlot() || a.isConst() || a.isClass());
          a.slotId ? this.nextSlotId = a.slotId + 1 : a.slotId = this.nextSlotId++;
          n(!this.slots[a.slotId], "Trait slot already taken.");
          this.slots[a.slotId] = a;
        };
        a.prototype.trace = function(a) {
          a.enter("Bindings");
          for (var b in this.map) {
            var c = this.map[b];
            a.writeLn(c.trait.kindName() + ": " + b + " -> " + c);
          }
          a.leaveAndEnter();
          a.writeArray(this.slots);
          a.outdent();
        };
        a.prototype.applyTo = function(a, b, c) {
          "undefined" === typeof c && (c = !1);
          c || (n(!s(b, g.VM_SLOTS), "Already has VM_SLOTS."), n(!s(b, g.VM_BINDINGS), "Already has VM_BINDINGS."), n(!s(b, g.VM_OPEN_METHODS), "Already has VM_OPEN_METHODS."), p(b, g.VM_SLOTS, new r), p(b, g.VM_BINDINGS, []), p(b, g.VM_OPEN_METHODS, m()), p(b, "bindings", this), p(b, "resolutionMap", []));
          G && G.greenLn("Applying Traits" + (c ? " (Append)" : ""));
          for (var h in this.map) {
            var d = this.map[h];
            c = d.trait;
            var x = f.getQualifiedName(c.name);
            if (c.isSlot() || c.isConst() || c.isClass()) {
              d = void 0;
              if (c.isSlot() || c.isConst()) {
                if (c.hasDefaultValue) {
                  d = c.value;
                } else {
                  if (c.typeName) {
                    var I = a.findClassInfo(c.typeName);
                    I && (d = I.defaultValue);
                  }
                }
              }
              h !== x ? (G && G.yellowLn("Binding Trait: " + h + " -> " + x), e(b, h, q(x)), l(b.asBindings, h)) : (G && G.greenLn("Applying Trait " + c.kindName() + ": " + c), p(b, x, d), l(b.asBindings, x), d = new w(x, c.isConst(), c.typeName ? a.getProperty(c.typeName, !1, !1) : null, c), b.asSlots.byID[c.slotId] = d, b.asSlots.byQN[x] = d);
            } else {
              if (c.isMethod() || c.isGetter() || c.isSetter()) {
                if (c.isGetter() || c.isSetter()) {
                  h = h.substring(u.KEY_PREFIX_LENGTH);
                }
                h !== x ? G && G.yellowLn("Binding Trait: " + h + " -> " + x) : G && G.greenLn("Applying Trait " + c.kindName() + ": " + c);
                l(b.asBindings, h);
                this instanceof y ? (k.enterTimeline("applyNonMemoizedMethodTrait"), g.applyNonMemoizedMethodTrait(h, c, b, d.scope, d.natives)) : (k.enterTimeline("applyMemoizedMethodTrait"), g.applyMemoizedMethodTrait(h, c, b, d.scope, d.natives));
                k.leaveTimeline();
              }
            }
          }
        };
        return a;
      }();
      g.Bindings = h;
      var x = function(a) {
        function b(c) {
          a.call(this);
          n(c.needsActivation());
          this.methodInfo = c;
          c = c.traits;
          for (var h = 0;h < c.length;h++) {
            var e = c[h];
            n(e.isSlot() || e.isConst(), "Only slot or constant traits are allowed in activation objects.");
            var d = f.getQualifiedName(e.name);
            this.map[d] = new u(e);
            this.assignNextSlot(e);
          }
        }
        __extends(b, a);
        return b;
      }(h);
      g.ActivationBindings = x;
      x = function(a) {
        function b(c, h) {
          a.call(this);
          var e = f.getQualifiedName(h.name);
          this.map[e] = new u(h);
          n(h.isSlot(), "Only slot traits are allowed in catch objects.");
          this.assignNextSlot(h);
        }
        __extends(b, a);
        return b;
      }(h);
      g.CatchBindings = x;
      var y = function(a) {
        function b(c, h) {
          a.call(this);
          this.scope = h;
          this.scriptInfo = c;
          for (var e = c.traits, d = 0;d < e.length;d++) {
            var p = e[d], l = f.getQualifiedName(p.name), l = u.getKey(l, p), l = this.map[l] = new u(p);
            (p.isSlot() || p.isConst() || p.isClass()) && this.assignNextSlot(p);
            p.isClass() && p.metadata && p.metadata.native && (p.classInfo.native = p.metadata.native);
            if (p.isMethod() || p.isGetter() || p.isSetter()) {
              l.scope = this.scope;
            }
          }
        }
        __extends(b, a);
        return b;
      }(h);
      g.ScriptBindings = y;
      x = function(a) {
        function b(c, h, e) {
          a.call(this);
          this.scope = h;
          this.natives = e;
          this.classInfo = c;
          c = c.traits;
          for (h = 0;h < c.length;h++) {
            e = c[h];
            var d = f.getQualifiedName(e.name), d = u.getKey(d, e), d = this.map[d] = new u(e);
            (e.isSlot() || e.isConst()) && this.assignNextSlot(e);
            if (e.isMethod() || e.isGetter() || e.isSetter()) {
              d.scope = this.scope, d.natives = this.natives;
            }
          }
        }
        __extends(b, a);
        return b;
      }(h);
      g.ClassBindings = x;
      h = function(b) {
        function h(a, e, p, l) {
          b.call(this);
          this.scope = p;
          this.natives = l;
          this.parent = a;
          this.instanceInfo = e;
          this.implementedInterfaces = a ? d(a.implementedInterfaces) : c();
          a && (this.slots = a.slots.slice(), this.nextSlotId = a.nextSlotId);
          this.extend(a);
        }
        __extends(h, b);
        h.prototype.extend = function(b) {
          var c = this.instanceInfo, h, e = this.map, d, p, l, q;
          if (b) {
            for (p in b.map) {
              d = b.map[p], l = d.trait, e[p] = d, l.isProtected() && (q = f.getQualifiedName(new f([c.protectedNs], l.name.getName())), q = u.getKey(q, l), e[q] = d);
            }
          }
          var r = c.traits;
          for (b = 0;b < r.length;b++) {
            l = r[b];
            d = f.getQualifiedName(l.name);
            p = u.getKey(d, l);
            d = new u(l);
            h = e;
            q = d;
            var x = q.trait, w = h[p];
            w ? (n(!w.trait.isFinal(), "Cannot redefine a final trait: " + x), n(x.isOverride() || "length" === x.name.getName(), "Overriding a trait that is not marked for override: " + x)) : n(!x.isOverride(), "Trait marked override must override another trait: " + x);
            h[p] = q;
            if (l.isProtected()) {
              for (h = this.parent;h && h.instanceInfo.protectedNs;) {
                q = f.getQualifiedName(new f([h.instanceInfo.protectedNs], l.name.getName())), q = u.getKey(q, l), q in e && (e[q] = d), h = h.parent;
              }
            }
            (l.isSlot() || l.isConst()) && this.assignNextSlot(l);
            if (l.isMethod() || l.isGetter() || l.isSetter()) {
              d.scope = this.scope, d.natives = this.natives;
            }
          }
          l = c.abc.applicationDomain;
          d = c.interfaces;
          for (b = 0;b < d.length;b++) {
            r = l.getProperty(d[b], !0, !0), n(r), a(this.implementedInterfaces, r.interfaceBindings.implementedInterfaces), this.implementedInterfaces[f.getQualifiedName(r.classInfo.instanceInfo.name)] = r;
          }
          for (var g in this.implementedInterfaces) {
            r = this.implementedInterfaces[g];
            h = r.interfaceBindings;
            for (var m in h.map) {
              b = h.map[m], c.isInterface() ? e[m] = b : (d = f.getPublicQualifiedName(b.trait.name.getName()), p = u.getKey(d, b.trait), e[m] = e[p]);
            }
          }
        };
        h.prototype.toString = function() {
          return this.instanceInfo.toString();
        };
        return h;
      }(h);
      g.InstanceBindings = h;
      var G = null;
    })(k.Runtime || (k.Runtime = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Binding = Shumway.AVM2.Runtime.Binding, Bindings = Shumway.AVM2.Runtime.Bindings, ActivationBindings = Shumway.AVM2.Runtime.ActivationBindings, CatchBindings = Shumway.AVM2.Runtime.CatchBindings, ScriptBindings = Shumway.AVM2.Runtime.ScriptBindings, ClassBindings = Shumway.AVM2.Runtime.ClassBindings, InstanceBindings = Shumway.AVM2.Runtime.InstanceBindings;
(function(b) {
  (function(b) {
    b.XRegExp = function() {
      function b(a, c, h) {
        var e;
        if (h) {
          if (a.__proto__) {
            a.__proto__ = q.prototype;
          } else {
            for (e in q.prototype) {
              a[e] = q.prototype[e];
            }
          }
        }
        a.xregexp = {captureNames:c};
        return a;
      }
      function f(a) {
        return u.replace.call(a, /([\s\S])(?=[\s\S]*\1)/g, "");
      }
      function k(a, c) {
        if (!q.isRegExp(a)) {
          throw new TypeError("Type RegExp expected");
        }
        var h = u.exec.call(/\/([a-z]*)$/i, String(a))[1];
        c = c || {};
        c.add && (h = f(h + c.add));
        c.remove && (h = u.replace.call(h, new RegExp("[" + c.remove + "]+", "g"), ""));
        return a = b(new RegExp(a.source, h), a.xregexp && a.xregexp.captureNames ? a.xregexp.captureNames.slice(0) : null, c.addProto);
      }
      function s(a, b) {
        if (Array.prototype.indexOf) {
          return a.indexOf(b);
        }
        var c = a.length, h;
        for (h = 0;h < c;++h) {
          if (a[h] === b) {
            return h;
          }
        }
        return-1;
      }
      function m(a, b) {
        return O.call(a) === "[object " + b + "]";
      }
      function d(a, b, c) {
        return u.test.call(-1 < c.indexOf("x") ? /^(?:\s+|#.*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/ : /^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/, a.slice(b));
      }
      function a(a, b) {
        var c;
        if (f(b) !== b) {
          throw new SyntaxError("Invalid duplicate regex flag " + b);
        }
        a = u.replace.call(a, /^\(\?([\w$]+)\)/, function(a, c) {
          if (u.test.call(/[gy]/, c)) {
            throw new SyntaxError("Cannot use flag g or y in mode modifier " + a);
          }
          b = f(b + c);
          return "";
        });
        for (c = 0;c < b.length;++c) {
          if (!E[b.charAt(c)]) {
            throw new SyntaxError("Unknown regex flag " + b.charAt(c));
          }
        }
        return{pattern:a, flags:b};
      }
      function c(a) {
        a = a || {};
        m(a, "String") && (a = q.forEach(a, /[^\s,]+/, function(a) {
          this[a] = !0;
        }, {}));
        return a;
      }
      function n(a) {
        if (!/^[\w$]$/.test(a)) {
          throw Error("Flag must be a single character A-Za-z0-9_$");
        }
        E[a] = !0;
      }
      function p(a) {
        RegExp.prototype.exec = (a ? w : u).exec;
        RegExp.prototype.test = (a ? w : u).test;
        String.prototype.match = (a ? w : u).match;
        String.prototype.replace = (a ? w : u).replace;
        String.prototype.split = (a ? w : u).split;
        l.natives = a;
      }
      function e(a) {
        if (null == a) {
          throw new TypeError("Cannot convert null or undefined to object");
        }
        return a;
      }
      var q, l = {astral:!1, natives:!1}, u = {exec:RegExp.prototype.exec, test:RegExp.prototype.test, match:String.prototype.match, replace:String.prototype.replace, split:String.prototype.split}, w = {}, r = {}, h = {}, x = [], y = {"default":/\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/, "class":/\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|[\s\S]/}, G = /\$(?:{([\w$]+)}|([\d$&`']))/g, 
      I = void 0 === u.exec.call(/()??/, "")[1], C = void 0 !== RegExp.prototype.sticky, E = {g:!0, i:!0, m:!0, y:C}, O = {}.toString, K;
      q = function(c, e) {
        var d = {hasNamedCapture:!1, captureNames:[]}, p = "default", l = "", n = 0, r, f;
        if (q.isRegExp(c)) {
          if (void 0 !== e) {
            throw new TypeError("Cannot supply flags when copying a RegExp");
          }
          return k(c, {addProto:!0});
        }
        c = void 0 === c ? "" : String(c);
        e = void 0 === e ? "" : String(e);
        f = c + "***" + e;
        if (!h[f]) {
          r = a(c, e);
          c = r.pattern;
          for (e = r.flags;n < c.length;) {
            do {
              r = c;
              for (var w = e, m = n, s = p, G = d, I = x.length, E = null, C = void 0, O = void 0;I--;) {
                if (O = x[I], (O.scope === s || "all" === O.scope) && (!O.flag || -1 < w.indexOf(O.flag)) && (C = q.exec(r, O.regex, m, "sticky"))) {
                  E = {matchLength:C[0].length, output:O.handler.call(G, C, s, w), reparse:O.reparse};
                  break;
                }
              }
              (r = E) && r.reparse && (c = c.slice(0, n) + r.output + c.slice(n + r.matchLength));
            } while (r && r.reparse);
            r ? (l += r.output, n += r.matchLength || 1) : (r = q.exec(c, y[p], n, "sticky")[0], l += r, n += r.length, "[" === r && "default" === p ? p = "class" : "]" === r && "class" === p && (p = "default"));
          }
          h[f] = {pattern:u.replace.call(l, /\(\?:\)(?=\(\?:\))|^\(\?:\)|\(\?:\)$/g, ""), flags:u.replace.call(e, /[^gimy]+/g, ""), captures:d.hasNamedCapture ? d.captureNames : null};
        }
        f = h[f];
        return b(new RegExp(f.pattern, f.flags), f.captures, !0);
      };
      q.prototype = RegExp();
      q.version = "3.0.0-pre";
      q.addToken = function(a, b, c) {
        c = c || {};
        var h = c.optionalFlags, e;
        c.flag && n(c.flag);
        if (h) {
          for (h = u.split.call(h, ""), e = 0;e < h.length;++e) {
            n(h[e]);
          }
        }
        x.push({regex:k(a, {add:"g" + (C ? "y" : "")}), handler:b, scope:c.scope || "default", flag:c.flag, reparse:c.reparse});
        q.cache.flush("patterns");
      };
      q.cache = function(a, b) {
        var c = a + "***" + (b || "");
        return r[c] || (r[c] = q(a, b));
      };
      q.cache.flush = function(a) {
        "patterns" === a ? h = {} : r = {};
      };
      q.escape = function(a) {
        return u.replace.call(e(a), /[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
      };
      q.exec = function(a, b, c, h) {
        var e = "g";
        C && (h || b.sticky && !1 !== h) && (e += "y");
        b.xregexp = b.xregexp || {captureNames:null};
        e = b.xregexp[e] || (b.xregexp[e] = k(b, {add:e, remove:!1 === h ? "y" : ""}));
        e.lastIndex = c = c || 0;
        a = w.exec.call(e, a);
        h && a && a.index !== c && (a = null);
        b.global && (b.lastIndex = a ? e.lastIndex : 0);
        return a;
      };
      q.forEach = function(a, b, c, h) {
        for (var e = 0, d = -1;e = q.exec(a, b, e);) {
          c.call(h, e, ++d, a, b), e = e.index + (e[0].length || 1);
        }
        return h;
      };
      q.globalize = function(a) {
        return k(a, {add:"g", addProto:!0});
      };
      q.install = function() {
        var a = {natives:!0}, a = c(a);
        !l.astral && a.astral && (q.cache.flush("patterns"), l.astral = !0);
        !l.natives && a.natives && p(!0);
      };
      q.isInstalled = function(a) {
        return!!l[a];
      };
      q.isRegExp = function(a) {
        return "[object RegExp]" === O.call(a);
      };
      q.match = function(a, b, c) {
        var h = b.global && "one" !== c || "all" === c, d = (h ? "g" : "") + (b.sticky ? "y" : "");
        b.xregexp = b.xregexp || {captureNames:null};
        d = b.xregexp[d || "noGY"] || (b.xregexp[d || "noGY"] = k(b, {add:d, remove:"one" === c ? "g" : ""}));
        a = u.match.call(e(a), d);
        b.global && (b.lastIndex = "one" === c && a ? a.index + a[0].length : 0);
        return h ? a || [] : a && a[0];
      };
      q.matchChain = function(a, b) {
        return function B(a, c) {
          function h(a) {
            if (e.backref) {
              if (!(a.hasOwnProperty(e.backref) || +e.backref < a.length)) {
                throw new ReferenceError("Backreference to undefined group: " + e.backref);
              }
              d.push(a[e.backref] || "");
            } else {
              d.push(a[0]);
            }
          }
          var e = b[c].regex ? b[c] : {regex:b[c]}, d = [], p;
          for (p = 0;p < a.length;++p) {
            q.forEach(a[p], e.regex, h);
          }
          return c !== b.length - 1 && d.length ? B(d, c + 1) : d;
        }([a], 0);
      };
      q.replace = function(a, b, c, h) {
        var d = q.isRegExp(b), p = b.global && "one" !== h || "all" === h, l = (p ? "g" : "") + (b.sticky ? "y" : ""), n = b;
        d ? (b.xregexp = b.xregexp || {captureNames:null}, n = b.xregexp[l || "noGY"] || (b.xregexp[l || "noGY"] = k(b, {add:l, remove:"one" === h ? "g" : ""}))) : p && (n = new RegExp(q.escape(String(b)), "g"));
        a = w.replace.call(e(a), n, c);
        d && b.global && (b.lastIndex = 0);
        return a;
      };
      q.replaceEach = function(a, b) {
        var c, h;
        for (c = 0;c < b.length;++c) {
          h = b[c], a = q.replace(a, h[0], h[1], h[2]);
        }
        return a;
      };
      q.split = function(a, b, c) {
        return w.split.call(e(a), b, c);
      };
      q.test = function(a, b, c, h) {
        return!!q.exec(a, b, c, h);
      };
      q.uninstall = function(a) {
        a = c(a);
        l.astral && a.astral && (q.cache.flush("patterns"), l.astral = !1);
        l.natives && a.natives && p(!1);
      };
      q.union = function(a, b) {
        function c(a, b, h) {
          var e = l[d - p];
          if (b) {
            if (++d, e) {
              return "(?<" + e + ">";
            }
          } else {
            if (h) {
              return "\\" + (+h + p);
            }
          }
          return a;
        }
        var h = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g, e = [], d = 0, p, l, n, r;
        if (!m(a, "Array") || !a.length) {
          throw new TypeError("Must provide a nonempty array of patterns to merge");
        }
        for (r = 0;r < a.length;++r) {
          n = a[r], q.isRegExp(n) ? (p = d, l = n.xregexp && n.xregexp.captureNames || [], e.push(u.replace.call(q(n.source).source, h, c))) : e.push(q.escape(n));
        }
        return q(e.join("|"), b);
      };
      w.exec = function(a) {
        var b = this.lastIndex, c = u.exec.apply(this, arguments), h, e;
        if (c) {
          !I && 1 < c.length && -1 < s(c, "") && (h = k(this, {remove:"g"}), u.replace.call(String(a).slice(c.index), h, function() {
            var a = arguments.length, b;
            for (b = 1;b < a - 2;++b) {
              void 0 === arguments[b] && (c[b] = void 0);
            }
          }));
          if (this.xregexp && this.xregexp.captureNames) {
            for (e = 1;e < c.length;++e) {
              (h = this.xregexp.captureNames[e - 1]) && (c[h] = c[e]);
            }
          }
          this.global && !c[0].length && this.lastIndex > c.index && (this.lastIndex = c.index);
        }
        this.global || (this.lastIndex = b);
        return c;
      };
      w.test = function(a) {
        return!!w.exec.call(this, a);
      };
      w.match = function(a) {
        var b;
        if (!q.isRegExp(a)) {
          a = new RegExp(a);
        } else {
          if (a.global) {
            return b = u.match.apply(this, arguments), a.lastIndex = 0, b;
          }
        }
        return w.exec.call(a, e(this));
      };
      w.replace = function(a, b) {
        var c = q.isRegExp(a), h, e, d;
        c ? (a.xregexp && (e = a.xregexp.captureNames), h = a.lastIndex) : a += "";
        d = m(b, "Function") ? u.replace.call(String(this), a, function() {
          var h = arguments, d;
          if (e) {
            for (h[0] = new String(h[0]), d = 0;d < e.length;++d) {
              e[d] && (h[0][e[d]] = h[d + 1]);
            }
          }
          c && a.global && (a.lastIndex = h[h.length - 2] + h[0].length);
          return b.apply(void 0, h);
        }) : u.replace.call(null == this ? this : String(this), a, function() {
          var a = arguments;
          return u.replace.call(String(b), G, function(b, c, h) {
            if (c) {
              h = +c;
              if (h <= a.length - 3) {
                return a[h] || "";
              }
              h = e ? s(e, c) : -1;
              if (0 > h) {
                throw new SyntaxError("Backreference to undefined group " + b);
              }
              return a[h + 1] || "";
            }
            if ("$" === h) {
              return "$";
            }
            if ("&" === h || 0 === +h) {
              return a[0];
            }
            if ("`" === h) {
              return a[a.length - 1].slice(0, a[a.length - 2]);
            }
            if ("'" === h) {
              return a[a.length - 1].slice(a[a.length - 2] + a[0].length);
            }
            h = +h;
            if (!isNaN(h)) {
              if (h > a.length - 3) {
                throw new SyntaxError("Backreference to undefined group " + b);
              }
              return a[h] || "";
            }
            throw new SyntaxError("Invalid token " + b);
          });
        });
        c && (a.lastIndex = a.global ? 0 : h);
        return d;
      };
      w.split = function(a, b) {
        if (!q.isRegExp(a)) {
          return u.split.apply(this, arguments);
        }
        var c = String(this), h = [], e = a.lastIndex, d = 0, p;
        b = (void 0 === b ? -1 : b) >>> 0;
        q.forEach(c, a, function(a) {
          a.index + a[0].length > d && (h.push(c.slice(d, a.index)), 1 < a.length && a.index < c.length && Array.prototype.push.apply(h, a.slice(1)), p = a[0].length, d = a.index + p);
        });
        d === c.length ? u.test.call(a, "") && !p || h.push("") : h.push(c.slice(d));
        a.lastIndex = e;
        return h.length > b ? h.slice(0, b) : h;
      };
      K = q.addToken;
      K(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4})|x(?![\dA-Fa-f]{2}))/, function(a, b) {
        if ("B" === a[1] && "default" === b) {
          return a[0];
        }
        throw new SyntaxError("Invalid escape " + a[0]);
      }, {scope:"all"});
      K(/\[(\^?)]/, function(a) {
        return a[1] ? "[\\s\\S]" : "\\b\\B";
      });
      K(/\(\?#[^)]*\)/, function(a, b, c) {
        return d(a.input, a.index + a[0].length, c) ? "" : "(?:)";
      });
      K(/\s+|#.*/, function(a, b, c) {
        return d(a.input, a.index + a[0].length, c) ? "" : "(?:)";
      }, {flag:"x"});
      K(/\./, function() {
        return "[\\s\\S]";
      }, {flag:"s"});
      K(/\\k<([\w$]+)>/, function(a) {
        var b = isNaN(a[1]) ? s(this.captureNames, a[1]) + 1 : +a[1], c = a.index + a[0].length;
        if (!b || b > this.captureNames.length) {
          throw new SyntaxError("Backreference to undefined group " + a[0]);
        }
        return "\\" + b + (c === a.input.length || isNaN(a.input.charAt(c)) ? "" : "(?:)");
      });
      K(/\\(\d+)/, function(a, b) {
        if (!("default" === b && /^[1-9]/.test(a[1]) && +a[1] <= this.captureNames.length) && "0" !== a[1]) {
          throw new SyntaxError("Cannot use octal escape or backreference to undefined group " + a[0]);
        }
        return a[0];
      }, {scope:"all"});
      K(/\(\?P?<([\w$]+)>/, function(a) {
        if (!isNaN(a[1])) {
          throw new SyntaxError("Cannot use integer as capture name " + a[0]);
        }
        if ("length" === a[1] || "__proto__" === a[1]) {
          throw new SyntaxError("Cannot use reserved word as capture name " + a[0]);
        }
        if (-1 < s(this.captureNames, a[1])) {
          throw new SyntaxError("Cannot use same name for multiple groups " + a[0]);
        }
        this.captureNames.push(a[1]);
        this.hasNamedCapture = !0;
        return "(";
      });
      K(/\((?!\?)/, function(a, b, c) {
        if (-1 < c.indexOf("n")) {
          return "(?:";
        }
        this.captureNames.push(null);
        return "(";
      }, {optionalFlags:"n"});
      return q;
    }();
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
Shumway.AVM2.XRegExp.install();
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.assertNotImplemented, t = b.Debug.notImplemented, s = b.AVM2.Runtime.throwError, m = b.NumberUtilities.clamp, d = b.AVM2.Runtime.asCheckVectorGetNumericProperty, a = b.AVM2.Runtime.asCheckVectorSetNumericProperty, c = function() {
        function c(a, b) {
          "undefined" === typeof a && (a = 0);
          "undefined" === typeof b && (b = !1);
          a >>>= 0;
          this._fixed = !!b;
          this._buffer = new Int32Array(Math.max(c.INITIAL_CAPACITY, a + c.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        c.defaultCompareFunction = function(a, b) {
          return String(a).localeCompare(String(b));
        };
        c.compare = function(a, e, d, l) {
          f(!(d & c.CASEINSENSITIVE), "CASEINSENSITIVE");
          f(!(d & c.UNIQUESORT), "UNIQUESORT");
          f(!(d & c.RETURNINDEXEDARRAY), "RETURNINDEXEDARRAY");
          var g = 0;
          l || (l = c.defaultCompareFunction);
          d & c.NUMERIC ? (a = b.toNumber(a), e = b.toNumber(e), g = a < e ? -1 : a > e ? 1 : 0) : g = l(a, e);
          d & c.DESCENDING && (g *= -1);
          return g;
        };
        c.callable = function(a) {
          if (a instanceof c) {
            return a;
          }
          var e = a.asGetProperty(void 0, "length");
          if (void 0 !== e) {
            for (var d = new c(e, !1), l = 0;l < e;l++) {
              d.asSetNumericProperty(l, a.asGetPublicProperty(l));
            }
            return d;
          }
          b.Debug.unexpected();
        };
        c.prototype.internalToString = function() {
          for (var a = "", b = this._offset, c = b + this._length, d = 0;d < this._buffer.length;d++) {
            d === b && (a += "["), d === c && (a += "]"), a += this._buffer[d], d < this._buffer.length - 1 && (a += ",");
          }
          this._offset + this._length === this._buffer.length && (a += "]");
          return a + ": offset: " + this._offset + ", length: " + this._length + ", capacity: " + this._buffer.length;
        };
        c.prototype.toString = function() {
          for (var a = "", b = 0;b < this._length;b++) {
            a += this._buffer[this._offset + b], b < this._length - 1 && (a += ",");
          }
          return a;
        };
        c.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        c.prototype._ensureCapacity = function(a) {
          var b = this._offset + a;
          b < this._buffer.length || (a <= this._buffer.length ? (b = this._buffer.length - a >> 2, this._buffer.set(this._view(), b), this._offset = b) : (a = (3 * this._buffer.length >> 1) + 1, a < b && (a = b), b = new Int32Array(a), b.set(this._buffer, 0), this._buffer = b));
        };
        c.prototype.concat = function() {
          t("Int32Vector.concat");
        };
        c.prototype.every = function(a, b) {
          for (var c = 0;c < this._length;c++) {
            if (!a.call(b, this._buffer[this._offset + c], c, this)) {
              return!1;
            }
          }
          return!0;
        };
        c.prototype.filter = function(a, b) {
          for (var d = new c, l = 0;l < this._length;l++) {
            a.call(b, this._buffer[this._offset + l], l, this) && d.push(this._buffer[this._offset + l]);
          }
          return d;
        };
        c.prototype.some = function(a, c) {
          2 !== arguments.length ? s("ArgumentError", k.Errors.WrongArgumentCountError) : b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = 0;d < this._length;d++) {
            if (a.call(c, this._buffer[this._offset + d], d, this)) {
              return!0;
            }
          }
          return!1;
        };
        c.prototype.forEach = function(a, b) {
          for (var c = 0;c < this._length;c++) {
            a.call(b, this._buffer[this._offset + c], c, this);
          }
        };
        c.prototype.join = function(a) {
          t("Int32Vector.join");
        };
        c.prototype.indexOf = function(a, b) {
          t("Int32Vector.indexOf");
        };
        c.prototype.lastIndexOf = function(a, b) {
          t("Int32Vector.lastIndexOf");
        };
        c.prototype.map = function(a, e) {
          b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = new c, l = 0;l < this._length;l++) {
            d.push(a.call(e, this._buffer[this._offset + l], l, this));
          }
          return d;
        };
        c.prototype.push = function() {
          for (var a = 0;a < arguments.length - 0;a++) {
          }
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (a = 0;a < arguments.length;a++) {
            this._buffer[this._offset + this._length++] = arguments[a];
          }
        };
        c.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return c.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        c.prototype.reverse = function() {
          for (var a = this._offset, b = this._offset + this._length - 1, c = this._buffer;a < b;) {
            var d = c[a];
            c[a] = c[b];
            c[b] = d;
            a++;
            b--;
          }
        };
        c._sort = function(a) {
          for (var b = [], c = -1, d = 0, n = a.length - 1, f, r, h, x;;) {
            if (100 >= n - d) {
              for (r = d + 1;r <= n;r++) {
                h = a[r];
                for (f = r - 1;f >= d && a[f] > h;) {
                  a[f + 1] = a[f--];
                }
                a[f + 1] = h;
              }
              if (-1 == c) {
                break;
              }
              n = b[c--];
              d = b[c--];
            } else {
              x = d + n >> 1;
              f = d + 1;
              r = n;
              h = a[x];
              a[x] = a[f];
              a[f] = h;
              a[d] > a[n] && (h = a[d], a[d] = a[n], a[n] = h);
              a[f] > a[n] && (h = a[f], a[f] = a[n], a[n] = h);
              a[d] > a[f] && (h = a[d], a[d] = a[f], a[f] = h);
              for (x = a[f];;) {
                do {
                  f++;
                } while (a[f] < x);
                do {
                  r--;
                } while (a[r] > x);
                if (r < f) {
                  break;
                }
                h = a[f];
                a[f] = a[r];
                a[r] = h;
              }
              a[d + 1] = a[r];
              a[r] = x;
              n - f + 1 >= r - d ? (b[++c] = f, b[++c] = n, n = r - 1) : (b[++c] = d, b[++c] = r - 1, d = f);
            }
          }
          return a;
        };
        c.prototype._sortNumeric = function(a) {
          c._sort(this._view());
          a && this.reverse();
        };
        c.prototype.sort = function() {
          if (0 === arguments.length) {
            return Array.prototype.sort.call(this._view());
          }
          var a, e = 0;
          arguments[0] instanceof Function ? a = arguments[0] : b.isNumber(arguments[0]) && (e = arguments[0]);
          b.isNumber(arguments[1]) && (e = arguments[1]);
          if (e & c.NUMERIC) {
            return this._sortNumeric(e & c.DESCENDING);
          }
          Array.prototype.sort.call(this._view(), function(b, d) {
            return c.compare(b, d, e, a);
          });
        };
        c.prototype.asGetNumericProperty = function(a) {
          d(a, this._length);
          return this._buffer[this._offset + a];
        };
        c.prototype.asSetNumericProperty = function(b, c) {
          a(b, this._length, this._fixed);
          b === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + b] = c;
        };
        c.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        c.prototype._checkFixed = function() {
          this._fixed && s("RangeError", k.Errors.VectorFixedError);
        };
        c.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        c.prototype.unshift = function() {
          this._checkFixed();
          if (arguments.length) {
            this._ensureCapacity(this._length + arguments.length);
            this._slide(arguments.length);
            this._offset -= arguments.length;
            this._length += arguments.length;
            for (var a = 0;a < arguments.length;a++) {
              this._buffer[this._offset + a] = arguments[a];
            }
          }
        };
        c.prototype.asHasProperty = function(a, e, d) {
          if (c.prototype === this || !b.isNumeric(e)) {
            return Object.prototype.asHasProperty.call(this, a, e, d);
          }
          a = b.toNumber(e);
          return 0 <= a && a < this._length;
        };
        Object.defineProperty(c.prototype, "length", {get:function() {
          return this._length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._length) {
            this._ensureCapacity(a);
            for (var b = this._offset + this._length, d = this._offset + a;b < d;b++) {
              this._buffer[b] = c.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        c.prototype._spliceHelper = function(a, b, c, d, n) {
          b = m(b, 0, d.length - n);
          c = m(c, 0, this._length - a);
          this._ensureCapacity(this._length - c + b);
          var f = this._offset + a + c;
          this._buffer.set(this._buffer.subarray(f, f + this._length - a - c), this._offset + a + b);
          this._length += b - c;
          for (c = 0;c < b;c++) {
            this._buffer[this._offset + a + c] = d.asGetNumericProperty(n + c);
          }
        };
        c.prototype.asNextName = function(a) {
          return a - 1;
        };
        c.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        c.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        c.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        c.EXTRA_CAPACITY = 4;
        c.INITIAL_CAPACITY = 10;
        c.DEFAULT_VALUE = 0;
        c.CASEINSENSITIVE = 1;
        c.DESCENDING = 2;
        c.UNIQUESORT = 4;
        c.RETURNINDEXEDARRAY = 8;
        c.NUMERIC = 16;
        return c;
      }();
      g.Int32Vector = c;
      c.prototype._reverse = c.prototype.reverse;
      c.prototype._filter = c.prototype.filter;
      c.prototype._map = c.prototype.map;
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.assertNotImplemented, t = b.Debug.notImplemented, s = b.AVM2.Runtime.throwError, m = b.NumberUtilities.clamp, d = b.AVM2.Runtime.asCheckVectorGetNumericProperty, a = b.AVM2.Runtime.asCheckVectorSetNumericProperty, c = function() {
        function c(a, b) {
          "undefined" === typeof a && (a = 0);
          "undefined" === typeof b && (b = !1);
          a >>>= 0;
          this._fixed = !!b;
          this._buffer = new Uint32Array(Math.max(c.INITIAL_CAPACITY, a + c.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        c.defaultCompareFunction = function(a, b) {
          return String(a).localeCompare(String(b));
        };
        c.compare = function(a, e, d, l) {
          f(!(d & c.CASEINSENSITIVE), "CASEINSENSITIVE");
          f(!(d & c.UNIQUESORT), "UNIQUESORT");
          f(!(d & c.RETURNINDEXEDARRAY), "RETURNINDEXEDARRAY");
          var g = 0;
          l || (l = c.defaultCompareFunction);
          d & c.NUMERIC ? (a = b.toNumber(a), e = b.toNumber(e), g = a < e ? -1 : a > e ? 1 : 0) : g = l(a, e);
          d & c.DESCENDING && (g *= -1);
          return g;
        };
        c.callable = function(a) {
          if (a instanceof c) {
            return a;
          }
          var e = a.asGetProperty(void 0, "length");
          if (void 0 !== e) {
            for (var d = new c(e, !1), l = 0;l < e;l++) {
              d.asSetNumericProperty(l, a.asGetPublicProperty(l));
            }
            return d;
          }
          b.Debug.unexpected();
        };
        c.prototype.internalToString = function() {
          for (var a = "", b = this._offset, c = b + this._length, d = 0;d < this._buffer.length;d++) {
            d === b && (a += "["), d === c && (a += "]"), a += this._buffer[d], d < this._buffer.length - 1 && (a += ",");
          }
          this._offset + this._length === this._buffer.length && (a += "]");
          return a + ": offset: " + this._offset + ", length: " + this._length + ", capacity: " + this._buffer.length;
        };
        c.prototype.toString = function() {
          for (var a = "", b = 0;b < this._length;b++) {
            a += this._buffer[this._offset + b], b < this._length - 1 && (a += ",");
          }
          return a;
        };
        c.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        c.prototype._ensureCapacity = function(a) {
          var b = this._offset + a;
          b < this._buffer.length || (a <= this._buffer.length ? (b = this._buffer.length - a >> 2, this._buffer.set(this._view(), b), this._offset = b) : (a = (3 * this._buffer.length >> 1) + 1, a < b && (a = b), b = new Uint32Array(a), b.set(this._buffer, 0), this._buffer = b));
        };
        c.prototype.concat = function() {
          t("Uint32Vector.concat");
        };
        c.prototype.every = function(a, b) {
          for (var c = 0;c < this._length;c++) {
            if (!a.call(b, this._buffer[this._offset + c], c, this)) {
              return!1;
            }
          }
          return!0;
        };
        c.prototype.filter = function(a, b) {
          for (var d = new c, l = 0;l < this._length;l++) {
            a.call(b, this._buffer[this._offset + l], l, this) && d.push(this._buffer[this._offset + l]);
          }
          return d;
        };
        c.prototype.some = function(a, c) {
          2 !== arguments.length ? s("ArgumentError", k.Errors.WrongArgumentCountError) : b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = 0;d < this._length;d++) {
            if (a.call(c, this._buffer[this._offset + d], d, this)) {
              return!0;
            }
          }
          return!1;
        };
        c.prototype.forEach = function(a, b) {
          for (var c = 0;c < this._length;c++) {
            a.call(b, this._buffer[this._offset + c], c, this);
          }
        };
        c.prototype.join = function(a) {
          t("Uint32Vector.join");
        };
        c.prototype.indexOf = function(a, b) {
          t("Uint32Vector.indexOf");
        };
        c.prototype.lastIndexOf = function(a, b) {
          t("Uint32Vector.lastIndexOf");
        };
        c.prototype.map = function(a, e) {
          b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = new c, l = 0;l < this._length;l++) {
            d.push(a.call(e, this._buffer[this._offset + l], l, this));
          }
          return d;
        };
        c.prototype.push = function() {
          for (var a = 0;a < arguments.length - 0;a++) {
          }
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (a = 0;a < arguments.length;a++) {
            this._buffer[this._offset + this._length++] = arguments[a];
          }
        };
        c.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return c.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        c.prototype.reverse = function() {
          for (var a = this._offset, b = this._offset + this._length - 1, c = this._buffer;a < b;) {
            var d = c[a];
            c[a] = c[b];
            c[b] = d;
            a++;
            b--;
          }
        };
        c._sort = function(a) {
          for (var b = [], c = -1, d = 0, n = a.length - 1, f, r, h, x;;) {
            if (100 >= n - d) {
              for (r = d + 1;r <= n;r++) {
                h = a[r];
                for (f = r - 1;f >= d && a[f] > h;) {
                  a[f + 1] = a[f--];
                }
                a[f + 1] = h;
              }
              if (-1 == c) {
                break;
              }
              n = b[c--];
              d = b[c--];
            } else {
              x = d + n >> 1;
              f = d + 1;
              r = n;
              h = a[x];
              a[x] = a[f];
              a[f] = h;
              a[d] > a[n] && (h = a[d], a[d] = a[n], a[n] = h);
              a[f] > a[n] && (h = a[f], a[f] = a[n], a[n] = h);
              a[d] > a[f] && (h = a[d], a[d] = a[f], a[f] = h);
              for (x = a[f];;) {
                do {
                  f++;
                } while (a[f] < x);
                do {
                  r--;
                } while (a[r] > x);
                if (r < f) {
                  break;
                }
                h = a[f];
                a[f] = a[r];
                a[r] = h;
              }
              a[d + 1] = a[r];
              a[r] = x;
              n - f + 1 >= r - d ? (b[++c] = f, b[++c] = n, n = r - 1) : (b[++c] = d, b[++c] = r - 1, d = f);
            }
          }
          return a;
        };
        c.prototype._sortNumeric = function(a) {
          c._sort(this._view());
          a && this.reverse();
        };
        c.prototype.sort = function() {
          if (0 === arguments.length) {
            return Array.prototype.sort.call(this._view());
          }
          var a, e = 0;
          arguments[0] instanceof Function ? a = arguments[0] : b.isNumber(arguments[0]) && (e = arguments[0]);
          b.isNumber(arguments[1]) && (e = arguments[1]);
          if (e & c.NUMERIC) {
            return this._sortNumeric(e & c.DESCENDING);
          }
          Array.prototype.sort.call(this._view(), function(b, d) {
            return c.compare(b, d, e, a);
          });
        };
        c.prototype.asGetNumericProperty = function(a) {
          d(a, this._length);
          return this._buffer[this._offset + a];
        };
        c.prototype.asSetNumericProperty = function(b, c) {
          a(b, this._length, this._fixed);
          b === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + b] = c;
        };
        c.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        c.prototype._checkFixed = function() {
          this._fixed && s("RangeError", k.Errors.VectorFixedError);
        };
        c.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        c.prototype.unshift = function() {
          this._checkFixed();
          if (arguments.length) {
            this._ensureCapacity(this._length + arguments.length);
            this._slide(arguments.length);
            this._offset -= arguments.length;
            this._length += arguments.length;
            for (var a = 0;a < arguments.length;a++) {
              this._buffer[this._offset + a] = arguments[a];
            }
          }
        };
        c.prototype.asHasProperty = function(a, e, d) {
          if (c.prototype === this || !b.isNumeric(e)) {
            return Object.prototype.asHasProperty.call(this, a, e, d);
          }
          a = b.toNumber(e);
          return 0 <= a && a < this._length;
        };
        Object.defineProperty(c.prototype, "length", {get:function() {
          return this._length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._length) {
            this._ensureCapacity(a);
            for (var b = this._offset + this._length, d = this._offset + a;b < d;b++) {
              this._buffer[b] = c.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        c.prototype._spliceHelper = function(a, b, c, d, n) {
          b = m(b, 0, d.length - n);
          c = m(c, 0, this._length - a);
          this._ensureCapacity(this._length - c + b);
          var f = this._offset + a + c;
          this._buffer.set(this._buffer.subarray(f, f + this._length - a - c), this._offset + a + b);
          this._length += b - c;
          for (c = 0;c < b;c++) {
            this._buffer[this._offset + a + c] = d.asGetNumericProperty(n + c);
          }
        };
        c.prototype.asNextName = function(a) {
          return a - 1;
        };
        c.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        c.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        c.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        c.EXTRA_CAPACITY = 4;
        c.INITIAL_CAPACITY = 10;
        c.DEFAULT_VALUE = 0;
        c.CASEINSENSITIVE = 1;
        c.DESCENDING = 2;
        c.UNIQUESORT = 4;
        c.RETURNINDEXEDARRAY = 8;
        c.NUMERIC = 16;
        return c;
      }();
      g.Uint32Vector = c;
      c.prototype._reverse = c.prototype.reverse;
      c.prototype._filter = c.prototype.filter;
      c.prototype._map = c.prototype.map;
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.assertNotImplemented, t = b.Debug.notImplemented, s = b.AVM2.Runtime.throwError, m = b.NumberUtilities.clamp, d = b.AVM2.Runtime.asCheckVectorGetNumericProperty, a = b.AVM2.Runtime.asCheckVectorSetNumericProperty, c = function() {
        function c(a, b) {
          "undefined" === typeof a && (a = 0);
          "undefined" === typeof b && (b = !1);
          a >>>= 0;
          this._fixed = !!b;
          this._buffer = new Float64Array(Math.max(c.INITIAL_CAPACITY, a + c.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        c.defaultCompareFunction = function(a, b) {
          return String(a).localeCompare(String(b));
        };
        c.compare = function(a, e, d, l) {
          f(!(d & c.CASEINSENSITIVE), "CASEINSENSITIVE");
          f(!(d & c.UNIQUESORT), "UNIQUESORT");
          f(!(d & c.RETURNINDEXEDARRAY), "RETURNINDEXEDARRAY");
          var g = 0;
          l || (l = c.defaultCompareFunction);
          d & c.NUMERIC ? (a = b.toNumber(a), e = b.toNumber(e), g = a < e ? -1 : a > e ? 1 : 0) : g = l(a, e);
          d & c.DESCENDING && (g *= -1);
          return g;
        };
        c.callable = function(a) {
          if (a instanceof c) {
            return a;
          }
          var e = a.asGetProperty(void 0, "length");
          if (void 0 !== e) {
            for (var d = new c(e, !1), l = 0;l < e;l++) {
              d.asSetNumericProperty(l, a.asGetPublicProperty(l));
            }
            return d;
          }
          b.Debug.unexpected();
        };
        c.prototype.internalToString = function() {
          for (var a = "", b = this._offset, c = b + this._length, d = 0;d < this._buffer.length;d++) {
            d === b && (a += "["), d === c && (a += "]"), a += this._buffer[d], d < this._buffer.length - 1 && (a += ",");
          }
          this._offset + this._length === this._buffer.length && (a += "]");
          return a + ": offset: " + this._offset + ", length: " + this._length + ", capacity: " + this._buffer.length;
        };
        c.prototype.toString = function() {
          for (var a = "", b = 0;b < this._length;b++) {
            a += this._buffer[this._offset + b], b < this._length - 1 && (a += ",");
          }
          return a;
        };
        c.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        c.prototype._ensureCapacity = function(a) {
          var b = this._offset + a;
          b < this._buffer.length || (a <= this._buffer.length ? (b = this._buffer.length - a >> 2, this._buffer.set(this._view(), b), this._offset = b) : (a = (3 * this._buffer.length >> 1) + 1, a < b && (a = b), b = new Float64Array(a), b.set(this._buffer, 0), this._buffer = b));
        };
        c.prototype.concat = function() {
          t("Float64Vector.concat");
        };
        c.prototype.every = function(a, b) {
          for (var c = 0;c < this._length;c++) {
            if (!a.call(b, this._buffer[this._offset + c], c, this)) {
              return!1;
            }
          }
          return!0;
        };
        c.prototype.filter = function(a, b) {
          for (var d = new c, l = 0;l < this._length;l++) {
            a.call(b, this._buffer[this._offset + l], l, this) && d.push(this._buffer[this._offset + l]);
          }
          return d;
        };
        c.prototype.some = function(a, c) {
          2 !== arguments.length ? s("ArgumentError", k.Errors.WrongArgumentCountError) : b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = 0;d < this._length;d++) {
            if (a.call(c, this._buffer[this._offset + d], d, this)) {
              return!0;
            }
          }
          return!1;
        };
        c.prototype.forEach = function(a, b) {
          for (var c = 0;c < this._length;c++) {
            a.call(b, this._buffer[this._offset + c], c, this);
          }
        };
        c.prototype.join = function(a) {
          t("Float64Vector.join");
        };
        c.prototype.indexOf = function(a, b) {
          t("Float64Vector.indexOf");
        };
        c.prototype.lastIndexOf = function(a, b) {
          t("Float64Vector.lastIndexOf");
        };
        c.prototype.map = function(a, e) {
          b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = new c, l = 0;l < this._length;l++) {
            d.push(a.call(e, this._buffer[this._offset + l], l, this));
          }
          return d;
        };
        c.prototype.push = function() {
          for (var a = 0;a < arguments.length - 0;a++) {
          }
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (a = 0;a < arguments.length;a++) {
            this._buffer[this._offset + this._length++] = arguments[a];
          }
        };
        c.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return c.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        c.prototype.reverse = function() {
          for (var a = this._offset, b = this._offset + this._length - 1, c = this._buffer;a < b;) {
            var d = c[a];
            c[a] = c[b];
            c[b] = d;
            a++;
            b--;
          }
        };
        c._sort = function(a) {
          for (var b = [], c = -1, d = 0, n = a.length - 1, f, r, h, x;;) {
            if (100 >= n - d) {
              for (r = d + 1;r <= n;r++) {
                h = a[r];
                for (f = r - 1;f >= d && a[f] > h;) {
                  a[f + 1] = a[f--];
                }
                a[f + 1] = h;
              }
              if (-1 == c) {
                break;
              }
              n = b[c--];
              d = b[c--];
            } else {
              x = d + n >> 1;
              f = d + 1;
              r = n;
              h = a[x];
              a[x] = a[f];
              a[f] = h;
              a[d] > a[n] && (h = a[d], a[d] = a[n], a[n] = h);
              a[f] > a[n] && (h = a[f], a[f] = a[n], a[n] = h);
              a[d] > a[f] && (h = a[d], a[d] = a[f], a[f] = h);
              for (x = a[f];;) {
                do {
                  f++;
                } while (a[f] < x);
                do {
                  r--;
                } while (a[r] > x);
                if (r < f) {
                  break;
                }
                h = a[f];
                a[f] = a[r];
                a[r] = h;
              }
              a[d + 1] = a[r];
              a[r] = x;
              n - f + 1 >= r - d ? (b[++c] = f, b[++c] = n, n = r - 1) : (b[++c] = d, b[++c] = r - 1, d = f);
            }
          }
          return a;
        };
        c.prototype._sortNumeric = function(a) {
          c._sort(this._view());
          a && this.reverse();
        };
        c.prototype.sort = function() {
          if (0 === arguments.length) {
            return Array.prototype.sort.call(this._view());
          }
          var a, e = 0;
          arguments[0] instanceof Function ? a = arguments[0] : b.isNumber(arguments[0]) && (e = arguments[0]);
          b.isNumber(arguments[1]) && (e = arguments[1]);
          if (e & c.NUMERIC) {
            return this._sortNumeric(e & c.DESCENDING);
          }
          Array.prototype.sort.call(this._view(), function(b, d) {
            return c.compare(b, d, e, a);
          });
        };
        c.prototype.asGetNumericProperty = function(a) {
          d(a, this._length);
          return this._buffer[this._offset + a];
        };
        c.prototype.asSetNumericProperty = function(b, c) {
          a(b, this._length, this._fixed);
          b === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + b] = c;
        };
        c.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        c.prototype._checkFixed = function() {
          this._fixed && s("RangeError", k.Errors.VectorFixedError);
        };
        c.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        c.prototype.unshift = function() {
          this._checkFixed();
          if (arguments.length) {
            this._ensureCapacity(this._length + arguments.length);
            this._slide(arguments.length);
            this._offset -= arguments.length;
            this._length += arguments.length;
            for (var a = 0;a < arguments.length;a++) {
              this._buffer[this._offset + a] = arguments[a];
            }
          }
        };
        c.prototype.asHasProperty = function(a, e, d) {
          if (c.prototype === this || !b.isNumeric(e)) {
            return Object.prototype.asHasProperty.call(this, a, e, d);
          }
          a = b.toNumber(e);
          return 0 <= a && a < this._length;
        };
        Object.defineProperty(c.prototype, "length", {get:function() {
          return this._length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._length) {
            this._ensureCapacity(a);
            for (var b = this._offset + this._length, d = this._offset + a;b < d;b++) {
              this._buffer[b] = c.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        c.prototype._spliceHelper = function(a, b, c, d, n) {
          b = m(b, 0, d.length - n);
          c = m(c, 0, this._length - a);
          this._ensureCapacity(this._length - c + b);
          var f = this._offset + a + c;
          this._buffer.set(this._buffer.subarray(f, f + this._length - a - c), this._offset + a + b);
          this._length += b - c;
          for (c = 0;c < b;c++) {
            this._buffer[this._offset + a + c] = d.asGetNumericProperty(n + c);
          }
        };
        c.prototype.asNextName = function(a) {
          return a - 1;
        };
        c.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        c.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        c.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        c.EXTRA_CAPACITY = 4;
        c.INITIAL_CAPACITY = 10;
        c.DEFAULT_VALUE = 0;
        c.CASEINSENSITIVE = 1;
        c.DESCENDING = 2;
        c.UNIQUESORT = 4;
        c.RETURNINDEXEDARRAY = 8;
        c.NUMERIC = 16;
        return c;
      }();
      g.Float64Vector = c;
      c.prototype._reverse = c.prototype.reverse;
      c.prototype._filter = c.prototype.filter;
      c.prototype._map = c.prototype.map;
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(a) {
        for (var b = 0;b < arguments.length - 1;b++) {
        }
      }
      function t(a, b) {
        if (0 === b.length) {
          return a.sort();
        }
        var c, h = 0;
        b[0] instanceof Function ? c = b[0] : q(b[0]) && (h = b[0]);
        q(b[1]) && (h = b[1]);
        a.sort(function(a, b) {
          return B(a, b, h, c);
        });
        return a;
      }
      function s(a, b) {
        y(!la[a], "Native function: " + a + " is already registered.");
        la[a] = b;
      }
      function m(a) {
        switch(a) {
          case "prototype":
            return "native_prototype";
          case "hasOwnProperty":
            return "native_hasOwnProperty";
          case "isPrototypeOf":
            return "native_isPrototypeOf";
          case "propertyIsEnumerable":
            return "native_propertyIsEnumerable";
          default:
            return a;
        }
      }
      function d(a) {
        f("getNative(" + a + ")");
        for (var b = a.split("."), c = wa, h = 0, d = b.length;h < d;h++) {
          c = c && c[b[h]];
        }
        c || (c = la[a]);
        y(c, "getNative(" + a + ") not found.");
        y(0 > ia.indexOf(c), "Leaking illegal function.");
        return c;
      }
      var a = b.AVM2.ABC.Multiname, c = b.AVM2.Runtime.Scope, n = b.ObjectUtilities.hasOwnProperty, p = b.ObjectUtilities.hasOwnGetter, e = b.ObjectUtilities.defineNonEnumerableProperty, q = b.isNumber, l = b.isNullOrUndefined, u = b.ObjectUtilities.createObject, w = b.ObjectUtilities.isPrototypeWriteable, r = b.ObjectUtilities.getOwnPropertyDescriptor, h = b.Debug.notImplemented, x = b.AVM2.Runtime.asCoerceString, y = b.Debug.assert, G = b.AVM2.Runtime.createFunction, I = b.AVM2.Runtime, C = b.ObjectUtilities.boxValue, 
      E = b.ObjectUtilities.createEmptyObject, O = b.AVM2.Runtime.ClassBindings, K = b.AVM2.Runtime.InstanceBindings, F = b.AVM2.AS.Int32Vector, J = b.AVM2.AS.Uint32Vector, A = b.AVM2.AS.Float64Vector, B = b.AVM2.Runtime.asCompare;
      (function(a) {
        a[a.NONE = 0] = "NONE";
        a[a.OWN_INITIALIZE = 1] = "OWN_INITIALIZE";
        a[a.SUPER_INITIALIZE = 2] = "SUPER_INITIALIZE";
      })(g.InitializationFlags || (g.InitializationFlags = {}));
      var z = function() {
        function c() {
        }
        c.morphIntoASClass = function(a) {
          this.classInfo = a;
          this.__proto__ = D.prototype;
        };
        c.create = function(a, b, c) {
          D.create(a, b, this.instanceConstructor);
        };
        c.initializeFrom = function(a) {
          return L.initializeFrom.call(this, a);
        };
        c.asCall = function(a) {
          for (var b = [], c = 0;c < arguments.length - 1;c++) {
            b[c] = arguments[c + 1];
          }
          return this.callableConstructor.apply(a, b);
        };
        c.asApply = function(a, b) {
          return this.callableConstructor.apply(a, b);
        };
        c.verify = function() {
          L.verify.call(this);
        };
        c.trace = function(a) {
          L.trace.call(this, a);
        };
        c.getQualifiedClassName = function() {
          return L.getQualifiedClassName.call(this);
        };
        c._setPropertyIsEnumerable = function(b, c, h) {
          c = a.getPublicQualifiedName(c);
          h = r(b, c);
          h.enumerable = !1;
          Object.defineProperty(b, c, h);
        };
        c._dontEnumPrototype = function(b) {
          for (var c in b) {
            if (a.isPublicQualifiedName(c)) {
              var h = r(b, c);
              h.enumerable = !1;
              Object.defineProperty(b, c, h);
            }
          }
        };
        c.prototype.native_isPrototypeOf = function(a) {
          h("isPrototypeOf");
          return!1;
        };
        c.prototype.native_hasOwnProperty = function(a) {
          return this.asHasOwnProperty(null, a, 0);
        };
        c.prototype.native_propertyIsEnumerable = function(a) {
          return this.asPropertyIsEnumerable(null, a, 0);
        };
        c.prototype.setPropertyIsEnumerable = function(a, b) {
          c._setPropertyIsEnumerable(this, a, b);
        };
        c.prototype.toString = function() {
          var a = C(this);
          return a instanceof D ? b.StringUtilities.concat3("[class ", a.classInfo.instanceInfo.name.name, "]") : b.StringUtilities.concat3("[object ", a.class.classInfo.instanceInfo.name.name, "]");
        };
        c.baseClass = null;
        c.instanceConstructor = Object;
        c.instanceConstructorNoInitialize = null;
        c.initializer = null;
        c.initializers = null;
        c.classInitializer = null;
        c.callableConstructor = c.instanceConstructor;
        c.defaultValue = null;
        c.initializationFlags = 0;
        c.call = Function.prototype.call;
        c.apply = Function.prototype.apply;
        c.coerce = I.asCoerceObject;
        c.defineProperty = Object.defineProperty;
        return c;
      }();
      g.ASObject = z;
      var P = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b.baseClass = null;
        b.classInfo = null;
        b.instanceConstructor = null;
        b.callableConstructor = null;
        b.classBindings = null;
        b.instanceBindings = null;
        b.staticNatives = null;
        b.instanceNatives = null;
        b.traitsPrototype = null;
        b.dynamicPrototype = null;
        b.defaultValue = null;
        b.initializationFlags = 0;
        return b;
      }(z);
      g.ASNative = P;
      var D = function(c) {
        function d(a) {
          this.classInfo = a;
          this.instanceNatives = this.staticNatives = null;
          this.initializationFlags = 0;
          this.defaultValue = null;
        }
        __extends(d, c);
        d.configureBuiltinPrototype = function(a, b) {
          y(a.instanceConstructor);
          a.baseClass = b;
          a.dynamicPrototype = a.traitsPrototype = a.instanceConstructor.prototype;
        };
        d.configurePrototype = function(a, c) {
          a.baseClass = c;
          a.dynamicPrototype = u(c.dynamicPrototype);
          a.traitsPrototype = u(a.dynamicPrototype);
          for (var h = a.traitsPrototype, d = [];a;) {
            d.push(a), a = a.baseClass;
          }
          for (var e = 0;e < d.length;e++) {
            var l = [d[e].typeScriptPrototype];
            d[e].instanceNatives && b.ArrayUtilities.pushMany(l, d[e].instanceNatives);
            for (var r = 0;r < l.length;r++) {
              var f = l[r], p;
              for (p in f) {
                if (!(0 < e && "toString" === p) && n(f, p) && !n(h, p)) {
                  var q = Object.getOwnPropertyDescriptor(f, p);
                  b.Debug.assert(q);
                  try {
                    Object.defineProperty(h, p, q);
                  } catch (x) {
                  }
                }
              }
            }
          }
        };
        d.create = function(c, h, l) {
          y(!c.instanceConstructorNoInitialize, "This should not be set yet.");
          y(!c.dynamicPrototype && !c.traitsPrototype, "These should not be set yet.");
          c.typeScriptPrototype = c.prototype;
          c.instanceConstructor && !w(c.instanceConstructor) ? d.configureBuiltinPrototype(c, h) : d.configurePrototype(c, h);
          c.instanceConstructor || (c.instanceConstructor = l, c !== l && (c.instanceConstructor.__proto__ = c));
          c.callableConstructor || (c.callableConstructor = c.coerce.bind(c));
          c.instanceConstructorNoInitialize = c.instanceConstructor;
          c.instanceConstructor.prototype = c.traitsPrototype;
          e(c.instanceConstructor.prototype, "class", c);
          e(c.dynamicPrototype, a.getPublicQualifiedName("constructor"), c);
          c.protocol && b.ObjectUtilities.copyOwnPropertyDescriptors(c.traitsPrototype, c.protocol);
        };
        d.prototype.initializeFrom = function(a) {
          var b = Object.create(this.traitsPrototype);
          d.runInitializers(b, a);
          return b;
        };
        d.runInitializers = function(a, b) {
          b = b || a.class.defaultInitializerArgument;
          var c = a.class.initializers;
          if (c) {
            for (var h = 0;h < c.length;h++) {
              c[h].call(a, b);
            }
          }
        };
        d.configureInitializers = function(a) {
          a.baseClass && a.baseClass.initializers && (a.initializers = a.baseClass.initializers.slice(0));
          a.initializer && (a.initializers || (a.initializers = []), a.initializers.push(a.initializer));
          a.initializers && (y(a.instanceConstructorNoInitialize === a.instanceConstructor), a.instanceConstructor = function() {
            for (var b = 0;b < arguments.length - 0;b++) {
            }
            d.runInitializers(this, void 0);
            return a.instanceConstructorNoInitialize.apply(this, arguments);
          }, a.instanceConstructor.prototype = a.traitsPrototype, e(a.instanceConstructor.prototype, "class", a), a.instanceConstructor.classInfo = a.classInfo, a.instanceConstructor.__proto__ = a);
        };
        d.runClassInitializer = function(a) {
          a.classInitializer && a.classInitializer();
        };
        d.linkSymbols = function(b) {
          function c(b, d, e) {
            for (var l = 0;l < d.length;l++) {
              var r = d[l], n;
              a: {
                n = b;
                for (var f = r.name.name, q = 0;q < n.length;q++) {
                  var x = n[q];
                  if (0 <= x.indexOf(f) && ("!" === x[x.length - 1] && (x = x.slice(0, x.length - 1)), f === x)) {
                    n = !0;
                    break a;
                  }
                }
                n = !1;
              }
              if (n) {
                y(!r.name.getNamespace().isPrivate(), "Why are you linking against private members?");
                if (r.isConst()) {
                  h("Don't link against const traits.");
                  break;
                }
                n = r.name.name;
                f = a.getQualifiedName(r.name);
                r.isSlot() ? Object.defineProperty(e, n, {get:new Function("", "return this." + f), set:new Function("v", "this." + f + " = v")}) : r.isMethod() ? (y(!e[n], "Symbol should not already exist."), y(e.asOpenMethods[f], "There should be an open method for this symbol."), e[n] = e.asOpenMethods[f]) : r.isGetter() ? (y(p(e, f), "There should be an getter method for this symbol."), Object.defineProperty(e, n, {get:new Function("", "return this." + f)})) : h(r);
              }
            }
          }
          b.classSymbols && c(b.classSymbols, b.classInfo.traits, b);
          b.instanceSymbols && c(b.instanceSymbols, b.classInfo.instanceInfo.traits, b.traitsPrototype);
        };
        d.prototype.morphIntoASClass = function(a) {
          y(this.classInfo === a);
          y(this instanceof d);
        };
        Object.defineProperty(d.prototype, "native_prototype", {get:function() {
          y(this.dynamicPrototype);
          return this.dynamicPrototype;
        }, enumerable:!0, configurable:!0});
        d.prototype.asCall = function(a) {
          for (var b = [], c = 0;c < arguments.length - 1;c++) {
            b[c] = arguments[c + 1];
          }
          return this.coerce(b[0]);
        };
        d.prototype.asApply = function(a, b) {
          return this.coerce(b[0]);
        };
        d.prototype.applyType = function(a) {
          debugger;
          return null;
        };
        d.prototype.isInstanceOf = function(a) {
          return this.isInterface() ? !1 : this.isType(a);
        };
        d.prototype.isType = function(c) {
          if (b.isNullOrUndefined(c)) {
            return!1;
          }
          c = C(c);
          if (this.isInterface()) {
            if (null === c || "object" !== typeof c) {
              return!1;
            }
            y(c.class.implementedInterfaces, "No 'implementedInterfaces' map found on class " + c.class);
            var h = a.getQualifiedName(this.classInfo.instanceInfo.name);
            return void 0 !== c.class.implementedInterfaces[h];
          }
          return this.dynamicPrototype.isPrototypeOf(c);
        };
        d.prototype.isSubtypeOf = function(a) {
          for (var b = this;b;) {
            if (b.traitsPrototype === a.traitsPrototype) {
              return!0;
            }
            b = b.baseClass;
          }
          return!1;
        };
        d.prototype.coerce = function(a) {
          f(b.StringUtilities.concat4("Coercing ", a, " to ", this));
          return a;
        };
        d.prototype.isInterface = function() {
          return this.classInfo.instanceInfo.isInterface();
        };
        d.prototype.getQualifiedClassName = function() {
          var a = this.classInfo.instanceInfo.name, b = a.namespaces[0].uri;
          return b ? b + "::" + a.name : a.name;
        };
        d.prototype.verify = function() {
          function a(b, c, h) {
            for (var d = 0;d < b.length;d++) {
              if (c(b[d], h)) {
                return!0;
              }
            }
            return!1;
          }
          if (!this.isInterface()) {
            var c = [this.classInfo.traits, this.classInfo.instanceInfo.traits], h = [this];
            this.staticNatives && b.ArrayUtilities.pushMany(h, this.staticNatives);
            var d = [this.prototype];
            this.instanceNatives && b.ArrayUtilities.pushMany(d, this.instanceNatives);
            this === z ? y(!this.baseClass, "ASObject should have no base class.") : (y(this.baseClass, this.classInfo.instanceInfo.name + " has no base class."), y(this.baseClass !== this));
            y(this.traitsPrototype === this.instanceConstructor.prototype, "The traitsPrototype is not set correctly.");
            for (var e = 0;e < c.length;e++) {
              for (var l = 0 === e, r = 0;r < c[e].length;r++) {
                var n = c[e][r], f = m(n.name.name);
                if (n.isMethodOrAccessor() && n.methodInfo.isNative()) {
                  var p = l ? h : d;
                  n.isMethod() ? a(p, b.ObjectUtilities.hasOwnProperty, f) : n.isGetter() ? a(p, b.ObjectUtilities.hasOwnGetter, f) : n.isSetter() && a(p, b.ObjectUtilities.hasOwnSetter, f);
                }
              }
            }
            b.Debug.assert(this.instanceConstructor, "Must have a constructor function.");
          }
        };
        d.labelObject = function(a) {
          if (!a) {
            return a;
          }
          n(a, "labelId") || (a.labelId = d.labelCounter++);
          return a instanceof Function ? "Function [#" + a.labelId + "]" : "Object [#" + a.labelId + "]";
        };
        d.prototype.trace = function(a) {
          a.enter("Class: " + this.classInfo);
          a.writeLn("baseClass: " + (this.baseClass ? this.baseClass.classInfo.instanceInfo.name : null));
          a.writeLn("instanceConstructor: " + this.instanceConstructor + " " + d.labelObject(this.instanceConstructor));
          a.writeLn("instanceConstructorNoInitialize: " + this.instanceConstructorNoInitialize + " " + d.labelObject(this.instanceConstructorNoInitialize));
          a.writeLn("traitsPrototype: " + d.labelObject(this.traitsPrototype));
          a.writeLn("traitsPrototype.__proto__: " + d.labelObject(this.traitsPrototype.__proto__));
          a.writeLn("dynamicPrototype: " + d.labelObject(this.dynamicPrototype));
          a.writeLn("dynamicPrototype.__proto__: " + d.labelObject(this.dynamicPrototype.__proto__));
          a.writeLn("instanceConstructor.prototype: " + d.labelObject(this.instanceConstructor.prototype));
          a.leave("}");
        };
        d.instanceConstructor = d;
        d.staticNatives = null;
        d.instanceNatives = null;
        d.labelCounter = 0;
        return d;
      }(z);
      g.ASClass = D;
      var L = D.prototype;
      L.call = Function.prototype.call;
      L.apply = Function.prototype.apply;
      var M = function(a) {
        function b() {
        }
        __extends(b, a);
        Object.defineProperty(b.prototype, "native_prototype", {get:function() {
          return this.prototype;
        }, set:function(a) {
          this.prototype = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(b.prototype, "native_length", {get:function() {
          return this.hasOwnProperty(I.VM_LENGTH) ? this.asLength : this.length;
        }, enumerable:!0, configurable:!0});
        b.baseClass = null;
        b.instanceConstructor = Function;
        b.staticNatives = [Function];
        b.instanceNatives = [Function.prototype];
        return b;
      }(z);
      g.ASFunction = M;
      var V = function(a) {
        function b(a) {
        }
        __extends(b, a);
        b.instanceConstructor = Boolean;
        b.callableConstructor = b.instanceConstructor;
        b.staticNatives = null;
        b.instanceNatives = null;
        b.coerce = I.asCoerceBoolean;
        return b;
      }(z);
      g.ASBoolean = V;
      V.prototype.toString = Boolean.prototype.toString;
      V.prototype.valueOf = Boolean.prototype.valueOf;
      var Q = function(a) {
        function c(a, h) {
          var d = b.FunctionUtilities.bindSafely(h, a);
          e(this, "call", d.call.bind(d));
          e(this, "apply", d.apply.bind(d));
        }
        __extends(c, a);
        c.prototype.toString = function() {
          return "function Function() {}";
        };
        c.staticNatives = null;
        c.instanceNatives = null;
        return c.instanceConstructor = c;
      }(M);
      g.ASMethodClosure = Q;
      var U = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b._numberToString = function(a, b) {
          return Number(a).toString(b | 0);
        };
        b._minValue = function() {
          return Number.MIN_VALUE;
        };
        b.instanceConstructor = Number;
        b.callableConstructor = b.instanceConstructor;
        b.staticNatives = [Math];
        b.instanceNatives = [Number.prototype];
        b.defaultValue = Number(0);
        b.coerce = I.asCoerceNumber;
        return b;
      }(z);
      g.ASNumber = U;
      var S = function(a) {
        function b(a) {
          return Object(Number(a | 0));
        }
        __extends(b, a);
        b.asCall = function(a) {
          for (var b = [], c = 0;c < arguments.length - 1;c++) {
            b[c] = arguments[c + 1];
          }
          return b[0] | 0;
        };
        b.asApply = function(a, b) {
          return b[0] | 0;
        };
        b.isInstanceOf = function(a) {
          return!1;
        };
        b.isType = function(a) {
          return q(a) || a instanceof Number ? (a = +a, (a | 0) === a) : !1;
        };
        b.instanceConstructor = b;
        b.callableConstructor = b.instanceConstructor;
        b.staticNatives = [Math];
        b.instanceNatives = [Number.prototype];
        b.defaultValue = 0;
        b.coerce = I.asCoerceInt;
        return b;
      }(z);
      g.ASInt = S;
      var aa = function(a) {
        function b(a) {
          return Object(Number(a >>> 0));
        }
        __extends(b, a);
        b.asCall = function(a) {
          for (var b = [], c = 0;c < arguments.length - 1;c++) {
            b[c] = arguments[c + 1];
          }
          return b[0] >>> 0;
        };
        b.asApply = function(a, b) {
          return b[0] >>> 0;
        };
        b.isInstanceOf = function(a) {
          return!1;
        };
        b.isType = function(a) {
          return q(a) || a instanceof Number ? (a = +a, a >>> 0 === a) : !1;
        };
        b.instanceConstructor = b;
        b.callableConstructor = b.instanceConstructor;
        b.staticNatives = [Math];
        b.instanceNatives = [Number.prototype];
        b.defaultValue = 0;
        b.coerce = I.asCoerceUint;
        return b;
      }(z);
      g.ASUint = aa;
      var $ = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        Object.defineProperty(b.prototype, "native_length", {get:function() {
          return this.length;
        }, enumerable:!0, configurable:!0});
        b.prototype.match = function(a) {
          if (void 0 === a || null === a) {
            return null;
          }
          if (a instanceof RegExp && a.global) {
            for (var b = [], c;c = a.exec(this);) {
              b.push(c[0]);
            }
            return b;
          }
          a instanceof RegExp || "string" === typeof a || (a = String(a));
          return this.match(a);
        };
        b.prototype.search = function(a) {
          return void 0 === a ? -1 : this.search(a);
        };
        b.prototype.toUpperCase = function() {
          var a = String.prototype.toUpperCase.apply(this);
          return a = a.replace(/\u039C/g, String.fromCharCode(181));
        };
        b.prototype.toLocaleUpperCase = function() {
          var a = String.prototype.toLocaleUpperCase.apply(this);
          return a = a.replace(/\u039C/g, String.fromCharCode(181));
        };
        b.instanceConstructor = String;
        b.callableConstructor = b.instanceConstructor;
        b.staticNatives = [String];
        b.instanceNatives = [String.prototype];
        b.coerce = I.asCoerceString;
        return b;
      }(z);
      g.ASString = $;
      g.arraySort = t;
      var ea = function(c) {
        function h() {
          c.apply(this, arguments);
        }
        __extends(h, c);
        h._splice = function(a, b) {
          return 0 === b.length ? void 0 : a.splice.apply(a, b);
        };
        h._sort = function(a, b) {
          if (0 === b.length) {
            return a.sort();
          }
          var c, h = 0;
          b[0] instanceof Function ? c = b[0] : q(b[0]) && (h = b[0]);
          q(b[1]) && (h = b[1]);
          a.sort(function(a, b) {
            return I.asCompare(a, b, h, c);
          });
          return a;
        };
        h._sortOn = function(c, d, e) {
          b.isString(d) && (d = [d]);
          q(e) && (e = [e]);
          for (var l = d.length - 1;0 <= l;l--) {
            var r = a.getPublicQualifiedName(d[l]);
            if (h.CACHE_NUMERIC_COMPARATORS && e[l] & 16) {
              var n = "var x = +(a." + r + "), y = +(b." + r + ");", n = e[l] & 2 ? n + "return x < y ? 1 : (x > y ? -1 : 0);" : n + "return x < y ? -1 : (x > y ? 1 : 0);", f = h.numericComparatorCache[n];
              f || (f = h.numericComparatorCache[n] = new Function("a", "b", n));
              c.sort(f);
            } else {
              c.sort(function(a, b) {
                return I.asCompare(a[r], b[r], e[l] | 0);
              });
            }
          }
          return c;
        };
        h._every = function(a, b, c) {
          for (var h = 0;h < a.length && !0 === b.call(c, a[h], h, a);h++) {
          }
          return!1;
        };
        h._filter = function(a, b, c) {
          for (var h = [], d = 0;d < a.length;d++) {
            !0 === b.call(c, a[d], d, a) && h.push(a[d]);
          }
          return h;
        };
        Object.defineProperty(h.prototype, "native_length", {get:function() {
          return this.length;
        }, set:function(a) {
          this.length = a >>> 0;
        }, enumerable:!0, configurable:!0});
        h.instanceConstructor = Array;
        h.staticNatives = [Array];
        h.instanceNatives = [Array.prototype];
        h.CACHE_NUMERIC_COMPARATORS = !0;
        h.numericComparatorCache = E();
        return h;
      }(z);
      g.ASArray = ea;
      var Z = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b.prototype.newThisType = function() {
          return new this.class.instanceConstructor;
        };
        b.staticNatives = null;
        b.instanceNatives = null;
        b.instanceConstructor = b;
        b.callableConstructor = null;
        return b;
      }(P);
      g.ASVector = Z;
      var v = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b._every = function(a, b, c) {
          return a.every(b, c);
        };
        b._forEach = function(a, b, c) {
          return a.forEach(b, c);
        };
        b._some = function(a, b, c) {
          return a.some(b, c);
        };
        b.instanceConstructor = F;
        b.staticNatives = [F];
        b.instanceNatives = [F.prototype, Z.prototype];
        b.callableConstructor = F.callable;
        b._sort = t;
        return b;
      }(Z);
      g.ASIntVector = v;
      var X = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b._every = function(a, b, c) {
          return a.every(b, c);
        };
        b._forEach = function(a, b, c) {
          return a.forEach(b, c);
        };
        b._some = function(a, b, c) {
          return a.some(b, c);
        };
        b.instanceConstructor = J;
        b.staticNatives = [J];
        b.instanceNatives = [J.prototype, Z.prototype];
        b.callableConstructor = J.callable;
        b._sort = t;
        return b;
      }(Z);
      g.ASUIntVector = X;
      var ba = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b._every = function(a, b, c) {
          return a.every(b, c);
        };
        b._forEach = function(a, b, c) {
          return a.forEach(b, c);
        };
        b._some = function(a, b, c) {
          return a.some(b, c);
        };
        b.instanceConstructor = A;
        b.staticNatives = [A];
        b.instanceNatives = [A.prototype, Z.prototype];
        b.callableConstructor = A.callable;
        b._sort = t;
        return b;
      }(Z);
      g.ASDoubleVector = ba;
      var R = function(c) {
        function h() {
          c.apply(this, arguments);
        }
        __extends(h, c);
        h.transformJSValueToAS = function(a) {
          if ("object" !== typeof a) {
            return a;
          }
          for (var b = Object.keys(a), c = a instanceof Array ? [] : {}, d = 0;d < b.length;d++) {
            c.asSetPublicProperty(b[d], h.transformJSValueToAS(a[b[d]]));
          }
          return c;
        };
        h.transformASValueToJS = function(c) {
          if ("object" !== typeof c || l(c)) {
            return c;
          }
          for (var d = Object.keys(c), e = c instanceof Array ? [] : {}, r = 0;r < d.length;r++) {
            var n = d[r], f = n;
            b.isNumeric(n) || (f = a.getNameFromPublicQualifiedName(n));
            e[f] = h.transformASValueToJS(c[n]);
          }
          return e;
        };
        h.parseCore = function(a) {
          a = x(a);
          return h.transformJSValueToAS(JSON.parse(a));
        };
        h.stringifySpecializedToString = function(a, b, c, d) {
          return JSON.stringify(h.transformASValueToJS(a), c, d);
        };
        h.instanceConstructor = h;
        h.staticNatives = null;
        h.instanceNatives = null;
        return h;
      }(z);
      g.ASJSON = R;
      var H = function(a) {
        function c(a, b) {
          h("ASError");
        }
        __extends(c, a);
        c.prototype.getStackTrace = function() {
          return b.AVM2.Runtime.AVM2.getStackTrace();
        };
        c.instanceConstructor = null;
        c.staticNatives = null;
        c.instanceNatives = null;
        c.getErrorMessage = b.AVM2.getErrorMessage;
        return c;
      }(P);
      g.ASError = H;
      var Y = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASDefinitionError = Y;
      var ga = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASEvalError = ga;
      var ca = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASRangeError = ca;
      var ka = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASReferenceError = ka;
      var W = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASSecurityError = W;
      var ha = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASSyntaxError = ha;
      var da = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASTypeError = da;
      var ja = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASURIError = ja;
      var N = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASVerifyError = N;
      var ma = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASUninitializedError = ma;
      var T = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(H);
      g.ASArgumentError = T;
      var oa = function(a) {
        function c() {
          a.apply(this, arguments);
        }
        __extends(c, a);
        Object.defineProperty(c.prototype, "native_source", {get:function() {
          return this.source;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "native_global", {get:function() {
          return this.global;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "native_ignoreCase", {get:function() {
          return this.ignoreCase;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "native_multiline", {get:function() {
          return this.multiline;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "native_lastIndex", {get:function() {
          return this.lastIndex;
        }, set:function(a) {
          this.lastIndex = a | 0;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "native_dotall", {get:function() {
          return this.dotall;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "native_extended", {get:function() {
          return this.extended;
        }, enumerable:!0, configurable:!0});
        c.prototype.exec = function(a) {
          "undefined" === typeof a && (a = "");
          var c = RegExp.prototype.exec.apply(this, arguments);
          if (!c) {
            return c;
          }
          for (var h = Object.keys(c), d = 0;d < h.length;d++) {
            var e = h[d];
            b.isNumeric(e) || void 0 === c[e] && (c[e] = "");
          }
          b.AVM2.Runtime.publicizeProperties(c);
          return c;
        };
        c.instanceConstructor = k.XRegExp;
        c.staticNatives = [k.XRegExp];
        c.instanceNatives = [k.XRegExp.prototype];
        return c;
      }(z);
      g.ASRegExp = oa;
      var pa = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b.staticNatives = [Math];
        return b;
      }(P);
      g.ASMath = pa;
      var na = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        b.staticNatives = [Date];
        b.instanceNatives = [Date.prototype];
        b.instanceConstructor = Date;
        return b;
      }(P);
      g.ASDate = na;
      var fa = b.ObjectUtilities.createMap(), sa = !1;
      g.initialize = function(a) {
        sa || (fa.ObjectClass = z, fa.Class = D, fa.FunctionClass = M, fa.BooleanClass = V, fa.MethodClosureClass = Q, fa.NamespaceClass = g.ASNamespace, fa.NumberClass = U, fa.IntClass = S, fa.UIntClass = aa, fa.StringClass = $, fa.ArrayClass = ea, fa.VectorClass = Z, fa.ObjectVectorClass = g.GenericVector, fa.IntVectorClass = v, fa.UIntVectorClass = X, fa.DoubleVectorClass = ba, fa.JSONClass = R, fa.XMLClass = g.ASXML, fa.XMLListClass = g.ASXMLList, fa.QNameClass = g.ASQName, fa.ErrorClass = H, 
        fa.DefinitionErrorClass = Y, fa.EvalErrorClass = ga, fa.RangeErrorClass = ca, fa.ReferenceErrorClass = ka, fa.SecurityErrorClass = W, fa.SyntaxErrorClass = ha, fa.TypeErrorClass = da, fa.URIErrorClass = ja, fa.VerifyErrorClass = N, fa.UninitializedErrorClass = ma, fa.ArgumentErrorClass = T, fa.DateClass = na, fa.MathClass = pa, fa.RegExpClass = oa, fa.ProxyClass = g.flash.utils.OriginalProxy, fa.DictionaryClass = g.flash.utils.OriginalDictionary, fa.ByteArrayClass = g.flash.utils.OriginalByteArray, 
        fa.SystemClass = g.flash.system.OriginalSystem, sa = !0);
      };
      var xa = b.ObjectUtilities.createMap(), la = b.ObjectUtilities.createMap();
      g.registerNativeClass = function(a, b) {
        y(!xa[a], "Native class: " + a + " is already registered.");
        xa[a] = b;
      };
      g.registerNativeFunction = s;
      g.createInterface = function(a) {
        var b = a.instanceInfo;
        y(b.isInterface());
        a = new D(a);
        a.interfaceBindings = new K(null, b, null, null);
        a.verify();
        return a;
      };
      var qa = [];
      g.createClass = function(a, h, d) {
        var e = a.instanceInfo, l = a.abc.applicationDomain, r = a.native, n;
        r ? ((n = fa[a.native.cls]) || (n = xa[a.native.cls]), n || b.Debug.unexpected("No native class for " + a.native.cls), n.morphIntoASClass(a), qa && qa.push(n)) : n = new D(a);
        d = new c(d, null);
        d.object = n;
        var f = null;
        e.init.isNative() ? (y(r), f = n) : f = G(e.init, d, !1, !1);
        var p = null, q = null;
        r && (p = [n], n.staticNatives && b.ArrayUtilities.pushMany(p, n.staticNatives), q = [n.prototype], n.instanceNatives && b.ArrayUtilities.pushMany(q, n.instanceNatives));
        D.create(n, h, f);
        n.verify();
        if ("Class" === a.instanceInfo.name.name) {
          for (r = 0;r < qa.length;r++) {
            qa[r].__proto__ = D.prototype;
          }
          qa = null;
        }
        k.enterTimeline("ClassBindings");
        n.classBindings = new O(a, d, p);
        k.enterTimeline("applyTo");
        n.classBindings.applyTo(l, n);
        k.leaveTimeline();
        k.leaveTimeline();
        k.enterTimeline("InstanceBindings");
        n.instanceBindings = new K(h ? h.instanceBindings : null, e, d, q);
        n.instanceConstructor && (k.enterTimeline("applyTo"), n.instanceBindings.applyTo(l, n.traitsPrototype), k.leaveTimeline());
        k.leaveTimeline();
        n.implementedInterfaces = n.instanceBindings.implementedInterfaces;
        n === D ? n.instanceBindings.applyTo(l, z, !0) : D.instanceBindings && D.instanceBindings.applyTo(l, n, !0);
        k.enterTimeline("Configure");
        D.configureInitializers(n);
        D.linkSymbols(n);
        D.runClassInitializer(n);
        k.leaveTimeline();
        return n;
      };
      var ia = [I.forwardValueOf, I.forwardToString];
      g.getMethodOrAccessorNative = function(b, c) {
        var h = m(a.getName(b.name));
        f("getMethodOrAccessorNative(" + h + ")");
        for (var d = 0;d < c.length;d++) {
          var e = c[d], l = h;
          n(e, "original_" + h) && (l = "original_" + h);
          !n(e, h) && n(e, "native_" + h) && (l = "native_" + h);
          if (n(e, l)) {
            return b.isAccessor() ? (h = r(e, l), h = b.isGetter() ? h.get : h.set) : (y(b.isMethod()), h = e[l]), y(h, "Method or Accessor property exists but it's undefined: " + b), y(0 > ia.indexOf(h), "Leaking illegal function."), h;
          }
        }
        f("Cannot find " + b + " in natives.");
        return null;
      };
      g.escapeNativeName = m;
      (function(a) {
        function c(a) {
          for (var b = {prototype:E()}, h = Object.getOwnPropertyNames(a.prototype), d = 0;d < h.length;d++) {
            b.prototype[h[d]] = a.prototype[h[d]];
          }
          return b;
        }
        a.String = jsGlobal.String;
        a.Function = jsGlobal.Function;
        a.Boolean = jsGlobal.Boolean;
        a.Number = jsGlobal.Number;
        a.Date = jsGlobal.Date;
        a.ASObject = b.AVM2.AS.ASObject;
        a.Original = {Date:c(a.Date), Array:c(Array), String:c(a.String), Number:c(a.Number), Boolean:c(a.Boolean)};
        a.print = function() {
          for (var a = [], b = 0;b < arguments.length - 0;b++) {
            a[b] = arguments[b + 0];
          }
          jsGlobal.print.apply(null, a);
        };
        a.notImplemented = function(a) {
          h(a);
        };
        a.debugBreak = function(a) {
          debugger;
        };
        a.bugzilla = function(a) {
          switch(a) {
            case 574600:
              return!0;
          }
          return!1;
        };
        a.decodeURI = jsGlobal.decodeURI;
        a.decodeURIComponent = jsGlobal.decodeURIComponent;
        a.encodeURI = jsGlobal.encodeURI;
        a.encodeURIComponent = jsGlobal.encodeURIComponent;
        a.isNaN = jsGlobal.isNaN;
        a.isFinite = jsGlobal.isFinite;
        a.parseInt = jsGlobal.parseInt;
        a.parseFloat = jsGlobal.parseFloat;
        a.escape = jsGlobal.escape;
        a.unescape = jsGlobal.unescape;
        a.isXMLName = "undefined" !== typeof a.isXMLName ? jsGlobal.isXMLName : function() {
          h("Chrome doesn't support isXMLName.");
        };
        a.getQualifiedClassName = function(a) {
          if (null === a) {
            return "null";
          }
          if (void 0 === a) {
            return "void";
          }
          if (S.isType(a)) {
            return "int";
          }
          a = C(a);
          return D.isType(a) ? a.getQualifiedClassName() : a.class.getQualifiedClassName();
        };
        a.getQualifiedSuperclassName = function(a) {
          if (l(a)) {
            return "null";
          }
          a = C(a);
          a = D.isType(a) ? a : a.class;
          return a.baseClass ? a.baseClass.getQualifiedClassName() : "null";
        };
        a.getDefinitionByName = function(c) {
          c = a.String(c).replace("::", ".");
          return b.AVM2.Runtime.AVM2.currentDomain().getClass(c, !1) || null;
        };
        a.describeTypeJSON = function(a, c) {
          return b.AVM2.AS.describeTypeJSON(a, c);
        };
      })(g.Natives || (g.Natives = {}));
      var wa = g.Natives;
      g.getNative = d;
      s("unsafeJSNative", d);
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.assert, t = b.Debug.assertNotImplemented, s = b.AVM2.Runtime.throwError, m = b.NumberUtilities.clamp, d = b.AVM2.Runtime.asCheckVectorGetNumericProperty, a = b.AVM2.Runtime.asCheckVectorSetNumericProperty, c = b.AVM2.AS.arraySort, n = function(n) {
        function e(a, b, c) {
          a >>>= 0;
          this._fixed = !!b;
          this._buffer = Array(a);
          this._defaultValue = (this._type = c) ? c.defaultValue : null;
          this._fill(a, this._defaultValue);
        }
        __extends(e, n);
        e.defaultCompareFunction = function(a, b) {
          return String(a).localeCompare(String(b));
        };
        e.compare = function(a, c, d, n) {
          t(!(d & e.CASEINSENSITIVE), "CASEINSENSITIVE");
          t(!(d & e.UNIQUESORT), "UNIQUESORT");
          t(!(d & e.RETURNINDEXEDARRAY), "RETURNINDEXEDARRAY");
          var r = 0;
          n || (n = e.defaultCompareFunction);
          d & e.NUMERIC ? (a = b.toNumber(a), c = b.toNumber(c), r = a < c ? -1 : a > c ? 1 : 0) : r = n(a, c);
          d & e.DESCENDING && (r *= -1);
          return r;
        };
        e._every = function(a, b, c) {
          return a.every(b, c);
        };
        e._forEach = function(a, b, c) {
          return a.forEach(b, c);
        };
        e._some = function(a, b, c) {
          return a.some(b, c);
        };
        e.applyType = function(a) {
          function c(b, d) {
            Function.prototype.call.call(e.instanceConstructor, this, b, d, a);
          }
          c.prototype = e.prototype;
          c.instanceConstructor = c;
          c.callableConstructor = function(a) {
            if (a instanceof g.Int32Vector) {
              return a;
            }
            var d = a.asGetProperty(void 0, "length");
            if (void 0 !== d) {
              for (var e = new c(d, !1), h = 0;h < d;h++) {
                e.asSetNumericProperty(h, a.asGetPublicProperty(h));
              }
              return e;
            }
            b.Debug.unexpected();
          };
          c.__proto__ = e;
          return c;
        };
        e.prototype._fill = function(a, b) {
          for (var c = 0;c < a;c++) {
            this._buffer[0 + c] = b;
          }
        };
        e.prototype.toString = function() {
          for (var a = "", b = 0;b < this._buffer.length;b++) {
            a += this._buffer[b], b < this._buffer.length - 1 && (a += ",");
          }
          return a;
        };
        e.prototype.every = function(a, b) {
          for (var c = 0;c < this._buffer.length;c++) {
            if (!a.call(b, this.asGetNumericProperty(c), c, this)) {
              return!1;
            }
          }
          return!0;
        };
        e.prototype.filter = function(a, b) {
          for (var c = new e(0, !1, this._type), d = 0;d < this._buffer.length;d++) {
            a.call(b, this.asGetNumericProperty(d), d, this) && c.push(this.asGetNumericProperty(d));
          }
          return c;
        };
        e.prototype.some = function(a, c) {
          2 !== arguments.length ? s("ArgumentError", k.Errors.WrongArgumentCountError) : b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = 0;d < this._buffer.length;d++) {
            if (a.call(c, this.asGetNumericProperty(d), d, this)) {
              return!0;
            }
          }
          return!1;
        };
        e.prototype.forEach = function(a, c) {
          b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = 0;d < this._buffer.length;d++) {
            a.call(c, this.asGetNumericProperty(d), d, this);
          }
        };
        e.prototype.map = function(a, c) {
          b.isFunction(a) || s("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var d = new e(0, !1, this._type), n = 0;n < this._buffer.length;n++) {
            d.push(a.call(c, this.asGetNumericProperty(n), n, this));
          }
          return d;
        };
        e.prototype.push = function() {
          for (var a = 0;a < arguments.length - 0;a++) {
          }
          this._checkFixed();
          for (a = 0;a < arguments.length;a++) {
            this._buffer.push(this._coerce(arguments[a]));
          }
        };
        e.prototype.pop = function() {
          this._checkFixed();
          return 0 === this._buffer.length ? void 0 : this._buffer.pop();
        };
        e.prototype.reverse = function() {
          this._buffer.reverse();
        };
        e.prototype.sort = function(a) {
          return this._buffer.sort(a);
        };
        e.prototype.asGetNumericProperty = function(a) {
          d(a, this._buffer.length);
          return this._buffer[a];
        };
        e.prototype._coerce = function(a) {
          return this._type ? this._type.coerce(a) : void 0 === a ? null : a;
        };
        e.prototype.asSetNumericProperty = function(b, c) {
          a(b, this._buffer.length, this._fixed);
          this._buffer[b] = this._coerce(c);
        };
        e.prototype.shift = function() {
          this._checkFixed();
          return 0 === this._buffer.length ? void 0 : this._buffer.shift();
        };
        e.prototype._checkFixed = function() {
          this._fixed && s("RangeError", k.Errors.VectorFixedError);
        };
        e.prototype.unshift = function() {
          if (arguments.length) {
            this._checkFixed();
            for (var a = [], b = 0;b < arguments.length;b++) {
              a.push(this._coerce(arguments[b]));
            }
            this._buffer.unshift.apply(this._buffer, a);
          }
        };
        Object.defineProperty(e.prototype, "length", {get:function() {
          return this._buffer.length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._buffer.length) {
            for (var b = this._buffer.length;b < a;b++) {
              this._buffer[b] = this._defaultValue;
            }
          } else {
            this._buffer.length = a;
          }
          f(this._buffer.length === a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        e.prototype._spliceHelper = function(a, b, c, d, e) {
          b = m(b, 0, d.length - e);
          c = m(c, 0, this._buffer.length - a);
          for (var h = [], n = 0;n < b;n++) {
            h.push(this._coerce(d.asGetNumericProperty(e + n)));
          }
          this._buffer.splice.apply(this._buffer, [a, c].concat(h));
        };
        e.prototype.asNextName = function(a) {
          return a - 1;
        };
        e.prototype.asNextValue = function(a) {
          return this._buffer[a - 1];
        };
        e.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._buffer.length ? a : 0;
        };
        e.prototype.asHasProperty = function(a, c, d) {
          if (e.prototype === this || !b.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, d);
          }
          a = b.toNumber(c);
          return 0 <= a && a < this._buffer.length;
        };
        e.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        e.CASEINSENSITIVE = 1;
        e.DESCENDING = 2;
        e.UNIQUESORT = 4;
        e.RETURNINDEXEDARRAY = 8;
        e.NUMERIC = 16;
        e.instanceConstructor = e;
        e.staticNatives = [e];
        e.instanceNatives = [e.prototype, g.ASVector.prototype];
        e._sort = c;
        return e;
      }(g.ASVector);
      g.GenericVector = n;
      n.prototype._reverse = n.prototype.reverse;
      n.prototype._filter = n.prototype.filter;
      n.prototype._map = n.prototype.map;
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(a) {
        return a instanceof Q || a instanceof U;
      }
      function t(a) {
        if ("object" === typeof a && null !== a) {
          if (a instanceof U) {
            return a._children.map(t).join("");
          }
          switch(a._kind) {
            case 3:
            ;
            case 2:
              return a._value;
            default:
              return a.hasSimpleContent() ? a._children.map(t).join("") : p(a);
          }
        } else {
          return String(a);
        }
      }
      function s(a) {
        for (var b = 0, c;b < a.length && "&" !== (c = a[b]) && "<" !== c && ">" !== c;) {
          b++;
        }
        if (b >= a.length) {
          return a;
        }
        for (var h = a.substring(0, b);b < a.length;) {
          switch(c = a[b++], c) {
            case "&":
              h += "&amp;";
              break;
            case "<":
              h += "&lt;";
              break;
            case ">":
              h += "&gt;";
              break;
            default:
              h += c;
          }
        }
        return h;
      }
      function m(a) {
        for (var b = 0, c;b < a.length && "&" !== (c = a[b]) && "<" !== c && '"' !== c && "\n" !== c && "\r" !== c && "\t" !== c;) {
          b++;
        }
        if (b >= a.length) {
          return a;
        }
        for (var h = a.substring(0, b);b < a.length;) {
          switch(c = a[b++], c) {
            case "&":
              h += "&amp;";
              break;
            case "<":
              h += "&lt;";
              break;
            case '"':
              h += "&quot;";
              break;
            case "\n":
              h += "&#xA;";
              break;
            case "\r":
              h += "&#xD;";
              break;
            case "\t":
              h += "&#x9;";
              break;
            default:
              h += c;
          }
        }
        return h;
      }
      function d(a, b) {
        var c = a[b];
        return " " === c || "\n" === c || "\r" === c || "\t" === c;
      }
      function a(a) {
        for (var b = 0;b < a.length && d(a, b);) {
          b++;
        }
        if (b >= a.length) {
          return "";
        }
        for (var c = a.length - 1;d(a, c);) {
          c--;
        }
        return 0 === b && c === a.length - 1 ? a : a.substring(b, c + 1);
      }
      function c(a) {
        if (0 < a) {
          if (void 0 !== A[a]) {
            return A[a];
          }
          for (var b = "", c = 0;c < a;c++) {
            b += " ";
          }
          return A[a] = b;
        }
        return "";
      }
      function n(a) {
        for (var b = 1, c;;) {
          c = "_ns" + b;
          if (!a.some(function(a) {
            return a.prefix == c;
          })) {
            break;
          }
          b++;
        }
        return c;
      }
      function p(b, h, d) {
        if (null === b || void 0 === b) {
          throw new TypeError;
        }
        if (!(b instanceof Q)) {
          return b instanceof U ? b._children.map(function(a) {
            return p(a, h);
          }).join(Q.prettyPrinting ? "\n" : "") : s(String(b));
        }
        var e = Q.prettyPrinting;
        d |= 0;
        var l = e ? c(d) : "", r = b._kind;
        switch(r) {
          case 3:
            return e ? l + s(a(b._value)) : s(b._value);
          case 2:
            return l + m(b._value);
          case 4:
            return l + "\x3c!--" + b._value + "--\x3e";
          case 5:
            return l + "<?" + b._name.localName + " " + b._value + "?>";
          default:
            y(1 === r);
        }
        h = h || [];
        for (var f = [], q = 0;q < b._inScopeNamespaces.length;q++) {
          var x = b._inScopeNamespaces[q].prefix, g = b._inScopeNamespaces[q].uri;
          h.every(function(a) {
            return a.uri != g || a.prefix != x;
          }) && (r = new z(x, g), f.push(r));
        }
        var w = h.concat(f), r = b._name.getNamespace(w);
        void 0 === r.prefix && (q = n(w), q = new z(q, r.uri), f.push(q), w.push(q));
        var u = (r.prefix ? r.prefix + ":" : "") + b._name.localName, l = l + ("<" + u);
        b._attributes.forEach(function(a) {
          a = a._name.getNamespace(w);
          if (void 0 === a.prefix) {
            var b = n(w);
            a = new z(b, a.uri);
            f.push(a);
            w.push(a);
          }
        });
        for (q = 0;q < f.length;q++) {
          r = f[q], l += " " + (r.prefix ? "xmlns:" + r.prefix : "xmlns") + '="' + m(r.uri) + '"';
        }
        b._attributes.forEach(function(a) {
          var b = a._name, c = b.getNamespace(h);
          l += " " + (c.prefix ? c.prefix + ":" + b.localName : b.localName) + '="' + m(a._value) + '"';
        });
        if (0 === b._children.length) {
          return l += "/>";
        }
        var l = l + ">", k = 1 < b._children.length || 1 === b._children.length && 3 !== b._children[0]._kind, G = e && k ? d + Q.prettyIndent : 0;
        b._children.forEach(function(a, b) {
          e && k && (l += "\n");
          var c = p(a, w, G);
          l += c;
        });
        e && k && (l += "\n" + c(d));
        return l += "</" + u + ">";
      }
      function e(a) {
        if (null === a) {
          throw new TypeError(k.formatErrorMessage(k.Errors.ConvertNullToObjectError));
        }
        if (void 0 === a) {
          throw new TypeError(k.formatErrorMessage(k.Errors.ConvertUndefinedToObjectError));
        }
        if (a instanceof Q) {
          return a;
        }
        if (a instanceof U) {
          if (1 === a.length()) {
            return a._children[0];
          }
          throw new TypeError(k.formatErrorMessage(k.Errors.XMLMarkupMustBeWellFormed));
        }
        a = B.parseFromString(String(a));
        if (0 === a.length()) {
          return a = new h(3);
        }
        if (1 === a.length()) {
          return a._children[0]._parent = null, a._children[0];
        }
        throw "SyntaxError in ToXML";
      }
      function q(a) {
        if (null === a) {
          throw new TypeError(k.formatErrorMessage(k.Errors.ConvertNullToObjectError));
        }
        if (void 0 === a) {
          throw new TypeError(k.formatErrorMessage(k.Errors.ConvertUndefinedToObjectError));
        }
        if (a instanceof h) {
          var b = new x(a.parent, a.name);
          b.appendChild(a);
          return b;
        }
        if (a instanceof x) {
          return a;
        }
        a = e("<parent xmlns='" + Q.defaultNamespace + "'>" + a + "</parent>");
        for (var b = new x, c = 0;c < a.length();c++) {
          var d = a._children[c];
          d._parent = null;
          b.appendChild(d);
        }
        return b;
      }
      function l(a) {
        if (void 0 === a || null === a || "boolean" === typeof a || "number" === typeof a) {
          throw "TypeError: invalid operand to ToAttributeName()";
        }
        if (f(a)) {
          a = t(a);
        } else {
          if ("object" === typeof a && null !== a) {
            if (a instanceof D) {
              return new D(a.uri, a.localName, !0);
            }
            if (G.isQName(a)) {
              return D.fromMultiname(a);
            }
            a = t(a);
          }
        }
        if ("string" === typeof a) {
          var b = Namespace.createNamespace("", ""), b = new D(b, a, !0)
        }
        return b;
      }
      function u(a) {
        if (void 0 === a) {
          return new D("*");
        }
        if ("object" === typeof a && null !== a) {
          if (a instanceof D) {
            return a;
          }
          if (G.isQName(a)) {
            return D.fromMultiname(a);
          }
          a = a instanceof Q || a instanceof U ? t(a) : a instanceof G ? a.name : a.toString();
        } else {
          if ("string" !== typeof a) {
            throw new TypeError;
          }
        }
        return "@" === a[0] ? l(a.substring(1)) : new D(a);
      }
      function w(a) {
        return "object" === typeof a && a instanceof D ? !!(a._flags & 1) : !1;
      }
      function r(a, b, c) {
        return a && 1 === a.length && a[0] instanceof z && ("string" === typeof b || void 0 === b) ? new D(a[0], b || "*", c) : b;
      }
      function h(a, b, c, h) {
        var d = Object.create(Q.prototype);
        void 0 === a && (a = 3);
        void 0 === b && (b = "");
        void 0 === c && (c = "");
        d.init(a, b, c, h);
        return d;
      }
      function x(a, b) {
        var c = Object.create(U.prototype);
        c._targetObject = a ? a : null;
        c._targetProperty = b ? b : null;
        c._children = [];
        return c;
      }
      var y = b.Debug.assert, G = b.AVM2.ABC.Multiname, I = b.Debug.notImplemented, C = Object.prototype.asGetProperty, E = Object.prototype.asSetProperty, O = Object.prototype.asCallProperty, K = Object.prototype.asHasProperty, F = Object.prototype.asHasOwnProperty, J = Object.prototype.asGetEnumerableKeys, A = [], B = new function() {
        function b(c, h) {
          function e(a) {
            return a.replace(/&([^;]+);/g, function(a, b) {
              if ("#x" === b.substring(0, 2)) {
                return String.fromCharCode(parseInt(b.substring(2), 16));
              }
              if ("#" === b.substring(0, 1)) {
                return String.fromCharCode(parseInt(b.substring(1), 10));
              }
              switch(b) {
                case "lt":
                  return "<";
                case "gt":
                  return ">";
                case "amp":
                  return "&";
                case "quot":
                  return'"';
              }
              return a;
            });
          }
          function l() {
            for (var a = g.length - 1;0 <= a;--a) {
              if ("preserve" === g[a].space) {
                return!0;
              }
            }
            return!1;
          }
          function n() {
            for (var a = g.length - 1;0 <= a;--a) {
              if ("xmlns" in g[a]) {
                return g[a].xmlns;
              }
            }
            return "";
          }
          function r(a) {
            for (var b = g.length - 1;0 <= b;--b) {
              if (a in g[b].lookup) {
                return g[b].lookup[a];
              }
            }
          }
          function f(a, b) {
            var c = a.indexOf(":");
            if (0 <= c) {
              var h = a.substring(0, c), d = r(h);
              if (void 0 === d) {
                throw "Unknown namespace: " + h;
              }
              c = a.substring(c + 1);
              return{name:d + "::" + c, localName:c, prefix:h, namespace:d};
            }
            return b ? {name:a, localName:a, prefix:"", namespace:n()} : {name:a, localName:a, prefix:"", namespace:""};
          }
          function p(a, b) {
            function c() {
              for (;h < a.length && d(a, h);) {
                ++h;
              }
            }
            for (var h = b, l, n = [];h < a.length && !d(a, h) && ">" !== a[h] && "/" !== a[h];) {
              ++h;
            }
            l = a.substring(b, h);
            for (c();h < a.length && ">" !== a[h] && "/" !== a[h] && "?" !== a[h];) {
              c();
              for (var r = "", f = "";h < a.length && !d(a, h) && "=" !== a[h];) {
                r += a[h], ++h;
              }
              c();
              if ("=" !== a[h]) {
                throw "'=' expected";
              }
              ++h;
              c();
              f = a[h];
              if ('"' !== f && "'" !== f) {
                throw "Quote expected";
              }
              var x = a.indexOf(f, ++h);
              if (0 > x) {
                throw "Unexpected EOF[6]";
              }
              f = a.substring(h, x);
              n.push({name:r, value:e(f)});
              h = x + 1;
              c();
            }
            return{name:l, attributes:n, parsed:h - b};
          }
          function q(a, b) {
            for (var c = b, h;c < a.length && !d(a, c) && ">" !== a[c] && "/" !== a[c];) {
              ++c;
            }
            for (h = a.substring(b, c);c < a.length && d(a, c);) {
              ++c;
            }
            for (var e = c;c < a.length && ("?" !== a[c] || ">" != a[c + 1]);) {
              ++c;
            }
            return{name:h, value:a.substring(e, c), parsed:c - b};
          }
          for (var x = 0, g = [{namespaces:[], lookup:{xmlns:"http://www.w3.org/2000/xmlns/", xml:"http://www.w3.org/XML/1998/namespace"}, inScopes:Q.defaultNamespace ? [{uri:Q.defaultNamespace, prefix:""}] : [], space:"default", xmlns:Q.defaultNamespace || ""}];x < c.length;) {
            var m = x;
            if ("<" === c[x]) {
              switch(++m, c[m]) {
                case "/":
                  ++m;
                  x = c.indexOf(">", m);
                  if (0 > x) {
                    throw "Unexpected EOF[1]";
                  }
                  m = f(c.substring(m, x), !0);
                  h.endElement(m);
                  g.pop();
                  m = x + 1;
                  break;
                case "?":
                  ++m;
                  x = q(c, m);
                  if ("?>" != c.substring(m + x.parsed, m + x.parsed + 2)) {
                    throw "Unexpected EOF[2]";
                  }
                  h.pi(x.name, x.value);
                  m += x.parsed + 2;
                  break;
                case "!":
                  if ("--" === c.substring(m + 1, m + 3)) {
                    x = c.indexOf("--\x3e", m + 3);
                    if (0 > x) {
                      throw "Unexpected EOF[3]";
                    }
                    h.comment(c.substring(m + 3, x));
                    m = x + 3;
                  } else {
                    if ("[CDATA[" === c.substring(m + 1, m + 8)) {
                      x = c.indexOf("]]\x3e", m + 8);
                      if (0 > x) {
                        throw "Unexpected EOF[4]";
                      }
                      h.cdata(c.substring(m + 8, x));
                      m = x + 3;
                    } else {
                      if ("DOCTYPE" === c.substring(m + 1, m + 8)) {
                        var w = c.indexOf("[", m + 8), u = !1, x = c.indexOf(">", m + 8);
                        if (0 > x) {
                          throw "Unexpected EOF[5]";
                        }
                        if (0 < w && x > w) {
                          x = c.indexOf("]>", m + 8);
                          if (0 > x) {
                            throw "Unexpected EOF[7]";
                          }
                          u = !0;
                        }
                        h.doctype(c.substring(m + 8, x + (u ? 1 : 0)));
                        m = x + (u ? 2 : 1);
                      } else {
                        throw "Unknown !tag";
                      }
                    }
                  }
                  break;
                default:
                  w = p(c, m);
                  u = !1;
                  if ("/>" === c.substring(m + w.parsed, m + w.parsed + 2)) {
                    u = !0;
                  } else {
                    if (">" !== c.substring(m + w.parsed, m + w.parsed + 1)) {
                      throw "Unexpected EOF[2]";
                    }
                  }
                  for (var k = {namespaces:[], lookup:Object.create(null)}, y = w.attributes, x = 0;x < y.length;++x) {
                    var s = y[x], G = s.name;
                    if ("xmlns:" === G.substring(0, 6)) {
                      G = G.substring(6), s = s.value, r(G) !== s && (k.lookup[G] = a(s), k.namespaces.push({uri:s, prefix:G})), delete y[x];
                    } else {
                      if ("xmlns" === G) {
                        s = s.value, n() !== s && (k.xmlns = a(s), k.namespaces.push({uri:s, prefix:""})), delete y[x];
                      } else {
                        if ("xml:" === G.substring(0, 4)) {
                          var I = G.substring(4);
                          if ("space" !== I && "lang" !== I && "base" !== I) {
                            throw "Invalid xml attribute: " + G;
                          }
                          k[I] = a(s.value);
                        } else {
                          if ("xml" === G.substring(0, 3)) {
                            throw "Invalid xml attribute";
                          }
                        }
                      }
                    }
                  }
                  var t = [];
                  k.namespaces.forEach(function(a) {
                    a.prefix && k.lookup[a.prefix] !== a.uri || t.push(a);
                  });
                  g[g.length - 1].inScopes.forEach(function(a) {
                    (!a.prefix || a.prefix in k.lookup) && (a.prefix || "xmlns" in k) || t.push(a);
                  });
                  k.inScopes = t;
                  g.push(k);
                  G = [];
                  for (x = 0;x < y.length;++x) {
                    (s = y[x]) && G.push({name:f(s.name, !1), value:s.value});
                  }
                  h.beginElement(f(w.name, !0), G, t, u);
                  m += w.parsed + (u ? 2 : 1);
                  u && g.pop();
              }
            } else {
              w = !0;
              do {
                if (w = w && d(c, m), ++m >= c.length) {
                  break;
                }
              } while ("<" !== c[m]);
              h.text(e(c.substring(x, m)), w || l());
            }
            x = m;
          }
        }
        this.parseFromString = function(a, c) {
          var d = new h(1, "", "", ""), e = [];
          b(a, {beginElement:function(a, b, c, l) {
            var n = d;
            e.push(n);
            d = new h(1, a.namespace, a.localName, a.prefix);
            for (a = 0;a < b.length;++a) {
              var r = b[a], f = new h(2, r.name.namespace, r.name.localName, r.name.prefix);
              f._value = r.value;
              d._attributes.push(f);
            }
            for (a = 0;a < c.length;++a) {
              b = c[a], b = Namespace.createNamespace(b.uri, b.prefix), d._inScopeNamespaces.push(b);
            }
            n.insert(n.length(), d);
            l && (d = e.pop());
          }, endElement:function(a) {
            d = e.pop();
          }, text:function(a, b) {
            if (!b || !Q.ignoreWhitespace) {
              var c = new h(3, "", "", void 0);
              c._value = a;
              d.insert(d.length(), c);
            }
          }, cdata:function(a) {
            var b = new h(3, "", "", void 0);
            b._value = a;
            d.insert(d.length(), b);
          }, comment:function(a) {
            if (!Q.ignoreComments) {
              var b = new h(4, "", "", void 0);
              b._value = a;
              d.insert(d.length(), b);
            }
          }, pi:function(a, b) {
            if (!Q.ignoreProcessingInstructions) {
              var c = new h(5, "", a, void 0);
              c._value = b;
              d.insert(d.length(), c);
            }
          }, doctype:function(a) {
          }});
          return d;
        };
      }, z = function(a) {
        function c(a, h) {
          var d = "", e = "";
          if (0 !== arguments.length) {
            if (1 === arguments.length) {
              d = a, b.isObject(d) && d instanceof c ? (e = d.prefix, d = d.uri) : b.isObject(d) && d instanceof D && null !== d.uri ? d = d.uri : (d = t(d), e = "" === d ? "" : void 0);
            } else {
              if (d = h, d = b.isObject(d) && d instanceof D && null !== d.uri ? d.uri : t(d), "" === d) {
                if (void 0 === a || "" === t(a)) {
                  e = "";
                } else {
                  throw new TypeError;
                }
              } else {
                if (void 0 === a) {
                  e = void 0;
                } else {
                  a: {
                    try {
                      new D(a);
                    } catch (l) {
                      e = !1;
                      break a;
                    }
                    e = !0;
                  }
                  e = !1 === e ? void 0 : t(a);
                }
              }
            }
          }
          this._ns = Namespace.createNamespace(d, e);
        }
        __extends(c, a);
        c.fromNamespace = function(a) {
          return new c._namespaceConstructor(a);
        };
        Object.defineProperty(c.prototype, "prefix", {get:function() {
          return this._ns.prefix;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "uri", {get:function() {
          return this._ns.uri;
        }, enumerable:!0, configurable:!0});
        c.staticNatives = null;
        c.instanceNatives = null;
        c.instanceConstructor = c;
        c._namespaceConstructor = function(a) {
          this._ns = a;
        };
        c._namespaceConstructor.prototype = c.prototype;
        c._ = void 0;
        c.callableConstructor = function(a, h) {
          if (1 === arguments.length && b.isObject(a) && a instanceof c) {
            return a;
          }
          switch(arguments.length) {
            case 0:
              return new c;
            case 1:
              return new c(a);
            default:
              return new c(a, h);
          }
        };
        return c;
      }(g.ASObject);
      g.ASNamespace = z;
      var P;
      (function(a) {
        a[a.ATTR_NAME = 1] = "ATTR_NAME";
        a[a.ELEM_NAME = 2] = "ELEM_NAME";
        a[a.ANY_NAME = 4] = "ANY_NAME";
        a[a.ANY_NAMESPACE = 8] = "ANY_NAMESPACE";
      })(P || (P = {}));
      var D = function(a) {
        function c(a, h, d) {
          var e, l;
          0 === arguments.length ? e = "" : 1 === arguments.length ? e = a : (l = a, e = h);
          if (b.isObject(e) && e instanceof c) {
            if (2 > arguments.length) {
              return e;
            }
            e = e.localName;
          }
          e = void 0 === e || 0 === arguments.length ? "" : t(e);
          if (void 0 === l || 2 > arguments.length) {
            l = "*" === e ? null : new z("", Q.defaultNamespace);
          }
          var n = e;
          null !== l && (l = l instanceof z ? l : new z(l));
          var r = d ? 1 : 2;
          "*" === e && (r |= 4);
          null === l && (r |= 8);
          this._mn = new G([l ? l._ns : null], n);
          this._flags = r;
        }
        __extends(c, a);
        c.fromMultiname = function(a) {
          var b = Object.create(c.prototype);
          b._mn = a;
          var h = 0, h = a.isAttribute() ? h | 1 : h | 2;
          a.isAnyName() && (h |= 4);
          a.isAnyNamespace() && (h |= 8);
          b._flags = h;
          return b;
        };
        Object.defineProperty(c.prototype, "localName", {get:function() {
          return this._mn.name;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "uri", {get:function() {
          return this._mn.namespaces[0] ? this._mn.namespaces[0].uri : null;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "prefix", {get:function() {
          return this._mn.namespaces[0].prefix;
        }, enumerable:!0, configurable:!0});
        c.prototype.getNamespace = function(a) {
          if (null === this.uri) {
            throw "TypeError in QName.prototype.getNamespace()";
          }
          a || (a = []);
          for (var b, c = 0;c < a.length;c++) {
            this.uri === a[c].uri && (b = a[c]);
          }
          b || (b = new z(this.prefix, this.uri));
          return b;
        };
        c.instanceConstructor = c;
        c.callableConstructor = function(a, h) {
          if (1 === arguments.length && b.isObject(a) && a instanceof c) {
            return a;
          }
          switch(arguments.length) {
            case 0:
              return new c;
            case 1:
              return new c(a);
            default:
              return new c(a, h);
          }
        };
        return c;
      }(g.ASNative);
      g.ASQName = D;
      var L;
      (function(a) {
        a[a.FLAG_IGNORE_COMMENTS = 1] = "FLAG_IGNORE_COMMENTS";
        a[a.FLAG_IGNORE_PROCESSING_INSTRUCTIONS = 2] = "FLAG_IGNORE_PROCESSING_INSTRUCTIONS";
        a[a.FLAG_IGNORE_WHITESPACE = 4] = "FLAG_IGNORE_WHITESPACE";
        a[a.FLAG_PRETTY_PRINTING = 8] = "FLAG_PRETTY_PRINTING";
        a[a.ALL = a.FLAG_IGNORE_COMMENTS | a.FLAG_IGNORE_PROCESSING_INSTRUCTIONS | a.FLAG_IGNORE_WHITESPACE | a.FLAG_PRETTY_PRINTING] = "ALL";
      })(L || (L = {}));
      var M;
      (function(a) {
        a[a.Unknown = 0] = "Unknown";
        a[a.Element = 1] = "Element";
        a[a.Attribute = 2] = "Attribute";
        a[a.Text = 3] = "Text";
        a[a.Comment = 4] = "Comment";
        a[a.ProcessingInstruction = 5] = "ProcessingInstruction";
      })(M || (M = {}));
      var V = [null, "element", "attribute", "text", "comment", "processing-instruction"], Q = function(a) {
        function c(a) {
          "undefined" === typeof a && (a = void 0);
          if (!(this instanceof c)) {
            return a instanceof c ? a : new c(a);
          }
          if (null === a || void 0 === a) {
            a = "";
          }
          var b = e(a);
          f(a) && (b = b._deepCopy());
          return b;
        }
        __extends(c, a);
        c.prototype.init = function(a, b, c, h) {
          b = b || h ? new z(h, b) : void 0;
          this._name = new D(b, c, 2 === a);
          this._kind = a;
          this._parent = null;
          switch(a) {
            case 1:
              this._inScopeNamespaces = [];
              this._attributes = [];
              this._children = [];
              break;
            case 4:
            ;
            case 5:
            ;
            case 2:
            ;
            case 3:
              this._value = "";
          }
          return this;
        };
        c.prototype.length = function() {
          return this._children ? this._children.length : 0;
        };
        c.prototype._deepCopy = function() {
          var a = this._kind, b = new c;
          b._kind = a;
          b._name = this._name;
          switch(a) {
            case 1:
              b._inScopeNamespaces = [];
              0 < this._inScopeNamespaces.length && this._inScopeNamespaces.forEach(function(a) {
                b._inScopeNamespaces.push(new z(a.prefix, a.uri));
              });
              b._attributes = this._attributes.map(function(a) {
                a = a._deepCopy();
                a._parent = b;
                return a;
              });
              b._children = this._children.map(function(a) {
                a = a._deepCopy();
                a._parent = b;
                return a;
              });
              break;
            case 4:
            ;
            case 5:
            ;
            case 2:
            ;
            case 3:
              b._value = this._value;
          }
          return b;
        };
        c.prototype.resolveValue = function() {
          return this;
        };
        c.prototype._addInScopeNamespaces = function(a) {
          this._inScopeNamespaces.some(function(b) {
            return b.uri === a.uri && b.prefix === a.prefix;
          }) || this._inScopeNamespaces.push(a);
        };
        Object.defineProperty(c, "ignoreComments", {get:function() {
          return!!(c._flags & 1);
        }, set:function(a) {
          c._flags = a ? c._flags | 1 : c._flags & -2;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "ignoreProcessingInstructions", {get:function() {
          return!!(c._flags & 2);
        }, set:function(a) {
          c._flags = a ? c._flags | 2 : c._flags & -3;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "ignoreWhitespace", {get:function() {
          return!!(c._flags & 4);
        }, set:function(a) {
          c._flags = a ? c._flags | 4 : c._flags & -5;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "prettyPrinting", {get:function() {
          return!!(c._flags & 8);
        }, set:function(a) {
          c._flags = a ? c._flags | 8 : c._flags & -9;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "prettyIndent", {get:function() {
          return c._prettyIndent;
        }, set:function(a) {
          c._prettyIndent = a | 0;
        }, enumerable:!0, configurable:!0});
        c.prototype.toString = function() {
          return t(this);
        };
        c.prototype.native_hasOwnProperty = function(a) {
          "undefined" === typeof a && (a = void 0);
          return this.hasProperty(a, w(a), !1) ? !0 : F.call(this, String(a));
        };
        c.prototype.native_propertyIsEnumerable = function(a) {
          "undefined" === typeof a && (a = void 0);
          return "0" === String(a);
        };
        c.prototype.addNamespace = function(a) {
          this._addInScopeNamespaces(new z(a));
          return this;
        };
        c.prototype.appendChild = function(a) {
          if (a._parent) {
            var b = a._parent._children.indexOf(a);
            y(0 <= b);
            a._parent._children.splice(b, 1);
          }
          this._children.push(a);
          a._parent = this;
          return this;
        };
        c.prototype.attribute = function(a) {
          return this.getProperty(a, !0, !1);
        };
        c.prototype.attributes = function() {
          var a = new x;
          Array.prototype.push.apply(a._children, this._attributes);
          return a;
        };
        c.prototype.child = function(a) {
          return this.getProperty(a, w(a), !1);
        };
        c.prototype.childIndex = function() {
          return this._parent && 2 !== this._kind ? this._parent._children.indexOf(this) : -1;
        };
        c.prototype.children = function() {
          var a = new x(this);
          Array.prototype.push.apply(a._children, this._children);
          return a;
        };
        c.prototype.contains = function(a) {
          return this === a;
        };
        c.prototype.copy = function() {
          return this._deepCopy();
        };
        c.prototype.elements = function(a) {
          "undefined" === typeof a && (a = "*");
          return this.getProperty(a, !1, !1);
        };
        c.prototype.hasComplexContent = function() {
          return 2 === this._kind || 4 === this._kind || 5 === this._kind || 3 === this._kind ? !1 : this._children.some(function(a) {
            return 1 === a._kind;
          });
        };
        c.prototype.hasSimpleContent = function() {
          return 4 === this._kind || 5 === this._kind ? !1 : this._children || 0 !== this._children.length ? this._children.every(function(a) {
            return 1 !== a._kind;
          }) : !0;
        };
        c.prototype.inScopeNamespaces = function() {
          I("public.XML::inScopeNamespaces");
        };
        c.prototype.insertChildAfter = function(a, b) {
          I("public.XML::insertChildAfter");
        };
        c.prototype.insertChildBefore = function(a, b) {
          I("public.XML::insertChildBefore");
        };
        c.prototype.localName = function() {
          return this._name.localName;
        };
        c.prototype.name = function() {
          return this._name;
        };
        c.prototype._namespace = function(a, b) {
          I("public.XML::private _namespace");
        };
        c.prototype.namespaceDeclarations = function() {
          I("public.XML::namespaceDeclarations");
        };
        c.prototype.nodeKind = function() {
          return V[this._kind];
        };
        c.prototype.normalize = function() {
          I("public.XML::normalize");
        };
        c.prototype.parent = function() {
          return this._parent;
        };
        c.prototype.processingInstructions = function(a) {
          I("public.XML::processingInstructions");
        };
        c.prototype.prependChild = function(a) {
          I("public.XML::prependChild");
        };
        c.prototype.removeNamespace = function(a) {
          I("public.XML::removeNamespace");
        };
        c.prototype.setChildren = function(a) {
          I("public.XML::setChildren");
        };
        c.prototype.setLocalName = function(a) {
          I("public.XML::setLocalName");
        };
        c.prototype.setName = function(a) {
          I("public.XML::setName");
        };
        c.prototype.setNamespace = function(a) {
          I("public.XML::setNamespace");
        };
        c.prototype.toXMLString = function() {
          return p(this);
        };
        c.prototype.notification = function() {
          I("public.XML::notification");
        };
        c.prototype.setNotification = function(a) {
          I("public.XML::setNotification");
        };
        c.isTraitsOrDynamicPrototype = function(a) {
          return a === c.traitsPrototype || a === c.dynamicPrototype;
        };
        c.prototype.asGetEnumerableKeys = function() {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return J.call(this);
          }
          var a = [];
          this._children.forEach(function(b, c) {
            a.push(b.name);
          });
          return a;
        };
        c.prototype.setProperty = function(a, b, c) {
          var d, e;
          if (a === a >>> 0) {
            throw "TypeError in XML.prototype.setProperty(): invalid property name " + a;
          }
          if (3 !== this._kind && 4 !== this._kind && 5 !== this._kind && 2 !== this._kind) {
            if (d = c && f(c) && 3 !== c._kind && 2 !== c._kind ? c._deepCopy() : t(c), e = u(a), b) {
              this._attributes && (this._attributes.forEach(function(a, b, c) {
                a.name === e.localName && delete c[b];
              }), d = new h(2, e.uri, e.localName), d._value = c, d._parent = this, this._attributes.push(d));
            } else {
              c = void 0;
              a = !f(d) && "*" !== e.localName;
              b = e._flags & 4;
              for (var l = e._flags & 8, n = this.length() - 1;0 <= n;n--) {
                (b || 1 === this._children[n]._kind && this._children[n]._name.localName === e.localName) && (l || 1 === this._children[n]._kind && this._children[n]._name.uri === e.uri) && (void 0 !== c && this.deleteByIndex(String(c)), c = n);
              }
              void 0 === c && (c = this.length(), a && (l = null === e.uri ? new D(new z("", Q.defaultNamespace), e) : new D(e), b = new h(1, l.uri, l.localName, l.prefix), b._parent = this, l = l.getNamespace(), this.replace(String(c), b), b.addInScopeNamespace(l)));
              a ? (this._children[c]._children = [], d = t(d), "" !== d && this._children[c].replace("0", d)) : this.replace(String(c), d);
            }
          }
        };
        c.prototype.asSetProperty = function(a, b, h, d) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return E.call(this, a, b, h, d);
          }
          h &= G.ATTRIBUTE;
          this.setProperty(r(a, b, h), h, d);
        };
        c.prototype.getProperty = function(a, c, h) {
          if (h) {
            return c = G.isQName(a) ? a : this.resolveMultinameProperty(a.namespaces, a.name, a.flags), this[G.getQualifiedName(c)];
          }
          if (!G.isQName(a) && b.isNumeric(a)) {
            return 0 === Number(a) ? this : null;
          }
          var d = u(a), e = new x(this, d);
          a = d._flags;
          var l = a & 4, n = a & 8;
          c ? this._attributes && this._attributes.forEach(function(a, b) {
            !l && a._name.localName !== d.localName || !n && a._name.uri !== d.uri || e.appendChild(a);
          }) : this._children.forEach(function(a, b) {
            (l || 1 === a._kind && a._name.localName === d.localName) && (n || 1 === a._kind && a._name.uri === d.uri) && e.appendChild(a);
          });
          return e;
        };
        c.prototype.asGetNumericProperty = function(a) {
          return this.asGetProperty(null, a, 0);
        };
        c.prototype.asSetNumericProperty = function(a, b) {
          this.asSetProperty(null, a, 0, b);
        };
        c.prototype.asGetProperty = function(a, b, h) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return C.call(this, a, b, h);
          }
          h &= G.ATTRIBUTE;
          return this.getProperty(r(a, b, h), h, !1);
        };
        c.prototype.hasProperty = function(a, c, h) {
          if (h) {
            return c = G.isQName(a) ? a : this.resolveMultinameProperty(a.namespaces, a.name, a.flags), !!this[G.getQualifiedName(c)];
          }
          new x;
          if (b.isIndex(a)) {
            return 0 === Number(a) ? !0 : !1;
          }
          var d = u(a);
          a = d._flags;
          var e = a & 4, l = a & 8;
          if (c) {
            if (this._attributes) {
              return this._attributes.some(function(a, b) {
                return(e || a._name.localName === d.localName) && (l || a._name.uri === d.uri);
              });
            }
          } else {
            if (this._children.some(function(a, b) {
              return(e || 1 === a._kind && a._name.localName === d.localName) && (l || 1 === a._kind && a._name.uri === d.uri);
            })) {
              return!0;
            }
          }
        };
        c.prototype.asHasProperty = function(a, b, h) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return K.call(this, a, b, h);
          }
          var d = h & G.ATTRIBUTE;
          b = r(a, b, d);
          if (this.hasProperty(b, d, !1)) {
            return!0;
          }
          a = G.isQName(b) ? b : this.resolveMultinameProperty(a, b, h);
          return!!this[G.getQualifiedName(a)];
        };
        c.prototype.asHasPropertyInternal = function(a, b, c) {
          return this.asHasProperty(a, b, c);
        };
        c.prototype.asCallProperty = function(a, b, h, d, e) {
          if (c.isTraitsOrDynamicPrototype(this) || d) {
            return O.call(this, a, b, h, d, e);
          }
          var l;
          l = this.resolveMultinameProperty(a, b, h);
          if (this.asGetNumericProperty && G.isNumeric(l)) {
            l = this.asGetNumericProperty(l);
          } else {
            var n = this.asOpenMethods;
            l = n && n[l] || this[l];
          }
          if (l) {
            return O.call(this, a, b, h, d, e);
          }
          if (this.hasSimpleContent()) {
            return Object(t(this)).asCallProperty(a, b, h, d, e);
          }
          throw new TypeError;
        };
        c.prototype._delete = function(a, b) {
          I("XML.[[Delete]]");
        };
        c.prototype.deleteByIndex = function(a) {
          var b = a >>> 0;
          if (String(b) !== String(a)) {
            throw "TypeError in XML.prototype.deleteByIndex(): invalid index " + a;
          }
          if (a < this.length() && this.children[a]) {
            this.children[a]._parent = null;
            delete this.children[a];
            for (a = b + 1;a < this.length();a++) {
              this.children[a - 1] = this.children[a];
            }
            this.children.length -= 1;
          }
        };
        c.prototype.insert = function(a, b) {
          var c, h;
          if (3 !== this._kind && 4 !== this._kind && 5 !== this._kind && 2 !== this._kind) {
            c = a >>> 0;
            if (String(a) !== String(c)) {
              throw "TypeError in XML.prototype.insert(): invalid property name " + a;
            }
            if (1 === this._kind) {
              for (h = this;h;) {
                if (h === b) {
                  throw "Error in XML.prototype.insert()";
                }
                h = h._parent;
              }
            }
            if (this instanceof U) {
              if (h = this.length(), 0 === h) {
                return;
              }
            } else {
              h = 1;
            }
            for (var d = this.length() - 1;d >= c;d--) {
              this._children[d + h] = this._children[d];
            }
            if (this instanceof U) {
              for (h = b.length(), d = 0;d < h;d++) {
                b._children[d]._parent = this, this[c + d] = b[d];
              }
            } else {
              b._parent = this, this._children[c] = b;
            }
          }
        };
        c.prototype.replace = function(a, b) {
          var c, d = this;
          if (3 === d._kind || 4 === d._kind || 5 === d._kind || 2 === d._kind) {
            return d;
          }
          if (1 === b._kind) {
            for (c = d;c;) {
              if (c === b) {
                throw "Error in XML.prototype.replace()";
              }
              c = c._parent;
            }
          }
          c = a >>> 0;
          if (String(a) === String(c)) {
            c >= d.length() && (a = String(d.length())), d._children[a] && (d._children[a]._parent = null);
          } else {
            c = this.getProperty(a, !1, !1);
            if (0 === c.length()) {
              return d;
            }
            c._children.forEach(function(b, c) {
              var h = d._children.indexOf(b);
              b._parent = null;
              0 === c ? (a = String(h), d._children.splice(h, 1, void 0)) : d._children.splice(h, 1);
            });
          }
          if (1 === b._kind || 3 === b._kind || 4 === b._kind || 5 === b._kind) {
            b._parent = d, d._children[a] = b;
          } else {
            c = t(b);
            var e = new h;
            e._parent = d;
            e._value = c;
            d._children[a] = e;
          }
          return d;
        };
        c.prototype.addInScopeNamespace = function(a) {
          var b = this;
          if (3 !== b._kind && 4 !== b._kind && 5 !== b._kind && 2 !== b._kind && void 0 !== a.prefix && ("" !== a.prefix || "" !== b._name.uri)) {
            var c = null;
            b._inScopeNamespaces.forEach(function(b, h) {
              b.prefix === a.prefix && (c = b);
            });
            null !== c && c.uri !== a.uri && b._inScopeNamespaces.forEach(function(h, d) {
              h.prefix === c.prefix && (b._inScopeNamespaces[d] = a);
            });
            b._name.prefix === a.prefix && (b._name.prefix = void 0);
            b._attributes.forEach(function(b, c) {
              b._name.prefix === a.prefix && (b._name.prefix = void 0);
            });
          }
        };
        c.prototype.descendants = function(a) {
          "undefined" === typeof a && (a = "*");
          a = u(a);
          var b = a._flags, c = new x;
          if (1 !== this._kind) {
            return c;
          }
          var h = b & 4;
          b & 1 ? this._attributes.forEach(function(b, d) {
            (h || a.localName === b._name.localName) && c.appendChild(b);
          }) : this._children.forEach(function(b, d) {
            (h || a.localName === b._name.localName) && c.appendChild(b);
          });
          this._children.forEach(function(b, h) {
            c.appendChild(b.descendants(a));
          });
          return c;
        };
        c.prototype.comments = function() {
          var a = new x(this, null);
          this._children.forEach(function(b, c) {
            4 === b._kind && a.appendChild(b);
          });
          return a;
        };
        c.prototype.text = function() {
          var a = new x(this, null);
          this._children.forEach(function(b, c) {
            3 === b._kind && a.appendChild(b);
          });
          return a;
        };
        c.instanceConstructor = c;
        c.callableConstructor = function(a) {
          "undefined" === typeof a && (a = void 0);
          if (null === a || void 0 === a) {
            a = "";
          }
          return e(a);
        };
        c.defaultNamespace = "";
        c._flags = L.ALL;
        c._prettyIndent = 2;
        return c;
      }(g.ASNative);
      g.ASXML = Q;
      var U = function(a) {
        function c(a) {
          "undefined" === typeof a && (a = void 0);
          if (null === a || void 0 === a) {
            a = "";
          }
          var b = q(a);
          f(a) && (b = b._deepCopy());
          return b;
        }
        __extends(c, a);
        c.prototype.toString = function() {
          return t(this);
        };
        c.prototype._deepCopy = function() {
          for (var a = new x, b = 0;b < this.length();b++) {
            a.appendChild(this._children[b]._deepCopy());
          }
          return a;
        };
        c.prototype.hasOwnProperty = function(a) {
          I("public.XMLList::hasOwnProperty");
        };
        c.prototype.propertyIsEnumerable = function(a) {
          I("public.XMLList::propertyIsEnumerable");
        };
        c.prototype.attribute = function(a) {
          return this.getProperty(a, !0, !1);
        };
        c.prototype.attributes = function() {
          return this.getProperty("*", !0, !1);
        };
        c.prototype.child = function(a) {
          return this.getProperty(a, !1, !1);
        };
        c.prototype.children = function() {
          return this.getProperty("*", !1, !1);
        };
        c.prototype.comments = function() {
          var a = new x(this);
          this._children.forEach(function(b) {
            1 === b._kind && (b = b.comments(), Array.prototype.push.apply(a._children, b._children));
          });
          return a;
        };
        c.prototype.contains = function(a) {
          return 0 <= this._children.indexOf(a);
        };
        c.prototype.copy = function() {
          return this._deepCopy();
        };
        c.prototype.elements = function(a) {
          "undefined" === typeof a && (a = "*");
          var b = new x(this, new D(a));
          this._children.forEach(function(c) {
            1 === c._kind && (c = c.elements(a), Array.prototype.push.apply(b._children, c._children));
          });
          return b;
        };
        c.prototype.hasComplexContent = function() {
          switch(this.length()) {
            case 0:
              return!1;
            case 1:
              return this._children[0].hasComplexContent();
            default:
              return this._children.some(function(a) {
                return 1 === a._kind;
              });
          }
        };
        c.prototype.hasSimpleContent = function() {
          switch(this.length()) {
            case 0:
              return!0;
            case 1:
              return this._children[0].hasSimpleContent();
            default:
              return this._children.every(function(a) {
                return 1 !== a._kind;
              });
          }
        };
        c.prototype.length = function() {
          return this._children.length;
        };
        c.prototype.name = function() {
          return this._children[0].name();
        };
        c.prototype.normalize = function() {
          I("public.XMLList::normalize");
        };
        c.prototype.parent = function() {
          if (0 !== this.length()) {
            for (var a = this._children[0]._parent, b = 1;b < this.length();b++) {
              if (a !== this._children[b]._parent) {
                return;
              }
            }
            return a;
          }
        };
        c.prototype.processingInstructions = function(a) {
          I("public.XMLList::processingInstructions");
        };
        c.prototype.text = function() {
          var a = new x(this);
          this._children.forEach(function(b, c) {
            if (1 === b._kind) {
              var h = b.text();
              0 < h.length() && a.appendChild(h);
            }
          });
          return a;
        };
        c.prototype.toXMLString = function() {
          return p(this);
        };
        c.prototype.addNamespace = function(a) {
          I("public.XMLList::addNamespace");
        };
        c.prototype.appendChild = function(a) {
          if (a instanceof c) {
            return this._children.push.apply(this._children, a._children), a;
          }
          this._children.push(a);
          return a;
        };
        c.prototype.childIndex = function() {
          I("public.XMLList::childIndex");
        };
        c.prototype.inScopeNamespaces = function() {
          I("public.XMLList::inScopeNamespaces");
        };
        c.prototype.insertChildAfter = function(a, b) {
          I("public.XMLList::insertChildAfter");
        };
        c.prototype.insertChildBefore = function(a, b) {
          I("public.XMLList::insertChildBefore");
        };
        c.prototype.nodeKind = function() {
          I("public.XMLList::nodeKind");
        };
        c.prototype._namespace = function(a, b) {
          I("public.XMLList::private _namespace");
        };
        c.prototype.localName = function() {
          I("public.XMLList::localName");
        };
        c.prototype.namespaceDeclarations = function() {
          I("public.XMLList::namespaceDeclarations");
        };
        c.prototype.prependChild = function(a) {
          I("public.XMLList::prependChild");
        };
        c.prototype.removeNamespace = function(a) {
          I("public.XMLList::removeNamespace");
        };
        c.prototype.replace = function(a, b) {
          I("public.XMLList::replace");
        };
        c.prototype.setChildren = function(a) {
          I("public.XMLList::setChildren");
        };
        c.prototype.setLocalName = function(a) {
          I("public.XMLList::setLocalName");
        };
        c.prototype.setName = function(a) {
          I("public.XMLList::setName");
        };
        c.prototype.setNamespace = function(a) {
          I("public.XMLList::setNamespace");
        };
        c.isTraitsOrDynamicPrototype = function(a) {
          return a === c.traitsPrototype || a === c.dynamicPrototype;
        };
        c.prototype.asGetEnumerableKeys = function() {
          return c.isTraitsOrDynamicPrototype(this) ? J.call(this) : this._children.asGetEnumerableKeys();
        };
        c.prototype.getProperty = function(a, c, h) {
          if (h) {
            return a = G.isQName(a) ? a : this.resolveMultinameProperty(a.namespaces, a.name, a.flags), this[G.getQualifiedName(a)];
          }
          if (b.isIndex(a)) {
            return this._children[a];
          }
          var d = u(a), e = new x(this, d);
          this._children.forEach(function(a, b) {
            if (1 === a._kind) {
              var l = a.getProperty(d, c, h);
              0 < l.length() && e.appendChild(l);
            }
          });
          return e;
        };
        c.prototype.asGetNumericProperty = function(a) {
          return this.asGetProperty(null, a, 0);
        };
        c.prototype.asSetNumericProperty = function(a, b) {
          this.asSetProperty(null, a, 0, b);
        };
        c.prototype.asGetProperty = function(a, b, h) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return C.call(this, a, b, h);
          }
          h &= G.ATTRIBUTE;
          return this.getProperty(r(a, b, h), h, !1);
        };
        c.prototype.hasProperty = function(a, c) {
          return b.isIndex(a) ? Number(a) < this._children.length : !0;
        };
        c.prototype.asHasProperty = function(a, b, h) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return C.call(this, a, b, h);
          }
          h &= G.ATTRIBUTE;
          return this.hasProperty(r(a, b, h), h);
        };
        c.prototype.asHasPropertyInternal = function(a, b, c) {
          c &= G.ATTRIBUTE;
          return this.hasProperty(r(a, b, c), c);
        };
        c.prototype.setProperty = function(a, c, h) {
          b.isIndex(a) ? this.appendChild(h) : (a = this.getProperty(a, c, !1), e(a).replace(0, e(h)));
        };
        c.prototype.asSetProperty = function(a, b, h, d) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return E.call(this, a, b, h, d);
          }
          h &= G.ATTRIBUTE;
          b = r(a, b, h);
          return this.setProperty(b, h, d);
        };
        c.prototype.asCallProperty = function(a, b, h, d, e) {
          if (c.isTraitsOrDynamicPrototype(this) || d) {
            return O.call(this, a, b, h, d, e);
          }
          var l;
          l = this.resolveMultinameProperty(a, b, h);
          if (this.asGetNumericProperty && G.isNumeric(l)) {
            l = this.asGetNumericProperty(l);
          } else {
            var n = this.asOpenMethods;
            l = n && n[l] || this[l];
          }
          if (l) {
            return O.call(this, a, b, h, d, e);
          }
          if (1 === this.length()) {
            return this._children[0].asCallProperty(a, b, h, d, e);
          }
          throw new TypeError;
        };
        c.instanceConstructor = c;
        c.callableConstructor = function(a) {
          "undefined" === typeof a && (a = void 0);
          if (null === a || void 0 === a) {
            a = "";
          }
          return q(a);
        };
        return c;
      }(g.ASNative);
      g.ASXMLList = U;
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(a) {
        return c.getPublicQualifiedName(a);
      }
      function k(a) {
        var b = a.name;
        return(a = a.namespaces[0]) && a.uri ? a.uri + "::" + b : b;
      }
      function s(a) {
        if (!a) {
          return null;
        }
        var b = [], c;
        for (c in a) {
          b.push(m(a[c]));
        }
        return b;
      }
      function m(a) {
        var b = {};
        b[u] = a.name;
        b[h] = a.value.map(function(a) {
          var b = {};
          b[h] = a.value;
          b[x] = a.key;
          return b;
        });
        return b;
      }
      function d(b, c, h, d) {
        function n(c) {
          a(c, "No traits array found on class" + b.classInfo.instanceInfo.name);
          for (var f = c.length;f--;) {
            var x = c[f];
            if (x.name.getNamespace().isPublic() || x.name.uri) {
              var g = k(x.name);
              if (V[g] !== Q[g]) {
                var C = M[g];
                C[q] = "readwrite";
                2 === x.kind && (C[w] = k(x.methodInfo.returnType));
              } else {
                if (!M[g]) {
                  switch(C = {}, M[g] = C, x.kind) {
                    case 6:
                    ;
                    case 0:
                      if (!(d & 8)) {
                        continue;
                      }
                      C[u] = g;
                      C[l] = void 0 === x.name.uri ? null : x.name.uri;
                      C[w] = x.typeName ? k(x.typeName) : "*";
                      C[q] = "readwrite";
                      C[e] = d & 64 ? s(x.metadata) : null;
                      B.push(C);
                      break;
                    case 1:
                      if (!m) {
                        continue;
                      }
                      C[r] = x.methodInfo.returnType ? k(x.methodInfo.returnType) : "*";
                      C[e] = d & 64 ? s(x.metadata) : null;
                      C[u] = g;
                      C[l] = void 0 === x.name.uri ? null : x.name.uri;
                      for (var g = C[y] = [], x = x.methodInfo.parameters, K = 0;K < x.length;K++) {
                        var F = x[K], A = {};
                        A[w] = F.type ? k(F.type) : "*";
                        A[G] = "value" in F;
                        g.push(A);
                      }
                      C[p] = U;
                      L.push(C);
                      break;
                    case 2:
                    ;
                    case 3:
                      if (!(d & 16) || h) {
                        continue;
                      }
                      C[u] = g;
                      2 === x.kind ? (C[w] = x.methodInfo.returnType ? k(x.methodInfo.returnType) : "*", V[g] = C) : (K = x.methodInfo.parameters[0].type, C[w] = K ? k(K) : "*", Q[g] = C);
                      C[q] = 2 === x.kind ? "readonly" : "writeonly";
                      C[e] = d & 64 ? s(x.metadata) : null;
                      C[l] = void 0 === x.name.uri ? null : x.name.uri;
                      C[p] = U;
                      z.push(C);
                      break;
                    default:
                      a(!1, "Unknown trait type: " + x.kind);
                  }
                }
              }
            }
          }
        }
        var x = d & 2, m = d & 32 && !h, A = {}, B = A[f("variables")] = d & 8 ? [] : null, z = A[f("accessors")] = d & 16 ? [] : null, P = null;
        d & 64 && (P = h ? [] : s(c.metadata) || []);
        A[e] = P;
        A[f("constructor")] = null;
        if (d & 4) {
          if (c = A[f("interfaces")] = [], d & 512 || !h) {
            for (var D in b.implementedInterfaces) {
              P = b.implementedInterfaces[D].getQualifiedClassName(), c.push(P);
            }
          }
        } else {
          A[f("interfaces")] = null;
        }
        var L = A[f("methods")] = m ? [] : null;
        D = A[f("bases")] = x ? [] : null;
        var M = {}, V = {}, Q = {};
        for (c = !1;b;) {
          var U = k(b.classInfo.instanceInfo.name);
          x && c && !h ? D.push(U) : c = !0;
          if (d & 1024 && b === g.ASObject) {
            break;
          }
          d & 512 || !h ? n(b.classInfo.instanceInfo.traits) : n(b.classInfo.traits);
          b = b.baseClass;
        }
        h && (d & 16 && (c = {}, c[u] = "prototype", c[w] = "*", c[q] = "readonly", c[e] = null, c[l] = null, c[p] = "Class", z.push(c)), x && (D.pop(), D.push("Class", "Object"), b = g.ASClass));
        return A;
      }
      var a = b.Debug.assert, c = b.AVM2.ABC.Multiname, n;
      (function(a) {
        a[a.HIDE_NSURI_METHODS = 1] = "HIDE_NSURI_METHODS";
        a[a.INCLUDE_BASES = 2] = "INCLUDE_BASES";
        a[a.INCLUDE_INTERFACES = 4] = "INCLUDE_INTERFACES";
        a[a.INCLUDE_VARIABLES = 8] = "INCLUDE_VARIABLES";
        a[a.INCLUDE_ACCESSORS = 16] = "INCLUDE_ACCESSORS";
        a[a.INCLUDE_METHODS = 32] = "INCLUDE_METHODS";
        a[a.INCLUDE_METADATA = 64] = "INCLUDE_METADATA";
        a[a.INCLUDE_CONSTRUCTOR = 128] = "INCLUDE_CONSTRUCTOR";
        a[a.INCLUDE_TRAITS = 256] = "INCLUDE_TRAITS";
        a[a.USE_ITRAITS = 512] = "USE_ITRAITS";
        a[a.HIDE_OBJECT = 1024] = "HIDE_OBJECT";
      })(n || (n = {}));
      var p = f("declaredBy"), e = f("metadata"), q = f("access"), l = f("uri"), u = f("name"), w = f("type"), r = f("returnType"), h = f("value"), x = f("key"), y = f("parameters"), G = f("optional");
      g.describeTypeJSON = function(b, c) {
        if (!b || "object" !== typeof b) {
          return null;
        }
        var h = b.classInfo ? b : Object.getPrototypeOf(b).class;
        a(h, "No class found for object " + b);
        var e = h === b, l = h.classInfo, n = {};
        n[u] = k(l.instanceInfo.name);
        n[f("isDynamic")] = e || !(l.instanceInfo.flags & 1);
        n[f("isFinal")] = e || !!(l.instanceInfo.flags & 2);
        n[f("isStatic")] = e;
        c & 256 && (n[f("traits")] = d(h, l, e, c));
        return n;
      };
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.assert, k = b.ObjectUtilities.createEmptyObject;
      (function(b) {
        (function(b) {
          var d = Object.prototype.asGetProperty, a = Object.prototype.asSetProperty, c = Object.prototype.asHasProperty, n = Object.prototype.asDeleteProperty, p = Object.prototype.asGetEnumerableKeys, e = function(b) {
            function e(a) {
            }
            __extends(e, b);
            e.isTraitsOrDynamicPrototype = function(a) {
              return a === e.traitsPrototype || a === e.dynamicPrototype;
            };
            e.makePrimitiveKey = function(a) {
              if ("string" === typeof a || "number" === typeof a) {
                return a;
              }
              f("object" === typeof a || "function" === typeof a, typeof a);
            };
            e.prototype.init = function(a) {
              this.weakKeys = !!a;
              this.map = new WeakMap;
              a || (this.keys = []);
              this.primitiveMap = k();
            };
            e.prototype.asGetNumericProperty = function(a) {
              return this.asGetProperty(null, a, 0);
            };
            e.prototype.asSetNumericProperty = function(a, b) {
              this.asSetProperty(null, a, 0, b);
            };
            e.prototype.asGetProperty = function(a, b, c) {
              if (e.isTraitsOrDynamicPrototype(this)) {
                return d.call(this, a, b, c);
              }
              a = e.makePrimitiveKey(b);
              return void 0 !== a ? this.primitiveMap[a] : this.map.get(Object(b));
            };
            e.prototype.asSetProperty = function(b, c, d, h) {
              if (e.isTraitsOrDynamicPrototype(this)) {
                return a.call(this, b, c, d, h);
              }
              b = e.makePrimitiveKey(c);
              void 0 !== b ? this.primitiveMap[b] = h : (this.map.set(Object(c), h), !this.weakKeys && 0 > this.keys.indexOf(c) && this.keys.push(c));
            };
            e.prototype.asHasProperty = function(a, b, d) {
              if (e.isTraitsOrDynamicPrototype(this)) {
                return c.call(this, a, b, d);
              }
              a = e.makePrimitiveKey(b);
              return void 0 !== a ? a in this.primitiveMap : this.map.has(Object(b));
            };
            e.prototype.asDeleteProperty = function(a, b, c) {
              if (e.isTraitsOrDynamicPrototype(this)) {
                return n.call(this, a, b, c);
              }
              a = e.makePrimitiveKey(b);
              void 0 !== a && delete this.primitiveMap[a];
              this.map.delete(Object(b));
              var h;
              !this.weakKeys && 0 <= (h = this.keys.indexOf(b)) && this.keys.splice(h, 1);
              return!0;
            };
            e.prototype.asGetEnumerableKeys = function() {
              if (e.isTraitsOrDynamicPrototype(this)) {
                return p.call(this);
              }
              var a = [], b;
              for (b in this.primitiveMap) {
                a.push(b);
              }
              return this.weakKeys ? a : a.concat(this.keys);
            };
            e.protocol = e.prototype;
            return e;
          }(g.ASNative);
          b.Dictionary = e;
          b.OriginalDictionary = e;
        })(b.utils || (b.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.notImplemented, k = b.AVM2.ABC.Namespace;
      (function(b) {
        (function(b) {
          var d = Object.prototype.asGetProperty, a = Object.prototype.asSetProperty, c = Object.prototype.asCallProperty, n = Object.prototype.asHasProperty, p = Object.prototype.asHasOwnProperty, e = Object.prototype.asHasTraitProperty, q = Object.prototype.asDeleteProperty, l = function(b) {
            function l() {
              b.apply(this, arguments);
            }
            __extends(l, b);
            l.prototype.asGetProperty = function(a, b, l) {
              return e.call(this, a, b, l) ? d.call(this, a, b, l) : c.call(this, [k.PROXY], "getProperty", 0, !1, [b]);
            };
            l.prototype.asGetNumericProperty = function(a) {
              return this.asGetProperty(null, a, 0);
            };
            l.prototype.asSetNumericProperty = function(a, b) {
              this.asSetProperty(null, a, 0, b);
            };
            l.prototype.asSetProperty = function(b, h, d, l) {
              e.call(this, b, h, d) ? a.call(this, b, h, d, l) : c.call(this, [k.PROXY], "setProperty", 0, !1, [h, l]);
            };
            l.prototype.asCallProperty = function(a, b, d, l, n) {
              return e.call(this, a, b, d) ? c.call(this, a, b, d, !1, n) : c.call(this, [k.PROXY], "callProperty", 0, !1, [b].concat(n));
            };
            l.prototype.asHasProperty = function(a, b, d) {
              return e.call(this, a, b, d) ? n.call(this, a, b, d) : c.call(this, [k.PROXY], "hasProperty", 0, !1, [b]);
            };
            l.prototype.asHasOwnProperty = function(a, b, d) {
              return e.call(this, a, b, d) ? p.call(this, a, b, d) : c.call(this, [k.PROXY], "hasProperty", 0, !1, [b]);
            };
            l.prototype.asDeleteProperty = function(a, b, d) {
              return e.call(this, a, b, d) ? q.call(this, a, b, d) : c.call(this, [k.PROXY], "deleteProperty", 0, !1, [b]);
            };
            l.prototype.asNextName = function(a) {
              f("Proxy asNextName");
            };
            l.prototype.asNextValue = function(a) {
              f("Proxy asNextValue");
            };
            l.prototype.asNextNameIndex = function(a) {
              f("Proxy asNextNameIndex");
            };
            l.protocol = l.prototype;
            return l;
          }(g.ASNative);
          b.Proxy = l;
          b.OriginalProxy = l;
        })(b.utils || (b.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.unexpected, t = b.ArrayUtilities.DataBuffer, s = b.Debug.assert;
      (function(b) {
        (function(b) {
          var a = function(a) {
            function b() {
              a.apply(this, arguments);
            }
            __extends(b, a);
            b.AMF0 = 0;
            b.AMF3 = 3;
            b.DEFAULT = b.AMF3;
            return b;
          }(g.ASNative);
          b.ObjectEncoding = a;
        })(b.net || (b.net = {}));
      })(g.flash || (g.flash = {}));
      (function(m) {
        (function(d) {
          var a = function(a) {
            function d() {
            }
            __extends(d, a);
            Object.defineProperty(d, "defaultObjectEncoding", {get:function() {
              return this._defaultObjectEncoding;
            }, set:function(a) {
              this._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            d.prototype.readObject = function() {
              switch(this._objectEncoding) {
                case m.net.ObjectEncoding.AMF0:
                  return k.AMF0.read(this);
                case m.net.ObjectEncoding.AMF3:
                  return k.AMF3.read(this);
                default:
                  f("Object Encoding");
              }
            };
            d.prototype.writeObject = function(a) {
              switch(this._objectEncoding) {
                case m.net.ObjectEncoding.AMF0:
                  return k.AMF0.write(this, a);
                case m.net.ObjectEncoding.AMF3:
                  return k.AMF3.write(this, a);
                default:
                  f("Object Encoding");
              }
            };
            d.instanceConstructor = t;
            d.staticNatives = [t];
            d.instanceNatives = [t.prototype];
            d.callableConstructor = null;
            d.initializer = function(a) {
              var c = b.Timeline.BinarySymbol;
              s(c);
              var f, l = 0;
              a ? (a instanceof ArrayBuffer ? f = a.slice() : Array.isArray(a) ? f = (new Uint8Array(f)).buffer : a instanceof c ? f = (new Uint8Array(a.buffer)).buffer.slice() : "buffer" in a ? (s(a.buffer instanceof ArrayBuffer), f = a.buffer.slice()) : b.Debug.unexpected("Source type."), l = f.byteLength) : f = new ArrayBuffer(d.INITIAL_SIZE);
              this._buffer = f;
              this._length = l;
              this._position = 0;
              this._updateViews();
              this._objectEncoding = d.defaultObjectEncoding;
              this._littleEndian = !1;
              this._bitLength = this._bitBuffer = 0;
            };
            d.protocol = d.prototype;
            d.INITIAL_SIZE = 128;
            d._defaultObjectEncoding = m.net.ObjectEncoding.DEFAULT;
            return d;
          }(g.ASNative);
          d.ByteArray = a;
          a.prototype.asGetNumericProperty = t.prototype.getValue;
          a.prototype.asSetNumericProperty = t.prototype.setValue;
          d.OriginalByteArray = a;
        })(m.utils || (m.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.Debug.notImplemented, k = b.AVM2.Runtime.asCoerceString;
      (function(s) {
        (function(m) {
          var d = function(a) {
            function b() {
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "enabled", {get:function() {
              f("public flash.system.IME::get enabled");
            }, set:function(a) {
              f("public flash.system.IME::set enabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "conversionMode", {get:function() {
              f("public flash.system.IME::get conversionMode");
            }, set:function(a) {
              k(a);
              f("public flash.system.IME::set conversionMode");
            }, enumerable:!0, configurable:!0});
            b.setCompositionString = function(a) {
              k(a);
              f("public flash.system.IME::static setCompositionString");
            };
            b.doConversion = function() {
              f("public flash.system.IME::static doConversion");
            };
            b.compositionSelectionChanged = function(a, b) {
              f("public flash.system.IME::static compositionSelectionChanged");
            };
            b.compositionAbandoned = function() {
              f("public flash.system.IME::static compositionAbandoned");
            };
            b._checkSupported = function() {
              f("public flash.system.IME::static _checkSupported");
            };
            return b;
          }(g.ASNative);
          m.IME = d;
          d = function(a) {
            function c() {
              a.apply(this, arguments);
            }
            __extends(c, a);
            Object.defineProperty(c, "ime", {get:function() {
              f("public flash.system.System::get ime");
            }, enumerable:!0, configurable:!0});
            c.setClipboard = function(a) {
              a = k(a);
              null === b.ClipboardService.instance ? f("public flash.system.System::setClipboard") : b.ClipboardService.instance.setClipboard(a);
            };
            Object.defineProperty(c, "totalMemoryNumber", {get:function() {
              return 2097152;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "freeMemory", {get:function() {
              return 1048576;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "privateMemory", {get:function() {
              f("public flash.system.System::get privateMemory");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "processCPUUsage", {get:function() {
              f("public flash.system.System::get processCPUUsage");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "useCodePage", {get:function() {
              f("public flash.system.System::get useCodePage");
            }, set:function(a) {
              f("public flash.system.System::set useCodePage");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "vmVersion", {get:function() {
              return "1.0 Shumway - Mozilla Research";
            }, enumerable:!0, configurable:!0});
            c.pause = function() {
              f("public flash.system.System::static pause");
            };
            c.resume = function() {
              f("public flash.system.System::static resume");
            };
            c.exit = function(a) {
              f("public flash.system.System::static exit");
            };
            c.gc = function() {
              f("public flash.system.System::static gc");
            };
            c.pauseForGCIfCollectionImminent = function(a) {
              f("public flash.system.System::static pauseForGCIfCollectionImminent");
            };
            c.disposeXML = function(a) {
              f("public flash.system.System::static disposeXML");
            };
            Object.defineProperty(c, "swfVersion", {get:function() {
              return 19;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "apiVersion", {get:function() {
              return 26;
            }, enumerable:!0, configurable:!0});
            c.getArgv = function() {
              return[];
            };
            c.getRunmode = function() {
              return "mixed";
            };
            return c;
          }(g.ASNative);
          m.System = d;
          m.OriginalSystem = d;
        })(s.system || (s.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.AVM2.ABC.Multiname, t = b.AVM2.ABC.ClassInfo, s = b.AVM2.ABC.ScriptInfo, m = b.AVM2.ABC.InstanceInfo, d = b.AVM2.ABC.Info, a = b.AVM2.ABC.MethodInfo, c = b.Debug.assert, n = b.Debug.notImplemented, p = b.ArrayUtilities.popManyIntoVoid, e = function() {
        return function(a) {
          "undefined" === typeof a && (a = "");
          this.message = a;
          this.name = "VerifierError";
        };
      }();
      g.VerifierError = e;
      var q = function() {
        return function() {
        };
      }();
      g.TypeInformation = q;
      var l = function() {
        function a() {
        }
        a.from = function(b, h) {
          c(b.hash);
          var d = a._cache[b.hash];
          d || (d = a._cache[b.hash] = new w(b, h));
          return d;
        };
        a.fromSimpleName = function(b, c) {
          return a.fromName(f.fromSimpleName(b), c);
        };
        a.fromName = function(b, h) {
          if (void 0 === b) {
            return a.Undefined;
          }
          var d = f.isQName(b) ? f.getFullQualifiedName(b) : void 0;
          if (d) {
            var e = a._cache.byQN[d];
            if (e) {
              return e;
            }
          }
          if (d === f.getPublicQualifiedName("void")) {
            return a.Void;
          }
          c(h, "An ApplicationDomain is needed.");
          e = (e = h.findClassInfo(b)) ? a.from(e, h) : a.Any;
          b.hasTypeParameter() && (e = new x(e, a.fromName(b.typeParameter, h)));
          return a._cache.byQN[d] = e;
        };
        a.initializeTypes = function(b) {
          a._typesInitialized || (a.Any = new u("any", "?"), a.Null = new u("Null", "X"), a.Void = new u("Void", "V"), a.Undefined = new u("Undefined", "_"), a.Int = a.fromSimpleName("int", b).instanceType(), a.Uint = a.fromSimpleName("uint", b).instanceType(), a.Class = a.fromSimpleName("Class", b).instanceType(), a.Array = a.fromSimpleName("Array", b).instanceType(), a.Object = a.fromSimpleName("Object", b).instanceType(), a.String = a.fromSimpleName("String", b).instanceType(), a.Number = a.fromSimpleName("Number", 
          b).instanceType(), a.Boolean = a.fromSimpleName("Boolean", b).instanceType(), a.Function = a.fromSimpleName("Function", b).instanceType(), a.XML = a.fromSimpleName("XML", b).instanceType(), a.XMLList = a.fromSimpleName("XMLList", b).instanceType(), a.Dictionary = a.fromSimpleName("flash.utils.Dictionary", b).instanceType(), a._typesInitialized = !0);
        };
        a.prototype.equals = function(a) {
          return this === a;
        };
        a.prototype.merge = function(b) {
          return a.Any;
        };
        a.prototype.instanceType = function() {
          return a.Any;
        };
        a.prototype.classType = function() {
          return a.Any;
        };
        a.prototype.super = function() {
          b.Debug.abstractMethod("super");
          return null;
        };
        a.prototype.applyType = function(a) {
          return null;
        };
        a.prototype.getTrait = function(a, b, c) {
          return null;
        };
        a.prototype.isNumeric = function() {
          return this === a.Int || this === a.Uint || this === a.Number;
        };
        a.prototype.isString = function() {
          return this === a.String;
        };
        a.prototype.isScriptInfo = function() {
          return!1;
        };
        a.prototype.isClassInfo = function() {
          return!1;
        };
        a.prototype.isInstanceInfo = function() {
          return!1;
        };
        a.prototype.isMethodInfo = function() {
          return!1;
        };
        a.prototype.isTraitsType = function() {
          return this instanceof w;
        };
        a.prototype.isParameterizedType = function() {
          return this instanceof x;
        };
        a.prototype.isMethodType = function() {
          return this instanceof r;
        };
        a.prototype.isMultinameType = function() {
          return this instanceof h;
        };
        a.prototype.isConstantType = function() {
          return this instanceof y;
        };
        a.prototype.isSubtypeOf = function(a) {
          return this === a || this.equals(a) ? !0 : this.merge(a) === this;
        };
        a.prototype.asTraitsType = function() {
          c(this.isTraitsType());
          return this;
        };
        a.prototype.asMethodType = function() {
          c(this.isMethodType());
          return this;
        };
        a.prototype.asMultinameType = function() {
          c(this.isMultinameType());
          return this;
        };
        a.prototype.asConstantType = function() {
          c(this.isConstantType());
          return this;
        };
        a.prototype.getConstantValue = function() {
          c(this.isConstantType());
          return this.value;
        };
        a.prototype.asParameterizedType = function() {
          c(this.isParameterizedType());
          return this;
        };
        a._cache = {byQN:b.ObjectUtilities.createEmptyObject(), byHash:b.ObjectUtilities.createEmptyObject()};
        a._typesInitialized = !1;
        return a;
      }();
      g.Type = l;
      var u = function(a) {
        function b(c, h) {
          a.call(this);
          this.name = c;
          this.symbol = h;
        }
        __extends(b, a);
        b.prototype.toString = function() {
          return this.symbol;
        };
        b.prototype.instanceType = function() {
          return l.Any;
        };
        return b;
      }(l);
      g.AtomType = u;
      var w = function(h) {
        function d(a, b) {
          h.call(this);
          this.info = a;
          this.domain = b;
        }
        __extends(d, h);
        d.prototype.instanceType = function() {
          c(this.info instanceof t);
          var a = this.info;
          return this._cachedType || (this._cachedType = l.from(a.instanceInfo, this.domain));
        };
        d.prototype.classType = function() {
          c(this.info instanceof m);
          var a = this.info;
          return this._cachedType || (this._cachedType = l.from(a.classInfo, this.domain));
        };
        d.prototype.super = function() {
          if (this.info instanceof t) {
            return l.Class;
          }
          c(this.info instanceof m);
          var a = this.info;
          return a.superName ? (a = l.fromName(a.superName, this.domain).instanceType(), c(a instanceof d && a.info instanceof m), a) : null;
        };
        d.prototype.findTraitByName = function(a, b, h) {
          var d = !h, e;
          if (f.isQName(b)) {
            for (b = f.getQualifiedName(b), n = 0;n < a.length;n++) {
              if (e = a[n], f.getQualifiedName(e.name) === b && !(h && e.isGetter() || d && e.isSetter())) {
                return e;
              }
            }
          } else {
            c(b instanceof f);
            for (var l, n = 0;n < b.namespaces.length;n++) {
              if (d = b.getQName(n), b.namespaces[n].isDynamic()) {
                l = d;
              } else {
                if (e = this.findTraitByName(a, d, h)) {
                  return e;
                }
              }
            }
            if (l) {
              return this.findTraitByName(a, l, h);
            }
          }
        };
        d.prototype.getTrait = function(a, b, c) {
          if (a.isMultinameType()) {
            return null;
          }
          var h = a.getConstantValue();
          if (h.isAttribute()) {
            return null;
          }
          if (c && (this.isInstanceInfo() || this.isClassInfo())) {
            c = this;
            do {
              (h = c.getTrait(a, b, !1)) || (c = c.super());
            } while (!h && c);
            return h;
          }
          return this.findTraitByName(this.info.traits, h, b);
        };
        d.prototype.getTraitAt = function(a) {
          for (var c = this.info.traits, h = c.length - 1;0 <= h;h--) {
            if (c[h].slotId === a) {
              return c[h];
            }
          }
          b.Debug.unexpected("Cannot find trait with slotId: " + a + " in " + c);
        };
        d.prototype.equals = function(a) {
          return a.isTraitsType() ? this.info.traits === a.info.traits : !1;
        };
        d.prototype.merge = function(a) {
          if (a.isTraitsType()) {
            if (this.equals(a)) {
              return this;
            }
            if (this.isNumeric() && a.isNumeric()) {
              return l.Number;
            }
            if (this.isInstanceInfo() && a.isInstanceInfo()) {
              for (var b = [], c = this;c;c = c.super()) {
                b.push(c);
              }
              for (c = a;c;c = c.super()) {
                for (a = 0;a < b.length;a++) {
                  if (b[a].equals(c)) {
                    return c;
                  }
                }
              }
              return l.Object;
            }
          }
          return l.Any;
        };
        d.prototype.isScriptInfo = function() {
          return this.info instanceof s;
        };
        d.prototype.isClassInfo = function() {
          return this.info instanceof t;
        };
        d.prototype.isMethodInfo = function() {
          return this.info instanceof a;
        };
        d.prototype.isInstanceInfo = function() {
          return this.info instanceof m;
        };
        d.prototype.isInstanceOrClassInfo = function() {
          return this.isInstanceInfo() || this.isClassInfo();
        };
        d.prototype.applyType = function(a) {
          return new x(this, a);
        };
        d.prototype._getInfoName = function() {
          if (this.info instanceof s) {
            return "SI";
          }
          if (this.info instanceof t) {
            return "CI:" + this.info.instanceInfo.name.name;
          }
          if (this.info instanceof m) {
            return "II:" + this.info.name.name;
          }
          if (this.info instanceof a) {
            return "MI";
          }
          c(!1);
        };
        d.prototype.toString = function() {
          switch(this) {
            case l.Int:
              return "I";
            case l.Uint:
              return "U";
            case l.Array:
              return "A";
            case l.Object:
              return "O";
            case l.String:
              return "S";
            case l.Number:
              return "N";
            case l.Boolean:
              return "B";
            case l.Function:
              return "F";
          }
          return this._getInfoName();
        };
        return d;
      }(l);
      g.TraitsType = w;
      var r = function(a) {
        function b(c, h) {
          a.call(this, l.Function.info, h);
          this.methodInfo = c;
        }
        __extends(b, a);
        b.prototype.toString = function() {
          return "MT " + this.methodInfo;
        };
        b.prototype.returnType = function() {
          return this._cachedType || (this._cachedType = l.fromName(this.methodInfo.returnType, this.domain));
        };
        return b;
      }(w);
      g.MethodType = r;
      var h = function(a) {
        function b(c, h, d) {
          a.call(this);
          this.namespaces = c;
          this.name = h;
          this.flags = d;
        }
        __extends(b, a);
        b.prototype.toString = function() {
          return "MN";
        };
        return b;
      }(l);
      g.MultinameType = h;
      var x = function(a) {
        function b(c, h) {
          a.call(this, c.info, c.domain);
          this.type = c;
          this.parameter = h;
        }
        __extends(b, a);
        return b;
      }(w);
      g.ParameterizedType = x;
      var y = function(a) {
        function b(c) {
          a.call(this);
          this.value = c;
        }
        __extends(b, a);
        b.prototype.toString = function() {
          return String(this.value);
        };
        b.from = function(a) {
          return new b(a);
        };
        b.fromArray = function(a) {
          return a.map(function(a) {
            return new b(a);
          });
        };
        return b;
      }(l);
      g.ConstantType = y;
      var G = function() {
        function a() {
          this.id = a.id += 1;
          this.stack = [];
          this.scope = [];
          this.local = [];
        }
        a.prototype.clone = function() {
          var b = new a;
          b.originalId = this.id;
          b.stack = this.stack.slice(0);
          b.scope = this.scope.slice(0);
          b.local = this.local.slice(0);
          return b;
        };
        a.prototype.trace = function(a) {
          a.writeLn(this.toString());
        };
        a.prototype.toString = function() {
          return "<" + this.id + (this.originalId ? ":" + this.originalId : "") + ", L[" + this.local.join(", ") + "], S[" + this.stack.join(", ") + "], $[" + this.scope.join(", ") + "]>";
        };
        a.prototype.equals = function(b) {
          return a._arrayEquals(this.stack, b.stack) && a._arrayEquals(this.scope, b.scope) && a._arrayEquals(this.local, b.local);
        };
        a._arrayEquals = function(a, b) {
          if (a.length != b.length) {
            return!1;
          }
          for (var c = a.length - 1;0 <= c;c--) {
            if (!a[c].equals(b[c])) {
              return!1;
            }
          }
          return!0;
        };
        a.prototype.isSubset = function(b) {
          return a._arraySubset(this.stack, b.stack) && a._arraySubset(this.scope, b.scope) && a._arraySubset(this.local, b.local);
        };
        a._arraySubset = function(a, b) {
          if (a.length != b.length) {
            return!1;
          }
          for (var c = a.length - 1;0 <= c;c--) {
            if (a[c] !== b[c] && !a[c].equals(b[c]) && a[c].merge(b[c]) !== a[c]) {
              return!1;
            }
          }
          return!0;
        };
        a.prototype.merge = function(b) {
          a._mergeArrays(this.local, b.local);
          a._mergeArrays(this.stack, b.stack);
          a._mergeArrays(this.scope, b.scope);
        };
        a._mergeArrays = function(a, b) {
          c(a.length === b.length, "a: " + a + " b: " + b);
          for (var h = a.length - 1;0 <= h;h--) {
            c(void 0 !== a[h] && void 0 !== b[h]), a[h] !== b[h] && (a[h] = a[h].merge(b[h]));
          }
        };
        a.id = 0;
        return a;
      }();
      g.State = G;
      var I = function() {
        function a(c, h, d) {
          this.methodInfo = c;
          this.domain = h;
          this.savedScope = d;
          this.writer = new b.IndentingWriter;
          this.pushAnyCount = this.pushCount = 0;
          l.initializeTypes(h);
          this.writer = b.AVM2.Verifier.traceLevel.value ? new b.IndentingWriter : null;
          this.multinames = c.abc.constantPool.multinames;
          this.returnType = l.Undefined;
        }
        a.prototype.verify = function() {
          var a = this.methodInfo;
          this.writer && this.methodInfo.trace(this.writer);
          c(a.localCount >= a.parameters.length + 1);
          this._verifyBlocks(this._prepareEntryState());
        };
        a.prototype._prepareEntryState = function() {
          var a = new G, b = this.methodInfo;
          this.thisType = b.holder ? l.from(b.holder, this.domain) : l.Any;
          a.local.push(this.thisType);
          for (var h = b.parameters, d = 0;d < h.length;d++) {
            a.local.push(l.fromName(h[d].type, this.domain).instanceType());
          }
          h = b.localCount - b.parameters.length - 1;
          if (b.needsRest() || b.needsArguments()) {
            a.local.push(l.Array), h -= 1;
          }
          for (d = 0;d < h;d++) {
            a.local.push(l.Undefined);
          }
          c(a.local.length === b.localCount);
          return a;
        };
        a.prototype._verifyBlocks = function(a) {
          var c = this.writer, h = this.methodInfo.analysis.blocks;
          h.forEach(function(a) {
            a.verifierEntryState = a.verifierExitState = null;
          });
          for (var d = 0;d < h.length;d++) {
            h[d].bdo = d;
          }
          var e = new b.SortedList(function(a, b) {
            return a.bdo - b.bdo;
          });
          h[0].verifierEntryState = a;
          for (e.push(h[0]);!e.isEmpty();) {
            var l = e.pop(), n = l.verifierExitState = l.verifierEntryState.clone();
            this._verifyBlock(l, n);
            l.succs.forEach(function(a) {
              e.contains(a) ? (c && c.writeLn("Forward Merged Block: " + a.bid + " " + n.toString() + " with " + a.verifierEntryState.toString()), a.verifierEntryState.merge(n), c && c.writeLn("Merged State: " + a.verifierEntryState)) : a.verifierEntryState ? a.verifierEntryState.isSubset(n) || (c && c.writeLn("Backward Merged Block: " + l.bid + " with " + a.bid + " " + n.toString() + " with " + a.verifierEntryState.toString()), a.verifierEntryState.merge(n), e.push(a), c && c.writeLn("Merged State: " + 
              a.verifierEntryState)) : (a.verifierEntryState = n.clone(), e.push(a), c && c.writeLn("Added Block: " + a.bid + " to worklist: " + a.verifierEntryState.toString()));
            });
          }
          c && (c.writeLn("Inferred return type: " + this.returnType), c.writeLn("Quality pushCount: " + this.pushCount + ", pushAnyCount: " + this.pushAnyCount));
          this.methodInfo.inferredReturnType = this.returnType;
        };
        a.prototype._verifyBlock = function(a, d) {
          function x() {
            return X.ti || (X.ti = new q);
          }
          function g(a) {
            c(a);
            x().type = a;
            Z.push(a);
            U.pushCount++;
            a === l.Any && U.pushAnyCount++;
          }
          function m(a) {
            return Z.pop();
          }
          function u() {
            n(String(X));
          }
          function s() {
            var a = U.multinames[X.index];
            if (a.isRuntime()) {
              var b;
              b = a.isRuntimeName() ? m() : y.from(a.name);
              var c;
              c = a.isRuntimeNamespace() ? [m()] : y.fromArray(a.namespaces);
              return new h(c, b, a.flags);
            }
            return y.from(a);
          }
          function G(a) {
            return a.isMultinameType() && a.asMultinameType().name.isNumeric() || a.isConstantType() && f.isNumeric(a.getConstantValue()) ? !0 : !1;
          }
          function t(a, b) {
            if (a.isTraitsType() || a.isParameterizedType()) {
              var c = a.getTrait(b, !1, !0);
              if (c) {
                S && S.debugLn("getProperty(" + b + ") -> " + c);
                x().trait = c;
                if (c.isSlot() || c.isConst()) {
                  return l.fromName(c.typeName, U.domain).instanceType();
                }
                if (c.isGetter()) {
                  return l.fromName(c.methodInfo.returnType, U.domain).instanceType();
                }
                if (c.isClass()) {
                  return l.from(c.classInfo, U.domain);
                }
                if (c.isMethod()) {
                  return new r(c.methodInfo, U.domain);
                }
              } else {
                if (G(b) && a.isParameterizedType()) {
                  return c = a.asParameterizedType().parameter, S && S.debugLn("getProperty(" + b + ") -> " + c), c;
                }
                a !== l.Array && S && S.warnLn("getProperty(" + b + ")");
              }
            }
            return l.Any;
          }
          function I(a, b, c) {
            if (a.isTraitsType() || a.isParameterizedType()) {
              (c = a.getTrait(b, !0, !0)) ? (S && S.debugLn("setProperty(" + b + ") -> " + c), x().trait = c) : G(b) && a.isParameterizedType() || a !== l.Array && S && S.warnLn("setProperty(" + b + ")");
            }
          }
          function C(a, b) {
            if (a.isMultinameType()) {
              return l.Any;
            }
            for (var c = U.savedScope, h = v.length - 1;h >= -c.length;h--) {
              var d = 0 <= h ? v[h] : c[c.length + h];
              if (d.isTraitsType()) {
                if (d.getTrait(a, !1, !0)) {
                  x().scopeDepth = v.length - h - 1;
                  if (d.isClassInfo() || d.isScriptInfo()) {
                    x().object = k.Runtime.LazyInitializer.create(d.info);
                  }
                  S && S.debugLn("findProperty(" + a + ") -> " + d);
                  return d;
                }
              } else {
                return S && S.warnLn("findProperty(" + a + ")"), l.Any;
              }
            }
            if (c = U.domain.findDefiningScript(a.getConstantValue(), !1)) {
              return x().object = k.Runtime.LazyInitializer.create(c.script), d = l.from(c.script, U.domain), S && S.debugLn("findProperty(" + a + ") -> " + d), d;
            }
            if (a.isConstantType() && "unsafeJSNative" === a.getConstantValue().name) {
              return l.Any;
            }
            S && S.warnLn("findProperty(" + a + ")");
            return l.Any;
          }
          function E(a) {
            if (a instanceof w && (a = a.getTraitAt(X.index), S && S.debugLn("accessSlot() -> " + a), a)) {
              x().trait = a;
              if (a.isSlot()) {
                return l.fromName(a.typeName, U.domain).instanceType();
              }
              if (a.isClass()) {
                return l.from(a.classInfo, U.domain);
              }
            }
            return l.Any;
          }
          function Q(a) {
            if (a.isTraitsType() || a.isParameterizedType()) {
              return a === l.Function || a === l.Class || a === l.Object ? l.Object : a.instanceType();
            }
            S && S.warnLn("construct(" + a + ")");
            return l.Any;
          }
          for (var U = this, S = this.writer, aa = this.methodInfo, $ = aa.analysis.bytecodes, ea = d.local, Z = d.stack, v = d.scope, X, ba = this.savedScope[0], R, H, Y, ga = a.position, ca = a.end.position;ga <= ca;ga++) {
            if (X = $[ga], R = X.op, 240 !== R && 241 !== R) {
              switch(S && 1 < b.AVM2.Verifier.traceLevel.value && S.writeLn(("stateBefore: " + d.toString() + " $$[" + this.savedScope.join(", ") + "]").padRight(" ", 100) + " : " + ga + ", " + X.toString(aa.abc)), R) {
                case 1:
                  break;
                case 3:
                  m();
                  break;
                case 4:
                  Y = s();
                  H = m();
                  c(H.super());
                  x().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  g(t(H.super(), Y));
                  break;
                case 5:
                  R = m();
                  Y = s();
                  H = m();
                  c(H.super());
                  x().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  I(H.super(), Y, R);
                  break;
                case 6:
                  u();
                  break;
                case 7:
                  u();
                  break;
                case 8:
                  d.local[X.index] = l.Undefined;
                  break;
                case 10:
                  u();
                  break;
                case 11:
                  u();
                  break;
                case 12:
                ;
                case 24:
                ;
                case 13:
                ;
                case 23:
                ;
                case 14:
                ;
                case 22:
                ;
                case 15:
                ;
                case 21:
                ;
                case 19:
                ;
                case 20:
                ;
                case 25:
                ;
                case 26:
                  m();
                  m();
                  break;
                case 16:
                  break;
                case 17:
                ;
                case 18:
                  m();
                  break;
                case 27:
                  m(l.Int);
                  break;
                case 29:
                  v.pop();
                  break;
                case 30:
                ;
                case 35:
                  m(l.Int);
                  m();
                  g(l.Any);
                  break;
                case 31:
                  g(l.Boolean);
                  break;
                case 50:
                  g(l.Boolean);
                  break;
                case 32:
                  g(l.Null);
                  break;
                case 33:
                  g(l.Undefined);
                  break;
                case 34:
                  u();
                  break;
                case 36:
                  g(l.Int);
                  break;
                case 37:
                  g(l.Int);
                  break;
                case 44:
                  g(l.String);
                  break;
                case 45:
                  g(l.Int);
                  break;
                case 46:
                  g(l.Uint);
                  break;
                case 47:
                  g(l.Number);
                  break;
                case 38:
                  g(l.Boolean);
                  break;
                case 39:
                  g(l.Boolean);
                  break;
                case 40:
                  g(l.Number);
                  break;
                case 41:
                  m();
                  break;
                case 42:
                  R = m();
                  g(R);
                  g(R);
                  break;
                case 43:
                  H = m();
                  Y = m();
                  g(H);
                  g(Y);
                  break;
                case 28:
                  m();
                  v.push(l.Any);
                  break;
                case 48:
                  v.push(m());
                  break;
                case 49:
                  u();
                  break;
                case 53:
                ;
                case 54:
                ;
                case 55:
                  g(l.Int);
                  break;
                case 56:
                ;
                case 57:
                  g(l.Number);
                  break;
                case 58:
                ;
                case 59:
                ;
                case 60:
                  m(l.Int);
                  break;
                case 61:
                ;
                case 62:
                  m(l.Number);
                  break;
                case 64:
                  g(l.Function);
                  break;
                case 65:
                  p(Z, X.argCount);
                  H = m();
                  m();
                  g(l.Any);
                  break;
                case 67:
                  throw new e("callmethod");;
                case 68:
                  u();
                  break;
                case 69:
                ;
                case 78:
                ;
                case 79:
                ;
                case 70:
                ;
                case 76:
                  p(Z, X.argCount);
                  Y = s();
                  H = m();
                  if (69 === R || 78 === R) {
                    H = this.thisType.super(), x().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  }
                  H = t(H, Y);
                  if (79 === R || 78 === R) {
                    break;
                  }
                  H = H.isMethodType() ? H.asMethodType().returnType().instanceType() : H.isTraitsType() && H.isClassInfo() ? H.instanceType() : l.Any;
                  g(H);
                  break;
                case 71:
                  this.returnType.merge(l.Undefined);
                  break;
                case 72:
                  H = m();
                  aa.returnType && (Y = l.fromName(aa.returnType, this.domain).instanceType(), Y.isSubtypeOf(H) && (x().noCoercionNeeded = !0));
                  break;
                case 73:
                  p(Z, X.argCount);
                  Z.pop();
                  this.thisType.isInstanceInfo() && this.thisType.super() === l.Object ? x().noCallSuperNeeded = !0 : x().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  break;
                case 66:
                  p(Z, X.argCount);
                  g(Q(m()));
                  break;
                case 74:
                  p(Z, X.argCount);
                  Y = s();
                  g(Q(t(Z.pop(), Y)));
                  break;
                case 75:
                  u();
                  break;
                case 77:
                  u();
                  break;
                case 80:
                ;
                case 81:
                ;
                case 82:
                  break;
                case 83:
                  c(1 === X.argCount);
                  R = m();
                  H = m();
                  H === l.Any ? g(l.Any) : g(H.applyType(R));
                  break;
                case 84:
                  u();
                  break;
                case 85:
                  p(Z, 2 * X.argCount);
                  g(l.Object);
                  break;
                case 86:
                  p(Z, X.argCount);
                  g(l.Array);
                  break;
                case 87:
                  g(l.from(this.methodInfo, this.domain));
                  break;
                case 88:
                  g(l.Any);
                  break;
                case 89:
                  s();
                  m();
                  g(l.XMLList);
                  break;
                case 90:
                  g(l.Any);
                  break;
                case 93:
                  g(C(s(), !0));
                  break;
                case 94:
                  g(C(s(), !1));
                  break;
                case 95:
                  u();
                  break;
                case 96:
                  Y = s();
                  g(t(C(Y, !0), Y));
                  break;
                case 104:
                ;
                case 97:
                  R = m();
                  Y = s();
                  H = m();
                  I(H, Y, R);
                  break;
                case 98:
                  g(ea[X.index]);
                  break;
                case 99:
                  ea[X.index] = m();
                  break;
                case 100:
                  g(ba);
                  x().object = k.Runtime.LazyInitializer.create(ba.asTraitsType().info);
                  break;
                case 101:
                  g(v[X.index]);
                  break;
                case 102:
                  Y = s();
                  H = m();
                  g(t(H, Y));
                  break;
                case 103:
                  u();
                  break;
                case 105:
                  u();
                  break;
                case 106:
                  s();
                  m();
                  g(l.Boolean);
                  break;
                case 107:
                  u();
                  break;
                case 108:
                  g(E(m()));
                  break;
                case 109:
                  R = m();
                  H = m();
                  E(H);
                  break;
                case 110:
                  u();
                  break;
                case 111:
                  u();
                  break;
                case 112:
                  m();
                  g(l.String);
                  break;
                case 113:
                  m();
                  g(l.String);
                  break;
                case 114:
                  m();
                  g(l.String);
                  break;
                case 131:
                ;
                case 115:
                  m();
                  g(l.Int);
                  break;
                case 136:
                ;
                case 116:
                  m();
                  g(l.Uint);
                  break;
                case 132:
                ;
                case 117:
                  m();
                  g(l.Number);
                  break;
                case 129:
                ;
                case 118:
                  m();
                  g(l.Boolean);
                  break;
                case 119:
                  u();
                  break;
                case 120:
                  break;
                case 121:
                  m();
                  g(l.Number);
                  break;
                case 122:
                  u();
                  break;
                case 123:
                  u();
                  break;
                case 128:
                  H = m();
                  Y = l.fromName(this.multinames[X.index], this.domain).instanceType();
                  Y.isSubtypeOf(H) && (x().noCoercionNeeded = !0);
                  g(Y);
                  break;
                case 130:
                  break;
                case 133:
                  m();
                  g(l.String);
                  break;
                case 134:
                  H = m();
                  Y = l.fromName(this.multinames[X.index], this.domain).instanceType();
                  Y.isSubtypeOf(H) && (x().noCoercionNeeded = !0);
                  g(Y);
                  break;
                case 135:
                  H = m();
                  m();
                  H.isTraitsType() ? g(H.instanceType()) : g(l.Any);
                  break;
                case 137:
                  u();
                  break;
                case 144:
                ;
                case 145:
                ;
                case 147:
                  m();
                  g(l.Number);
                  break;
                case 146:
                ;
                case 148:
                  ea[X.index] = l.Number;
                  break;
                case 149:
                  m();
                  g(l.String);
                  break;
                case 150:
                  m();
                  g(l.Boolean);
                  break;
                case 160:
                  Y = m();
                  H = m();
                  H.isNumeric() && Y.isNumeric() ? g(l.Number) : H === l.String || Y === l.String ? g(l.String) : g(l.Any);
                  break;
                case 161:
                ;
                case 162:
                ;
                case 163:
                ;
                case 164:
                  m();
                  m();
                  g(l.Number);
                  break;
                case 168:
                ;
                case 169:
                ;
                case 170:
                ;
                case 165:
                ;
                case 166:
                ;
                case 167:
                  m();
                  m();
                  g(l.Int);
                  break;
                case 151:
                  m();
                  g(l.Int);
                  break;
                case 171:
                ;
                case 172:
                ;
                case 173:
                ;
                case 174:
                ;
                case 175:
                ;
                case 176:
                ;
                case 177:
                ;
                case 180:
                  m();
                  m();
                  g(l.Boolean);
                  break;
                case 178:
                  m();
                  g(l.Boolean);
                  break;
                case 179:
                  m();
                  m();
                  g(l.Boolean);
                  break;
                case 194:
                ;
                case 195:
                  ea[X.index] = l.Int;
                  break;
                case 193:
                ;
                case 192:
                ;
                case 196:
                  m();
                  g(l.Int);
                  break;
                case 197:
                ;
                case 198:
                ;
                case 199:
                  m();
                  m();
                  g(l.Int);
                  break;
                case 208:
                ;
                case 209:
                ;
                case 210:
                ;
                case 211:
                  g(ea[R - 208]);
                  break;
                case 212:
                ;
                case 213:
                ;
                case 214:
                ;
                case 215:
                  ea[R - 212] = m();
                  break;
                case 239:
                  break;
                case 242:
                  break;
                case 243:
                  break;
                default:
                  console.info("Not Implemented: " + X);
              }
            }
          }
        };
        return a;
      }(), C = function() {
        function a() {
        }
        a.prototype._prepareScopeObjects = function(a, h) {
          var e = a.abc.applicationDomain;
          return h.getScopeObjects().map(function(a) {
            if (a instanceof d) {
              return l.from(a, e);
            }
            if (a instanceof b.AVM2.Runtime.Global) {
              return l.from(a.scriptInfo, e);
            }
            if (a instanceof b.AVM2.AS.ASClass) {
              return l.from(a.classInfo, e);
            }
            if (a instanceof b.AVM2.Runtime.ActivationInfo) {
              return l.from(a.methodInfo, e);
            }
            if (a.class) {
              return l.from(a.class.classInfo.instanceInfo, e);
            }
            c(!1, a.toString());
            return l.Any;
          });
        };
        a.prototype.verifyMethod = function(a, b) {
          var c = this._prepareScopeObjects(a, b);
          (new I(a, a.abc.applicationDomain, c)).verify();
        };
        return a;
      }();
      g.Verifier = C;
    })(k.Verifier || (k.Verifier = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        function g(a, b) {
          for (var c = 0;c < a.length;c++) {
            b(a[c]);
          }
        }
        function k(c) {
          var e, f = b.StringUtilities;
          if (c instanceof h) {
            return c.value instanceof d ? c.value.name : c.value;
          }
          if (c instanceof w) {
            return c.name;
          }
          if (c instanceof u) {
            return e = f.concat3("|", c.id, "|"), e;
          }
          if (c instanceof p) {
            return e = f.concat3("{", c.id, "}"), e;
          }
          if (c instanceof r) {
            return 3 === c.type ? (e = f.concat5("[", c.id, "->", c.argument.id, "]"), e) : (e = f.concat3("(", c.id, ")"), e);
          }
          if (c instanceof l) {
            return e = f.concat3("(", c.id, ")"), e;
          }
          if (c instanceof n) {
            return c.id;
          }
          a(c + " " + typeof c);
        }
        var m = b.Debug.assert, d = b.AVM2.ABC.Multiname, a = b.Debug.unexpected, c = b.ObjectUtilities.createEmptyObject;
        (function(a) {
          a[a.NumericProperty = 1] = "NumericProperty";
          a[a.RESOLVED = 2] = "RESOLVED";
          a[a.PRISTINE = 4] = "PRISTINE";
          a[a.IS_METHOD = 8] = "IS_METHOD";
          a[a.AS_CALL = 16] = "AS_CALL";
        })(f.Flags || (f.Flags = {}));
        var n = function() {
          function a() {
            this.id = a.getNextID();
          }
          a.getNextID = function() {
            return a._nextID[a._nextID.length - 1] += 1;
          };
          a.prototype.visitInputs = function(a) {
          };
          a.startNumbering = function() {
            a._nextID.push(0);
          };
          a.stopNumbering = function() {
            a._nextID.pop();
          };
          a.prototype.toString = function(a) {
            if (a) {
              return k(this);
            }
            var b = [];
            this.visitInputs(function(a) {
              b.push(k(a));
            });
            a = k(this) + " = " + this.nodeName.toUpperCase();
            b.length && (a += " " + b.join(", "));
            return a;
          };
          a.prototype.visitInputsNoConstants = function(a) {
            this.visitInputs(function(b) {
              f.isConstant(b) || a(b);
            });
          };
          a.prototype.replaceInput = function(b, c) {
            var h = 0, d;
            for (d in this) {
              var e = this[d];
              e instanceof a && e === b && (this[d] = c, h++);
              e instanceof Array && (h += e.replace(b, c));
            }
            return h;
          };
          a._nextID = [];
          return a;
        }();
        f.Node = n;
        n.prototype.nodeName = "Node";
        var p = function(a) {
          function b() {
            a.call(this);
          }
          __extends(b, a);
          return b;
        }(n);
        f.Control = p;
        p.prototype.nodeName = "Control";
        var e = function(a) {
          function b(c) {
            a.call(this);
            this.predecessors = c ? [c] : [];
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            g(this.predecessors, a);
          };
          return b;
        }(p);
        f.Region = e;
        e.prototype.nodeName = "Region";
        e = function(a) {
          function b() {
            a.call(this, null);
            this.control = this;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            g(this.predecessors, a);
            a(this.scope);
          };
          return b;
        }(e);
        f.Start = e;
        e.prototype.nodeName = "Start";
        e = function(a) {
          function b(c) {
            a.call(this);
            this.control = c;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
          };
          return b;
        }(p);
        f.End = e;
        e.prototype.nodeName = "End";
        var q = function(a) {
          function b(c, h, d) {
            a.call(this, c);
            this.store = h;
            this.argument = d;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
            a(this.store);
            a(this.argument);
          };
          return b;
        }(e);
        f.Stop = q;
        q.prototype.nodeName = "Stop";
        q = function(a) {
          function b(c, h) {
            a.call(this, c);
            this.predicate = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
            a(this.predicate);
          };
          return b;
        }(e);
        f.If = q;
        q.prototype.nodeName = "If";
        q = function(a) {
          function b(c, h) {
            a.call(this, c);
            this.determinant = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
            a(this.determinant);
          };
          return b;
        }(e);
        f.Switch = q;
        q.prototype.nodeName = "Switch";
        e = function(a) {
          function b(c) {
            a.call(this, c);
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
          };
          return b;
        }(e);
        f.Jump = e;
        e.prototype.nodeName = "Jump";
        var l = function(a) {
          function b() {
            a.call(this);
          }
          __extends(b, a);
          return b;
        }(n);
        f.Value = l;
        l.prototype.nodeName = "Value";
        e = function(a) {
          function b() {
            a.call(this);
          }
          __extends(b, a);
          return b;
        }(l);
        f.Store = e;
        e.prototype.nodeName = "Store";
        e = function(a) {
          function b(c, h) {
            a.call(this);
            this.control = c;
            this.store = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            this.store && a(this.store);
            this.loads && g(this.loads, a);
          };
          return b;
        }(l);
        f.StoreDependent = e;
        e.prototype.nodeName = "StoreDependent";
        q = function(a) {
          function b(c, h, d, e, l, n) {
            a.call(this, c, h);
            this.callee = d;
            this.object = e;
            this.args = l;
            this.flags = n;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            this.store && a(this.store);
            this.loads && g(this.loads, a);
            a(this.callee);
            this.object && a(this.object);
            g(this.args, a);
          };
          return b;
        }(e);
        f.Call = q;
        q.prototype.nodeName = "Call";
        q = function(a) {
          function b(c, h, d, e) {
            a.call(this, c, h);
            this.callee = d;
            this.args = e;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            this.store && a(this.store);
            this.loads && g(this.loads, a);
            a(this.callee);
            g(this.args, a);
          };
          return b;
        }(e);
        f.New = q;
        q.prototype.nodeName = "New";
        q = function(a) {
          function b(c, h, d, e) {
            a.call(this, c, h);
            this.object = d;
            this.name = e;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            this.store && a(this.store);
            this.loads && g(this.loads, a);
            a(this.object);
            a(this.name);
          };
          return b;
        }(e);
        f.GetProperty = q;
        q.prototype.nodeName = "GetProperty";
        q = function(a) {
          function b(c, h, d, e, l) {
            a.call(this, c, h);
            this.object = d;
            this.name = e;
            this.value = l;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            this.store && a(this.store);
            this.loads && g(this.loads, a);
            a(this.object);
            a(this.name);
            a(this.value);
          };
          return b;
        }(e);
        f.SetProperty = q;
        q.prototype.nodeName = "SetProperty";
        q = function(a) {
          function b(c, h, d, e) {
            a.call(this, c, h);
            this.object = d;
            this.name = e;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            this.store && a(this.store);
            this.loads && g(this.loads, a);
            a(this.object);
            a(this.name);
          };
          return b;
        }(e);
        f.DeleteProperty = q;
        q.prototype.nodeName = "DeleteProperty";
        e = function(a) {
          function b(c, h, d, e, l, n) {
            a.call(this, c, h);
            this.object = d;
            this.name = e;
            this.args = l;
            this.flags = n;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            this.store && a(this.store);
            this.loads && g(this.loads, a);
            a(this.object);
            a(this.name);
            g(this.args, a);
          };
          return b;
        }(e);
        f.CallProperty = e;
        e.prototype.nodeName = "CallProperty";
        var u = function(a) {
          function b(c, h) {
            a.call(this);
            this.control = this.control = c;
            this.args = h ? [h] : [];
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            g(this.args, a);
          };
          b.prototype.seal = function() {
            this.sealed = !0;
          };
          b.prototype.pushValue = function(a) {
            m(!this.sealed);
            this.args.push(a);
          };
          return b;
        }(l);
        f.Phi = u;
        u.prototype.nodeName = "Phi";
        var w = function(a) {
          function b(c) {
            a.call(this);
            this.name = c;
          }
          __extends(b, a);
          return b;
        }(l);
        f.Variable = w;
        w.prototype.nodeName = "Variable";
        e = function(a) {
          function b(c) {
            a.call(this);
            this.argument = c;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.argument);
          };
          return b;
        }(l);
        f.Copy = e;
        e.prototype.nodeName = "Copy";
        e = function(a) {
          function b(c, h) {
            a.call(this);
            this.to = c;
            this.from = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.to);
            a(this.from);
          };
          return b;
        }(l);
        f.Move = e;
        e.prototype.nodeName = "Move";
        (function(a) {
          a[a.CASE = 0] = "CASE";
          a[a.TRUE = 1] = "TRUE";
          a[a.FALSE = 2] = "FALSE";
          a[a.STORE = 3] = "STORE";
          a[a.SCOPE = 4] = "SCOPE";
        })(f.ProjectionType || (f.ProjectionType = {}));
        var r = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.argument = c;
            this.type = h;
            this.selector = d;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.argument);
          };
          b.prototype.project = function() {
            return this.argument;
          };
          return b;
        }(l);
        f.Projection = r;
        r.prototype.nodeName = "Projection";
        e = function(a) {
          function b(c, h, d, e) {
            a.call(this);
            this.control = c;
            this.condition = h;
            this.left = d;
            this.right = e;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            a(this.condition);
            a(this.left);
            a(this.right);
          };
          return b;
        }(l);
        f.Latch = e;
        e.prototype.nodeName = "Latch";
        e = function() {
          function a(b, c, h) {
            this.name = b;
            this.evaluate = c;
            this.isBinary = h;
            a.byName[b] = this;
          }
          a.linkOpposites = function(a, b) {
            a.not = b;
            b.not = a;
          };
          a.fromName = function(b) {
            return a.byName[b];
          };
          a.byName = c();
          a.ADD = new a("+", function(a, b) {
            return a + b;
          }, !0);
          a.SUB = new a("-", function(a, b) {
            return a - b;
          }, !0);
          a.MUL = new a("*", function(a, b) {
            return a * b;
          }, !0);
          a.DIV = new a("/", function(a, b) {
            return a / b;
          }, !0);
          a.MOD = new a("%", function(a, b) {
            return a % b;
          }, !0);
          a.AND = new a("&", function(a, b) {
            return a & b;
          }, !0);
          a.OR = new a("|", function(a, b) {
            return a | b;
          }, !0);
          a.XOR = new a("^", function(a, b) {
            return a ^ b;
          }, !0);
          a.LSH = new a("<<", function(a, b) {
            return a << b;
          }, !0);
          a.RSH = new a(">>", function(a, b) {
            return a >> b;
          }, !0);
          a.URSH = new a(">>>", function(a, b) {
            return a >>> b;
          }, !0);
          a.SEQ = new a("===", function(a, b) {
            return a === b;
          }, !0);
          a.SNE = new a("!==", function(a, b) {
            return a !== b;
          }, !0);
          a.EQ = new a("==", function(a, b) {
            return a == b;
          }, !0);
          a.NE = new a("!=", function(a, b) {
            return a != b;
          }, !0);
          a.LE = new a("<=", function(a, b) {
            return a <= b;
          }, !0);
          a.GT = new a(">", function(a, b) {
            return a > b;
          }, !0);
          a.LT = new a("<", function(a, b) {
            return a < b;
          }, !0);
          a.GE = new a(">=", function(a, b) {
            return a >= b;
          }, !0);
          a.PLUS = new a("+", function(a) {
            return+a;
          }, !1);
          a.NEG = new a("-", function(a) {
            return-a;
          }, !1);
          a.TRUE = new a("!!", function(a) {
            return!!a;
          }, !1);
          a.FALSE = new a("!", function(a) {
            return!a;
          }, !1);
          a.TYPE_OF = new a("typeof", function(a) {
            return typeof a;
          }, !1);
          a.BITWISE_NOT = new a("~", function(a) {
            return~a;
          }, !1);
          a.AS_ADD = new a("+", function(a, b) {
            return "string" === typeof a || "string" === typeof b ? String(a) + String(b) : a + b;
          }, !0);
          return a;
        }();
        f.Operator = e;
        e.linkOpposites(e.SEQ, e.SNE);
        e.linkOpposites(e.EQ, e.NE);
        e.linkOpposites(e.TRUE, e.FALSE);
        e = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.operator = c;
            this.left = h;
            this.right = d;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.left);
            a(this.right);
          };
          return b;
        }(l);
        f.Binary = e;
        e.prototype.nodeName = "Binary";
        e = function(a) {
          function b(c, h) {
            a.call(this);
            this.operator = c;
            this.argument = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.argument);
          };
          return b;
        }(l);
        f.Unary = e;
        e.prototype.nodeName = "Unary";
        var h = function(a) {
          function b(c) {
            a.call(this);
            this.value = c;
          }
          __extends(b, a);
          return b;
        }(l);
        f.Constant = h;
        h.prototype.nodeName = "Constant";
        e = function(a) {
          function b(c) {
            a.call(this);
            this.name = c;
          }
          __extends(b, a);
          return b;
        }(l);
        f.GlobalProperty = e;
        e.prototype.nodeName = "GlobalProperty";
        e = function(a) {
          function b(c) {
            a.call(this);
            this.control = c;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
          };
          return b;
        }(l);
        f.This = e;
        e.prototype.nodeName = "This";
        e = function(a) {
          function b(c, h) {
            a.call(this);
            this.control = c;
            this.argument = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
            a(this.argument);
          };
          return b;
        }(l);
        f.Throw = e;
        e.prototype.nodeName = "Throw";
        e = function(a) {
          function b(c) {
            a.call(this);
            this.control = c;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
          };
          return b;
        }(l);
        f.Arguments = e;
        e.prototype.nodeName = "Arguments";
        e = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.control = c;
            this.index = h;
            this.name = d;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
          };
          return b;
        }(l);
        f.Parameter = e;
        e.prototype.nodeName = "Parameter";
        e = function(a) {
          function b(c, h) {
            a.call(this);
            this.control = c;
            this.elements = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
            g(this.elements, a);
          };
          return b;
        }(l);
        f.NewArray = e;
        e.prototype.nodeName = "NewArray";
        e = function(a) {
          function b(c, h) {
            a.call(this);
            this.control = c;
            this.properties = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.control);
            g(this.properties, a);
          };
          return b;
        }(l);
        f.NewObject = e;
        e.prototype.nodeName = "NewObject";
        e = function(a) {
          function b(c, h) {
            a.call(this);
            this.key = c;
            this.value = h;
          }
          __extends(b, a);
          b.prototype.visitInputs = function(a) {
            a(this.key);
            a(this.value);
          };
          return b;
        }(l);
        f.KeyValuePair = e;
        e.prototype.mustFloat = !0;
        e.prototype.nodeName = "KeyValuePair";
        f.nameOf = k;
      })(g.IR || (g.IR = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        function g(a) {
          return a.id;
        }
        function s(a) {
          return a instanceof f.Phi;
        }
        function m(a) {
          return a instanceof f.Constant && a.value instanceof u;
        }
        function d(a) {
          return s(a) || a instanceof f.Store || p(a, 3);
        }
        function a(a) {
          return a instanceof f.Constant;
        }
        function c(a) {
          return a instanceof f.Control;
        }
        function n(a) {
          return a instanceof f.Value;
        }
        function p(a, b) {
          return a instanceof f.Projection && (!b || a.type === b);
        }
        function e(a) {
          return a instanceof f.Projection ? a.project() : a;
        }
        var q = b.Debug.assert, l = b.Debug.unexpected, u = b.AVM2.ABC.Multiname, w = b.ArrayUtilities.top, r = b.IntegerUtilities.bitCount, h = b.ArrayUtilities.pushUnique, x = b.ArrayUtilities.unique;
        f.isNotPhi = function(a) {
          return!s(a);
        };
        f.isPhi = s;
        f.isScope = function(a) {
          return s(a) || a instanceof f.ASScope || p(a, 4);
        };
        f.isMultinameConstant = m;
        f.isMultiname = function(a) {
          return m(a) || a instanceof f.ASMultiname;
        };
        f.isStore = d;
        f.isConstant = a;
        f.isControlOrNull = function(a) {
          return c(a) || null === a;
        };
        f.isStoreOrNull = function(a) {
          return d(a) || null === a;
        };
        f.isControl = c;
        f.isValueOrNull = function(a) {
          return n(a) || null === a;
        };
        f.isValue = n;
        f.isProjection = p;
        f.Null = new f.Constant(null);
        f.Undefined = new f.Constant(void 0);
        f.True = new f.Constant(!0);
        f.False = new f.Constant(!1);
        var y = function() {
          function a(b, c, h) {
            this.id = b;
            this.nodes = [c, h];
            this.region = c;
            this.successors = [];
            this.predecessors = [];
          }
          a.prototype.pushSuccessorAt = function(a, b) {
            q(a);
            q(!this.successors[b]);
            this.successors[b] = a;
            a.pushPredecessor(this);
          };
          a.prototype.pushSuccessor = function(a, b) {
            q(a);
            this.successors.push(a);
            b && a.pushPredecessor(this);
          };
          a.prototype.pushPredecessor = function(a) {
            q(a);
            this.predecessors.push(a);
          };
          a.prototype.visitNodes = function(a) {
            for (var b = this.nodes, c = 0, h = b.length;c < h;c++) {
              a(b[c]);
            }
          };
          a.prototype.visitSuccessors = function(a) {
            for (var b = this.successors, c = 0, h = b.length;c < h;c++) {
              a(b[c]);
            }
          };
          a.prototype.visitPredecessors = function(a) {
            for (var b = this.predecessors, c = 0, h = b.length;c < h;c++) {
              a(b[c]);
            }
          };
          a.prototype.append = function(a) {
            q(2 <= this.nodes.length);
            q(n(a), a);
            q(!s(a));
            q(0 > this.nodes.indexOf(a));
            a.mustFloat || this.nodes.splice(this.nodes.length - 1, 0, a);
          };
          a.prototype.toString = function() {
            return "B" + this.id + (this.name ? " (" + this.name + ")" : "");
          };
          a.prototype.trace = function(a) {
            a.writeLn(this.toString());
          };
          return a;
        }();
        f.Block = y;
        var G = function() {
          function c(a) {
            this.exit = this.exit = a;
          }
          c.prototype.buildCFG = function() {
            return C.fromDFG(this);
          };
          c.preOrderDepthFirstSearch = function(a, b, c) {
            var h = [];
            a = [a];
            for (var d = a.push.bind(a), e;e = a.pop();) {
              1 !== h[e.id] && (h[e.id] = 1, c(e), a.push(e), b(e, d));
            }
          };
          c.postOrderDepthFirstSearch = function(a, b, c) {
            function h(a) {
              d[a.id] || e.push(a);
            }
            for (var d = [], e = [a];a = w(e);) {
              d[a.id] ? (1 === d[a.id] && (d[a.id] = 2, c(a)), e.pop()) : (d[a.id] = 1, b(a, h));
            }
          };
          c.prototype.forEachInPreOrderDepthFirstSearch = function(b) {
            function c(b) {
              a(b) || (q(b instanceof f.Node), d.push(b));
            }
            for (var h = Array(1024), d = [this.exit], e;e = d.pop();) {
              h[e.id] || (h[e.id] = 1, b && b(e), d.push(e), e.visitInputs(c));
            }
          };
          c.prototype.forEach = function(a, b) {
            (b ? c.postOrderDepthFirstSearch : c.preOrderDepthFirstSearch)(this.exit, function(a, b) {
              a.visitInputsNoConstants(b);
            }, a);
          };
          c.prototype.traceMetrics = function(a) {
            var h = new b.Metrics.Counter(!0);
            c.preOrderDepthFirstSearch(this.exit, function(a, b) {
              a.visitInputsNoConstants(b);
            }, function(a) {
              k.countTimeline(a.nodeName);
            });
            h.trace(a);
          };
          c.prototype.trace = function(a) {
            function b(a) {
              return a instanceof f.Control ? "yellow" : a instanceof f.Phi ? "purple" : a instanceof f.Value ? "green" : "white";
            }
            function c(a) {
              return a instanceof f.Projection ? a.project() : a;
            }
            function h(a) {
              a = c(a);
              e[a.id] || (e[a.id] = !0, a.block && l.push(a.block), d.push(a), a.visitInputsNoConstants(h));
            }
            var d = [], e = {}, l = [];
            h(this.exit);
            a.writeLn("");
            a.enter("digraph DFG {");
            a.writeLn("graph [bgcolor = gray10];");
            a.writeLn("edge [color = white];");
            a.writeLn("node [shape = box, fontname = Consolas, fontsize = 11, color = white, fontcolor = white];");
            a.writeLn("rankdir = BT;");
            l.forEach(function(b) {
              a.enter("subgraph cluster" + b.nodes[0].id + " { bgcolor = gray20;");
              b.visitNodes(function(b) {
                b = c(b);
                a.writeLn("N" + b.id + ";");
              });
              a.leave("}");
            });
            d.forEach(function(c) {
              a.writeLn("N" + c.id + ' [label = "' + c.toString() + '", color = "' + b(c) + '"];');
            });
            d.forEach(function(h) {
              h.visitInputsNoConstants(function(d) {
                d = c(d);
                a.writeLn("N" + h.id + " -> N" + d.id + " [color=" + b(d) + "];");
              });
            });
            a.leave("}");
            a.writeLn("");
          };
          return c;
        }();
        f.DFG = G;
        var I = function() {
          function a() {
            this.entries = [];
          }
          a.prototype.addUse = function(a, b) {
            var c = this.entries[a.id];
            c || (c = this.entries[a.id] = {def:a, uses:[]});
            h(c.uses, b);
          };
          a.prototype.trace = function(a) {
            a.enter("> Uses");
            this.entries.forEach(function(b) {
              a.writeLn(b.def.id + " -> [" + b.uses.map(g).join(", ") + "] " + b.def);
            });
            a.leave("<");
          };
          a.prototype.replace = function(a, b) {
            var c = this.entries[a.id];
            if (0 === c.uses.length) {
              return!1;
            }
            var h = 0;
            c.uses.forEach(function(c) {
              h += c.replaceInput(a, b);
            });
            q(h >= c.uses.length);
            c.uses = [];
            return!0;
          };
          a.prototype.updateUses = function(a, b, c, h) {
            c = c[a.id];
            if (0 === c.uses.length) {
              return!1;
            }
            var d = 0;
            c.uses.forEach(function(c) {
              d += c.replaceInput(a, b);
            });
            q(d >= c.uses.length);
            c.uses = [];
            return!0;
          };
          return a;
        }();
        f.Uses = I;
        var C = function() {
          function c() {
            this.nextBlockID = 0;
            this.blocks = [];
          }
          c.fromDFG = function(a) {
            function b(a) {
              a instanceof f.Projection && (a = a.project());
              q(a instanceof f.End || a instanceof f.Start, a);
              if (!d[a.id]) {
                d[a.id] = !0;
                var c = a.control;
                c instanceof f.Region || (c = a.control = new f.Region(c));
                a = c.block = h.buildBlock(c, a);
                c instanceof f.Start && (h.root = a);
                for (var e = 0;e < c.predecessors.length;e++) {
                  var l = c.predecessors[e], n, r = !1;
                  l instanceof f.Projection ? (n = l.project(), r = 1 === l.type) : n = l;
                  n instanceof f.Region && (n = new f.Jump(l), n = new f.Projection(n, 1), c.predecessors[e] = n, n = n.project(), r = !0);
                  b(n);
                  var g = n.control.block;
                  n instanceof f.Switch ? (q(p(l, 0)), g.pushSuccessorAt(a, l.selector.value)) : r && 0 < g.successors.length ? (g.pushSuccessor(a, !0), g.hasFlippedSuccessors = !0) : g.pushSuccessor(a, !0);
                }
              }
            }
            var h = new c;
            q(a && a instanceof G);
            h.dfg = a;
            var d = [];
            b(a.exit);
            h.splitCriticalEdges();
            h.exit = a.exit.control.block;
            h.computeDominators();
            return h;
          };
          c.prototype.buildRootAndExit = function() {
            q(!this.root && !this.exit);
            0 < this.blocks[0].predecessors.length ? (this.root = new y(this.nextBlockID++), this.blocks.push(this.root), this.root.pushSuccessor(this.blocks[0], !0)) : this.root = this.blocks[0];
            for (var a = [], b = 0;b < this.blocks.length;b++) {
              var c = this.blocks[b];
              0 === c.successors.length && a.push(c);
            }
            if (0 === a.length) {
              l("Must have an exit block.");
            } else {
              if (1 === a.length && a[0] !== this.root) {
                this.exit = a[0];
              } else {
                for (this.exit = new y(this.nextBlockID++), this.blocks.push(this.exit), b = 0;b < a.length;b++) {
                  a[b].pushSuccessor(this.exit, !0);
                }
              }
            }
            q(this.root && this.exit);
            q(this.root !== this.exit);
          };
          c.prototype.fromString = function(a, b) {
            function c(a) {
              var b = d[a];
              if (b) {
                return b;
              }
              d[a] = b = new y(h.nextBlockID++);
              b.name = a;
              e.push(b);
              return b;
            }
            var h = this, d = h.blockNames || (h.blockNames = {}), e = h.blocks;
            a.replace(/\ /g, "").split(",").forEach(function(a) {
              a = a.split("->");
              for (var b = null, h = 0;h < a.length;h++) {
                var d = a[h];
                if (b) {
                  var e = d;
                  c(b).pushSuccessor(c(e), !0);
                } else {
                  c(d);
                }
                b = d;
              }
            });
            q(b && d[b]);
            this.root = d[b];
          };
          c.prototype.buildBlock = function(a, b) {
            var c = new y(this.nextBlockID++, a, b);
            this.blocks.push(c);
            return c;
          };
          c.prototype.createBlockSet = function() {
            this.setConstructor || (this.setConstructor = b.BitSets.BitSetFunctor(this.blocks.length));
            return new this.setConstructor;
          };
          c.prototype.computeReversePostOrder = function() {
            if (this.order) {
              return this.order;
            }
            var a = this.order = [];
            this.depthFirstSearch(null, a.push.bind(a));
            a.reverse();
            for (var b = 0;b < a.length;b++) {
              a[b].rpo = b;
            }
            return a;
          };
          c.prototype.depthFirstSearch = function(a, b) {
            function c(d) {
              h.set(d.id);
              a && a(d);
              for (var e = d.successors, l = 0, n = e.length;l < n;l++) {
                var r = e[l];
                h.get(r.id) || c(r);
              }
              b && b(d);
            }
            var h = this.createBlockSet();
            c(this.root);
          };
          c.prototype.computeDominators = function() {
            function a(b) {
              var c;
              if (void 0 !== b.dominatorDepth) {
                return b.dominatorDepth;
              }
              c = b.dominator ? a(b.dominator) + 1 : 0;
              return b.dominatorDepth = c;
            }
            q(0 === this.root.predecessors.length, "Root node " + this.root + " must not have predecessors.");
            for (var b = new Int32Array(this.blocks.length), c = 0;c < b.length;c++) {
              b[c] = -1;
            }
            var h = this.createBlockSet();
            this.depthFirstSearch(function(a) {
              for (var c = a.successors, d = 0, e = c.length;d < e;d++) {
                var l = c[d].id, n = a.id, r = l;
                if (!(0 > b[l])) {
                  l = b[l];
                  for (h.clearAll();0 <= l;) {
                    h.set(l), l = b[l];
                  }
                  for (;0 <= n && !h.get(n);) {
                    n = b[n];
                  }
                }
                b[r] = n;
              }
            });
            for (var c = 0, d = this.blocks.length;c < d;c++) {
              this.blocks[c].dominator = this.blocks[b[c]];
            }
            c = 0;
            for (d = this.blocks.length;c < d;c++) {
              a(this.blocks[c]);
            }
          };
          c.prototype.computeLoops = function() {
            function a(d) {
              if (c.get(d.id)) {
                return b.get(d.id) && (d.isLoopHeader || (q(32 > h, "Can't handle too many loops, fall back on BitMaps if it's a problem."), d.isLoopHeader = !0, d.loops = 1 << h, h += 1), q(1 === r(d.loops))), d.loops;
              }
              c.set(d.id);
              b.set(d.id);
              for (var e = 0, l = 0, n = d.successors.length;l < n;l++) {
                e |= a(d.successors[l]);
              }
              d.isLoopHeader && (q(1 === r(d.loops)), e &= ~d.loops);
              d.loops = e;
              b.clear(d.id);
              return e;
            }
            var b = this.createBlockSet(), c = this.createBlockSet(), h = 0, d = a(this.root);
            q(0 === d);
          };
          c.prototype.computeUses = function() {
            k.enterTimeline("computeUses");
            var a = this.dfg, b = new I;
            a.forEachInPreOrderDepthFirstSearch(function(a) {
              a.visitInputs(function(c) {
                b.addUse(c, a);
              });
            });
            k.leaveTimeline();
            return b;
          };
          c.prototype.verify = function() {
            this.computeReversePostOrder().forEach(function(a) {
              a.phis && a.phis.forEach(function(b) {
                q(b.control === a.region);
                q(b.args.length === a.predecessors.length);
              });
            });
          };
          c.prototype.optimizePhis = function() {
            function a(b, c) {
              c = x(c);
              if (1 === c.length) {
                return c[0];
              }
              if (2 === c.length) {
                if (c[0] === b) {
                  return c[1];
                }
                if (c[1] === b) {
                  return c[0];
                }
              }
              return b;
            }
            var b = [], c = this.computeUses().entries;
            c.forEach(function(a) {
              s(a.def) && b.push(a.def);
            });
            for (var h = 0, d = 0, e = !0;e;) {
              d++, e = !1, b.forEach(function(b) {
                var d = a(b, b.args);
                if (d !== b) {
                  var l = c[b.id];
                  if (0 === l.uses.length) {
                    b = !1;
                  } else {
                    for (var n = 0, r = l.uses, f = 0, p = r.length;f < p;f++) {
                      n += r[f].replaceInput(b, d);
                    }
                    q(n >= l.uses.length);
                    l.uses = [];
                    b = !0;
                  }
                  b && (e = !0, h++);
                }
              });
            }
          };
          c.prototype.splitCriticalEdges = function() {
            for (var a = this.blocks, b = [], c = 0;c < a.length;c++) {
              var h = a[c].successors;
              if (1 < h.length) {
                for (var d = 0;d < h.length;d++) {
                  1 < h[d].predecessors.length && b.push({from:a[c], to:h[d]});
                }
              }
            }
            for (var a = b.length, e;e = b.pop();) {
              c = e.from.successors.indexOf(e.to);
              h = e.to.predecessors.indexOf(e.from);
              q(0 <= c && 0 <= h);
              var d = e.to, l = d.region, n = new f.Region(l.predecessors[h]), r = new f.Jump(n), n = this.buildBlock(n, r);
              l.predecessors[h] = new f.Projection(r, 1);
              e = e.from;
              e.successors[c] = n;
              n.pushPredecessor(e);
              n.pushSuccessor(d);
              d.predecessors[h] = n;
            }
            a && q(0 === this.splitCriticalEdges());
            return a;
          };
          c.prototype.allocateVariables = function() {
            function a(b) {
              !(p(b, 3) || b instanceof f.SetProperty) && b instanceof f.Value && (b.variable = new f.Variable("v" + b.id));
            }
            var b = this.computeReversePostOrder();
            b.forEach(function(b) {
              b.nodes.forEach(a);
              b.phis && b.phis.forEach(a);
            });
            for (var c = [], h = 0;h < b.length;h++) {
              var d = b[h], e = d.phis, d = d.predecessors;
              if (e) {
                for (var l = 0;l < e.length;l++) {
                  var n = e[l];
                  arguments = n.args;
                  q(d.length === arguments.length);
                  for (var r = 0;r < d.length;r++) {
                    var g = d[r], m = arguments[r];
                    m.abstract || p(m, 3) || (g = c[g.id] || (c[g.id] = []), m = m.variable || m, n.variable !== m && g.push(new f.Move(n.variable, m)));
                  }
                }
              }
            }
            var x = this.blocks;
            c.forEach(function(a, b) {
              for (var c = x[b], h = 0;a.length;) {
                for (var d = 0;d < a.length;d++) {
                  for (var e = a[d], l = 0;l < a.length;l++) {
                    if (d !== l && a[l].from === e.to) {
                      e = null;
                      break;
                    }
                  }
                  e && (a.splice(d--, 1), c.append(e));
                }
                if (a.length) {
                  for (e = a[0], l = new f.Variable("t" + h++), x[b].append(new f.Move(l, e.to)), d = 1;d < a.length;d++) {
                    a[d].from === e.to && (a[d].from = l);
                  }
                }
              }
            });
          };
          c.prototype.scheduleEarly = function() {
            function b(a) {
              return a.mustNotFloat || a.shouldNotFloat ? !1 : a.mustFloat || a.shouldFloat || a instanceof f.Parameter || a instanceof f.This || a instanceof f.Arguments ? !0 : a instanceof f.Binary || a instanceof f.Unary || a instanceof f.Parameter;
            }
            function c(a) {
              q(!p[a.id], "Already scheduled " + a);
              p[a.id] = !0;
              q(a.control, a);
              b(a) || a.control.block.append(a);
            }
            function h(a, b) {
              q(!a.control, a);
              q(!p[a.id]);
              q(b);
              a.control = b;
              c(a);
            }
            function d(b) {
              var r = [];
              b.visitInputs(function(b) {
                a(b) || n(b) && r.push(e(b));
              });
              for (var g = 0;g < r.length;g++) {
                var q = r[g];
                s(q) || p[q.id] || d(q);
              }
              if (b.control) {
                b instanceof f.End || b instanceof f.Phi || b instanceof f.Start || p[b.id] || c(b);
              } else {
                if (r.length) {
                  q = r[0].control;
                  for (g = 1;g < r.length;g++) {
                    var m = r[g].control;
                    q.block.dominatorDepth < m.block.dominatorDepth && (q = m);
                  }
                  h(b, q);
                } else {
                  h(b, l.root.region);
                }
              }
            }
            var l = this, r = this.dfg, p = [], g = [];
            r.forEachInPreOrderDepthFirstSearch(function(a) {
              a instanceof f.Region || a instanceof f.Jump || (a.control && g.push(a), s(a) && a.args.forEach(function(a) {
                b(a) && (a.mustNotFloat = !0);
              }));
            });
            for (var m = 0;m < g.length;m++) {
              var x = g[m];
              if (x instanceof f.Phi) {
                var w = x.control.block;
                (w.phis || (w.phis = [])).push(x);
              }
              x.control && d(x);
            }
            g.forEach(function(a) {
              a = e(a);
              a === r.start || a instanceof f.Region || q(a.control, "Node is not scheduled: " + a);
            });
          };
          c.prototype.trace = function(a) {
            function b(a) {
              h[a.id] || (h[a.id] = !0, d.push(a), a.visitSuccessors(b));
            }
            function c(a) {
              q(a);
              return a === e ? "house" : a === l ? "invhouse" : "box";
            }
            var h = [], d = [], e = this.root, l = this.exit;
            b(e);
            a.writeLn("");
            a.enter("digraph CFG {");
            a.writeLn("graph [bgcolor = gray10];");
            a.writeLn("edge [fontname = Consolas, fontsize = 11, color = white, fontcolor = white];");
            a.writeLn("node [shape = box, fontname = Consolas, fontsize = 11, color = white, fontcolor = white, style = filled];");
            a.writeLn("rankdir = TB;");
            d.forEach(function(b) {
              var h = "";
              void 0 !== b.name && (h += " " + b.name);
              void 0 !== b.rpo && (h += " O: " + b.rpo);
              a.writeLn("B" + b.id + ' [label = "B' + b.id + h + '", fillcolor = "black", shape=' + c(b) + ", style=filled];");
            });
            d.forEach(function(b) {
              b.visitSuccessors(function(c) {
                a.writeLn("B" + b.id + " -> B" + c.id);
              });
              b.dominator && a.writeLn("B" + b.id + " -> B" + b.dominator.id + " [color = orange];");
              b.follow && a.writeLn("B" + b.id + " -> B" + b.follow.id + " [color = purple];");
            });
            a.leave("}");
            a.writeLn("");
          };
          return c;
        }();
        f.CFG = C;
        var E = function() {
          function b() {
          }
          b.prototype.foldUnary = function(b, c) {
            q(b instanceof f.Unary);
            if (a(b.argument)) {
              return new f.Constant(b.operator.evaluate(b.argument.value));
            }
            if (c) {
              var h = this.fold(b.argument, !0);
              if (b.operator === f.Operator.TRUE) {
                return h;
              }
              if (h instanceof f.Unary) {
                if (b.operator === f.Operator.FALSE && h.operator === f.Operator.FALSE) {
                  return h.argument;
                }
              } else {
                return new f.Unary(b.operator, h);
              }
            }
            return b;
          };
          b.prototype.foldBinary = function(b, c) {
            q(b instanceof f.Binary);
            return a(b.left) && a(b.right) ? new f.Constant(b.operator.evaluate(b.left.value, b.right.value)) : b;
          };
          b.prototype.fold = function(a, b) {
            return a instanceof f.Unary ? this.foldUnary(a, b) : a instanceof f.Binary ? this.foldBinary(a, b) : a;
          };
          return b;
        }();
        f.PeepholeOptimizer = E;
      })(g.IR || (g.IR = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(a) {
        F(a instanceof v);
        return a;
      }
      function t(a) {
        return a instanceof v && b.isString(a.value);
      }
      function s(a) {
        return a instanceof v && b.isNumeric(a.value) ? !0 : a.ty && a.ty.isNumeric();
      }
      function m(a, b) {
        return s(a) && s(b) || d(a) && d(b) ? !0 : !1;
      }
      function d(a) {
        return t(a) ? !0 : a.ty && a.ty.isString();
      }
      function a(a) {
        return new v(a);
      }
      function c(a) {
        switch(a) {
          case 161:
            return H.SUB;
          case 162:
            return H.MUL;
          case 163:
            return H.DIV;
          case 164:
            return H.MOD;
          case 165:
            return H.LSH;
          case 166:
            return H.RSH;
          case 167:
            return H.URSH;
          case 168:
            return H.AND;
          case 169:
            return H.OR;
          case 170:
            return H.XOR;
          case 20:
            return H.NE;
          case 26:
            return H.SNE;
          case 19:
          ;
          case 171:
            return H.EQ;
          case 25:
          ;
          case 172:
            return H.SEQ;
          case 21:
          ;
          case 173:
            return H.LT;
          case 22:
          ;
          case 174:
            return H.LE;
          case 23:
          ;
          case 175:
            return H.GT;
          case 24:
          ;
          case 176:
            return H.GE;
          case 144:
            return H.NEG;
          case 196:
            return H.NEG;
          case 197:
            return H.ADD;
          case 198:
            return H.SUB;
          case 199:
            return H.MUL;
          case 17:
            return H.TRUE;
          case 18:
            return H.FALSE;
          case 150:
            return H.FALSE;
          case 151:
            return H.BITWISE_NOT;
          default:
            K(String(a));
        }
      }
      function n(c, h, d) {
        F(b.isString(d));
        d = d.split(".");
        for (var e = 0;e < d.length;e++) {
          h = new g.IR.GetProperty(null, c.store, h, a(d[e])), h.shouldFloat = !0, c.loads.push(h);
        }
        return h;
      }
      function p(a) {
        a = new g.IR.GlobalProperty(a);
        a.mustFloat = !0;
        return a;
      }
      function e(a, b) {
        var c = new Z(a, b);
        da && (c = da.fold(c));
        return c;
      }
      function q(a, c, h) {
        var d = new ea(a, c, h);
        c.ty && c.ty !== b.AVM2.Verifier.Type.Any && c.ty === h.ty && (a === H.EQ ? d.operator = H.SEQ : a === H.NE && (d.operator = H.SNE));
        da && (d = da.fold(d));
        return d;
      }
      function l(b) {
        return q(H.OR, b, a(0));
      }
      function u(b) {
        return q(H.URSH, b, a(0));
      }
      function w(a) {
        return s(a) ? a : e(H.PLUS, a);
      }
      function r(a) {
        return e(H.FALSE, e(H.FALSE, a));
      }
      function h(a) {
        a.shouldNotFloat = !0;
        return a;
      }
      function x(a, b) {
        return new X(null, null, a, null, b, 4);
      }
      function y(a, b) {
        return x(p(a), [b]);
      }
      function G(a) {
        return t(a) ? a : x(p("String"), [a]);
      }
      function I(a) {
        return t(a) ? a : W(a) ? new v(z.asCoerceString(f(a).value)) : x(p("asCoerceString"), [a]);
      }
      function C(a) {
        F(a instanceof E);
        return ma[E.getQualifiedName(a)];
      }
      var E = b.AVM2.ABC.Multiname, O = b.AVM2.ABC.InstanceInfo, K = b.Debug.notImplemented, F = b.Debug.assert, J = b.ArrayUtilities.top, A = b.ArrayUtilities.unique, B = b.ObjectUtilities.createEmptyObject, z = b.AVM2.Runtime, P = b.AVM2.Runtime.GlobalMultinameResolver, D = g.IR.Node, L = g.IR.Start, M = g.IR.Region, V = g.IR.Null, Q = g.IR.Undefined, U = g.IR.True, S = g.IR.False, aa = g.IR.This, $ = g.IR.Projection, ea = g.IR.Binary, Z = g.IR.Unary, v = g.IR.Constant, X = g.IR.Call, ba = g.IR.Phi, 
      R = g.IR.Stop, H = g.IR.Operator, Y = g.IR.Parameter, ga = g.IR.NewArray, ca = g.IR.NewObject, ka = g.IR.KeyValuePair, W = g.IR.isConstant, ha = new b.IndentingWriter, da = new g.IR.PeepholeOptimizer, ja = function() {
        function a(b) {
          "undefined" === typeof b && (b = 0);
          this.id = a._nextID += 1;
          this.index = b;
          this.local = [];
          this.stack = [];
          this.scope = [];
          this.store = Q;
          this.loads = [];
          this.saved = Q;
        }
        a.prototype.clone = function(b) {
          var c = new a;
          c.index = void 0 !== b ? b : this.index;
          c.local = this.local.slice(0);
          c.stack = this.stack.slice(0);
          c.scope = this.scope.slice(0);
          c.loads = this.loads.slice(0);
          c.saved = this.saved;
          c.store = this.store;
          return c;
        };
        a.prototype.matches = function(a) {
          return this.stack.length === a.stack.length && this.scope.length === a.scope.length && this.local.length === a.local.length;
        };
        a.prototype.makeLoopPhis = function(b, c) {
          function h(a) {
            a = new ba(b, a);
            a.isLoop = !0;
            return a;
          }
          var d = new a;
          F(b);
          d.index = this.index;
          d.local = this.local.map(function(a, b) {
            return c[b] ? h(a) : a;
          });
          d.stack = this.stack.map(h);
          d.scope = this.scope.map(h);
          d.loads = this.loads.slice(0);
          d.saved = this.saved;
          d.store = h(this.store);
          return d;
        };
        a.tryOptimizePhi = function(a) {
          if (a instanceof ba) {
            if (a.isLoop) {
              return a;
            }
            var b = A(a.args);
            if (1 === b.length) {
              return a.seal(), k.countTimeline("Builder: OptimizedPhi"), b[0];
            }
          }
          return a;
        };
        a.prototype.optimize = function() {
          this.local = this.local.map(a.tryOptimizePhi);
          this.stack = this.stack.map(a.tryOptimizePhi);
          this.scope = this.scope.map(a.tryOptimizePhi);
          this.saved = a.tryOptimizePhi(this.saved);
          this.store = a.tryOptimizePhi(this.store);
        };
        a.mergeValue = function(a, b, c) {
          a = b instanceof ba && b.control === a ? b : new ba(a, b);
          a.pushValue(c);
          return a;
        };
        a.mergeValues = function(b, c, h) {
          for (var d = 0;d < c.length;d++) {
            c[d] = a.mergeValue(b, c[d], h[d]);
          }
        };
        a.prototype.merge = function(b, c) {
          F(b);
          F(this.matches(c), this + " !== " + c);
          a.mergeValues(b, this.local, c.local);
          a.mergeValues(b, this.stack, c.stack);
          a.mergeValues(b, this.scope, c.scope);
          this.store = a.mergeValue(b, this.store, c.store);
          this.store.abstract = !0;
        };
        a.prototype.trace = function(a) {
          a.writeLn(this.toString());
        };
        a.toBriefString = function(a) {
          return a instanceof D ? a.toString(!0) : a;
        };
        a.prototype.toString = function() {
          return "<" + String(this.id + " @ " + this.index).padRight(" ", 10) + (" M: " + a.toBriefString(this.store)).padRight(" ", 14) + (" X: " + a.toBriefString(this.saved)).padRight(" ", 14) + (" $: " + this.scope.map(a.toBriefString).join(", ")).padRight(" ", 20) + (" L: " + this.local.map(a.toBriefString).join(", ")).padRight(" ", 40) + (" S: " + this.stack.map(a.toBriefString).join(", ")).padRight(" ", 60);
        };
        a._nextID = 0;
        return a;
      }(), N = y.bind(null, "asCoerceObject"), ma = B();
      ma[E.Int] = l;
      ma[E.Uint] = u;
      ma[E.Number] = w;
      ma[E.String] = I;
      ma[E.Object] = N;
      ma[E.Boolean] = r;
      var T = B();
      T[E.Int] = l;
      T[E.Uint] = u;
      T[E.Number] = y.bind(null, "Number");
      T[E.String] = y.bind(null, "String");
      T[E.Object] = y.bind(null, "Object");
      T[E.Boolean] = y.bind(null, "Boolean");
      var oa = y.bind(null, "Object"), pa = function() {
        function d(a, b, c, h) {
          this.builder = a;
          this.region = b;
          this.block = c;
          this.state = h;
          this.abc = a.abc;
          this.methodInfoConstant = a.methodInfoConstant;
          this.bytecodes = a.methodInfo.analysis.bytecodes;
          this.constantPool = a.abc.constantPool;
          this.traceBuilder = a.traceBuilder;
          this.methodInfo = a.methodInfo;
        }
        d.prototype.popMultiname = function() {
          var b = this.constantPool.multinames[this.bc.index], c, h = b.flags;
          c = b.isRuntimeName() ? this.state.stack.pop() : a(b.name);
          b.isRuntimeNamespace() ? (b = new ga(this.region, [this.state.stack.pop()]), F(!(b instanceof g.IR.GetProperty), "Cannot float node : " + b), b.shouldFloat = !0) : b = a(b.namespaces);
          return new g.IR.ASMultiname(b, c, h);
        };
        d.prototype.setIfStops = function(a) {
          F(!this.stops);
          a = new g.IR.If(this.region, a);
          this.stops = [{control:new $(a, 2), target:this.bytecodes[this.bc.position + 1], state:this.state}, {control:new $(a, 1), target:this.bc.target, state:this.state}];
        };
        d.prototype.setJumpStop = function() {
          F(!this.stops);
          this.stops = [{control:this.region, target:this.bc.target, state:this.state}];
        };
        d.prototype.setThrowStop = function() {
          F(!this.stops);
          this.stops = [];
        };
        d.prototype.setReturnStop = function() {
          F(!this.stops);
          this.stops = [];
        };
        d.prototype.setSwitchStops = function(b) {
          F(!this.stops);
          if (2 < this.bc.targets.length) {
            this.stops = [];
            b = new g.IR.Switch(this.region, b);
            for (var c = 0;c < this.bc.targets.length;c++) {
              this.stops.push({control:new $(b, 0, a(c)), target:this.bc.targets[c], state:this.state});
            }
          } else {
            F(2 === this.bc.targets.length), b = q(H.SEQ, b, a(0)), b = new g.IR.If(this.region, b), this.stops = [{control:new $(b, 2), target:this.bc.targets[1], state:this.state}, {control:new $(b, 1), target:this.bc.targets[0], state:this.state}];
          }
        };
        d.prototype.savedScope = function() {
          return this.state.saved;
        };
        d.prototype.topScope = function(a) {
          var b = this.state.scope;
          if (void 0 !== a) {
            if (a < b.length) {
              return b[b.length - 1 - a];
            }
            if (a === b.length) {
              return this.savedScope();
            }
            var c = this.savedScope();
            a -= b.length;
            for (b = 0;b < a;b++) {
              c = n(this.state, c, "parent");
            }
            return c;
          }
          return 0 < b.length ? J(b) : this.savedScope();
        };
        d.prototype.getGlobalScope = function() {
          var b = this.bc.ti;
          return b && b.object ? a(b.object) : new g.IR.ASGlobal(null, this.savedScope());
        };
        d.prototype.getScopeObject = function(a) {
          return a instanceof g.IR.ASScope ? a.object : n(this.state, a, "object");
        };
        d.prototype.findProperty = function(c, h) {
          var d = this.bc.ti, e = new g.IR.ASFindProperty(this.region, this.state.store, this.topScope(), c, this.methodInfoConstant, h);
          if (d) {
            if (d.object) {
              return d.object instanceof b.AVM2.Runtime.Global && !d.object.scriptInfo.executing ? e : a(d.object);
            }
            if (void 0 !== d.scopeDepth) {
              return this.getScopeObject(this.topScope(d.scopeDepth));
            }
          }
          return e;
        };
        d.prototype.coerce = function(a, b) {
          var c = C(a);
          return c ? c(b) : b;
        };
        d.prototype.store = function(a) {
          var b = this.state;
          b.store = new $(a, 3);
          a.loads = b.loads.slice(0);
          b.loads.length = 0;
          return a;
        };
        d.prototype.load = function(a) {
          this.state.loads.push(a);
          return a;
        };
        d.prototype.call = function(a, b, c) {
          return this.store(new X(this.region, this.state.store, a, b, c, 4));
        };
        d.prototype.callCall = function(a, b, c) {
          return this.store(new X(this.region, this.state.store, a, b, c, 16));
        };
        d.prototype.callProperty = function(b, c, h, d) {
          var e = this.bc.ti, l = this.region, n = this.state;
          if (e && e.trait) {
            if (e.trait.isMethod()) {
              return e = e.trait.holder instanceof O && e.trait.holder.isInterface() ? E.getPublicQualifiedName(E.getName(e.trait.name)) : E.getQualifiedName(e.trait.name), e = z.VM_OPEN_METHOD_PREFIX + e, this.store(new g.IR.CallProperty(l, n.store, b, a(e), h, 4));
            }
            if (e.trait.isClass()) {
              c = e.trait.name;
              F(c instanceof E);
              if (c = T[E.getQualifiedName(c)]) {
                return c(h[0]);
              }
              e = E.getQualifiedName(e.trait.name);
              return this.store(new g.IR.CallProperty(l, n.store, b, a(e), h, 16));
            }
          }
          return(e = this.resolveMultinameGlobally(c)) ? this.store(new g.IR.ASCallProperty(l, n.store, b, a(E.getQualifiedName(e)), h, 6, d)) : this.store(new g.IR.ASCallProperty(l, n.store, b, c, h, 4, d));
        };
        d.prototype.getProperty = function(b, c, h) {
          var d = this.bc.ti, e = this.region, l = this.state;
          F(c instanceof g.IR.ASMultiname);
          h = !!h;
          if (d && d.trait) {
            if (d.trait.isConst() && d.trait.hasDefaultValue) {
              return a(d.trait.value);
            }
            b = new g.IR.GetProperty(e, l.store, b, a(E.getQualifiedName(d.trait.name)));
            return d.trait.isGetter() ? this.store(b) : this.load(b);
          }
          if (s(c.name)) {
            return this.store(new g.IR.ASGetProperty(e, l.store, b, c, 1));
          }
          if (d = this.resolveMultinameGlobally(c)) {
            return this.store(new g.IR.ASGetProperty(e, l.store, b, a(E.getQualifiedName(d)), 2 | (h ? 8 : 0)));
          }
          k.countTimeline("Compiler: Slow ASGetProperty");
          return this.store(new g.IR.ASGetProperty(e, l.store, b, c, h ? 8 : 0));
        };
        d.prototype.setProperty = function(b, c, h) {
          var d = this.bc.ti, e = this.region, l = this.state;
          F(c instanceof g.IR.ASMultiname);
          if (d && d.trait) {
            (c = d.trait.typeName ? C(d.trait.typeName) : null) && (h = c(h)), this.store(new g.IR.SetProperty(e, l.store, b, a(E.getQualifiedName(d.trait.name)), h));
          } else {
            if (s(c.name)) {
              return this.store(new g.IR.ASSetProperty(e, l.store, b, c, h, 1));
            }
            this.resolveMultinameGlobally(c);
            return this.store(new g.IR.ASSetProperty(e, l.store, b, c, h, 0));
          }
        };
        d.prototype.callSuper = function(b, c, h, d) {
          var e = this.bc.ti, l = this.region, n = this.state;
          return e && e.trait && e.trait.isMethod() && e.baseClass ? (b = z.VM_OPEN_METHOD_PREFIX + E.getQualifiedName(e.trait.name), e = this.getJSProperty(a(e.baseClass), "traitsPrototype." + b), this.call(e, c, d)) : this.store(new g.IR.ASCallSuper(l, n.store, c, h, d, 4, b));
        };
        d.prototype.getSuper = function(b, c, h) {
          var d = this.bc.ti, e = this.region, l = this.state;
          return d && d.trait && d.trait.isGetter() && d.baseClass ? (b = z.VM_OPEN_GET_METHOD_PREFIX + E.getQualifiedName(d.trait.name), d = this.getJSProperty(a(d.baseClass), "traitsPrototype." + b), this.call(d, c, [])) : this.store(new g.IR.ASGetSuper(e, l.store, c, h, b));
        };
        d.prototype.setSuper = function(b, c, h, d) {
          var e = this.bc.ti, l = this.region, n = this.state;
          e && e.trait && e.trait.isSetter() && e.baseClass ? (b = z.VM_OPEN_SET_METHOD_PREFIX + E.getQualifiedName(e.trait.name), e = this.getJSProperty(a(e.baseClass), "traitsPrototype." + b), this.call(e, c, [d])) : this.store(new g.IR.ASSetSuper(l, n.store, c, h, d, b));
        };
        d.prototype.constructSuper = function(b, c, h) {
          var d = this.bc.ti;
          if (d) {
            if (d.noCallSuperNeeded) {
              return;
            }
            if (d.baseClass) {
              b = this.getJSProperty(a(d.baseClass), "instanceConstructorNoInitialize");
              this.call(b, c, h);
              return;
            }
          }
          b = this.getJSProperty(b, "object.baseClass.instanceConstructorNoInitialize");
          this.call(b, c, h);
        };
        d.prototype.getSlot = function(b, c) {
          var h = this.bc.ti, d = this.region, e = this.state;
          if (h) {
            var l = h.trait;
            if (l) {
              if (l.isConst() && h.trait.hasDefaultValue) {
                return a(l.value);
              }
              h = E.getQualifiedName(l.name);
              return this.store(new g.IR.GetProperty(d, e.store, b, a(h)));
            }
          }
          return this.store(new g.IR.ASGetSlot(null, e.store, b, c));
        };
        d.prototype.setSlot = function(b, c, h) {
          var d = this.bc.ti, e = this.region, l = this.state;
          if (d && (d = d.trait)) {
            c = E.getQualifiedName(d.name);
            this.store(new g.IR.SetProperty(e, l.store, b, a(c), h));
            return;
          }
          this.store(new g.IR.ASSetSlot(e, l.store, b, c, h));
        };
        d.prototype.resolveMultinameGlobally = function(a) {
          var c = a.namespaces, h = a.name;
          if (b.AVM2.Runtime.globalMultinameAnalysis.value) {
            if (W(c) && W(h) && !a.isAttribute()) {
              if (!b.isNumeric(h.value) && b.isString(h.value) && h.value) {
                return P.resolveMultiname(new E(c.value, h.value, a.flags));
              }
              k.countTimeline("GlobalMultinameResolver: Cannot resolve numeric or any names.");
            } else {
              k.countTimeline("GlobalMultinameResolver: Cannot resolve runtime multiname or attribute.");
            }
          }
        };
        d.prototype.getJSProperty = function(a, b) {
          return n(this.state, a, b);
        };
        d.prototype.setJSProperty = function(b, c, h) {
          this.store(new g.IR.SetProperty(null, this.state.store, b, a(c), h));
        };
        d.prototype.simplifyName = function(b) {
          return b instanceof v && b.value instanceof E && E.isQName(b.value) ? a(E.getQualifiedName(b.value)) : b;
        };
        d.prototype.getDescendants = function(a, b) {
          var c = this.region, h = this.state;
          b = this.simplifyName(b);
          return new g.IR.ASGetDescendants(c, h.store, a, b);
        };
        d.prototype.truthyCondition = function(a) {
          var b = this.state.stack, c;
          a.isBinary && (c = b.pop());
          b = b.pop();
          a = c ? q(a, b, c) : e(a, b);
          da && (a = da.fold(a, !0));
          return a;
        };
        d.prototype.negatedTruthyCondition = function(a) {
          a = e(H.FALSE, this.truthyCondition(a));
          da && (a = da.fold(a, !0));
          return a;
        };
        d.prototype.pushExpression = function(a, b) {
          var c = this.state.stack, h;
          a.isBinary ? (h = c.pop(), c = c.pop(), b && (h = l(h), c = l(c)), this.push(q(a, c, h))) : (c = c.pop(), b && (c = l(c)), this.push(e(a, c)));
        };
        d.prototype.push = function(a) {
          var b = this.bc;
          F(a instanceof g.IR.Node);
          b.ti && !a.ty && (a.ty = b.ti.type);
          this.state.stack.push(a);
        };
        d.prototype.pushLocal = function(a) {
          this.push(this.state.local[a]);
        };
        d.prototype.popLocal = function(a) {
          var b = this.state;
          b.local[a] = h(b.stack.pop());
        };
        d.prototype.build = function() {
          function d() {
            return y.pop();
          }
          function e(a) {
            return b.ArrayUtilities.popMany(y, a);
          }
          var n = this.block, f = this.state, s = this.state.local, y = this.state.stack, t = this.state.scope, C = this.region, O = this.bytecodes, z, B, v, N = this.push.bind(this);
          this.stops = null;
          this.traceBuilder && (ha.writeLn("Processing Region: " + C + ", Block: " + n.bid), ha.enter(("> state: " + C.entryState.toString()).padRight(" ", 100)));
          for (var J = n.position, P = n.end.position;J <= P;J++) {
            this.bc = n = O[J];
            var A = n.op;
            f.index = J;
            switch(A) {
              case 3:
                this.store(new g.IR.Throw(C, d()));
                this.builder.stopPoints.push({region:C, store:f.store, value:Q});
                this.setThrowStop();
                break;
              case 98:
                this.pushLocal(n.index);
                break;
              case 208:
              ;
              case 209:
              ;
              case 210:
              ;
              case 211:
                this.pushLocal(A - 208);
                break;
              case 99:
                this.popLocal(n.index);
                break;
              case 212:
              ;
              case 213:
              ;
              case 214:
              ;
              case 215:
                this.popLocal(A - 212);
                break;
              case 28:
              ;
              case 48:
                t.push(new g.IR.ASScope(this.topScope(), d(), 28 === A));
                break;
              case 29:
                t.pop();
                break;
              case 100:
                N(this.getGlobalScope());
                break;
              case 101:
                N(this.getScopeObject(f.scope[n.index]));
                break;
              case 94:
              ;
              case 93:
                N(this.findProperty(this.popMultiname(), 93 === A));
                break;
              case 102:
                v = this.popMultiname();
                B = d();
                N(this.getProperty(B, v, !1));
                break;
              case 89:
                v = this.popMultiname();
                B = d();
                N(this.getDescendants(B, v));
                break;
              case 96:
                v = this.popMultiname();
                N(this.getProperty(this.findProperty(v, !0), v, !1));
                break;
              case 104:
              ;
              case 97:
                z = d();
                v = this.popMultiname();
                B = d();
                this.setProperty(B, v, z);
                break;
              case 106:
                v = this.popMultiname();
                B = d();
                N(this.store(new g.IR.ASDeleteProperty(C, f.store, B, v)));
                break;
              case 108:
                B = d();
                N(this.getSlot(B, a(n.index)));
                break;
              case 109:
                z = d();
                B = d();
                this.setSlot(B, a(n.index), z);
                break;
              case 4:
                v = this.popMultiname();
                B = d();
                N(this.getSuper(this.savedScope(), B, v));
                break;
              case 5:
                z = d();
                v = this.popMultiname();
                B = d();
                this.setSuper(this.savedScope(), B, v, z);
                break;
              case 241:
              ;
              case 240:
                break;
              case 64:
                N(x(this.builder.createFunctionCallee, [a(this.abc.methods[n.index]), this.topScope(), a(!0)]));
                break;
              case 65:
                z = e(n.argCount);
                B = d();
                v = d();
                N(this.callCall(v, B, z));
                break;
              case 70:
              ;
              case 79:
              ;
              case 76:
                z = e(n.argCount);
                v = this.popMultiname();
                B = d();
                z = this.callProperty(B, v, z, 76 === A);
                79 !== A && N(z);
                break;
              case 69:
              ;
              case 78:
                v = this.popMultiname();
                z = e(n.argCount);
                B = d();
                z = this.callSuper(this.savedScope(), B, v, z);
                78 !== A && N(z);
                break;
              case 66:
                z = e(n.argCount);
                B = d();
                N(this.store(new g.IR.ASNew(C, f.store, B, z)));
                break;
              case 73:
                z = e(n.argCount);
                B = d();
                this.constructSuper(this.savedScope(), B, z);
                break;
              case 74:
                z = e(n.argCount);
                v = this.popMultiname();
                B = d();
                v = this.getProperty(B, v, !1);
                N(this.store(new g.IR.ASNew(C, f.store, v, z)));
                break;
              case 128:
                if (n.ti && n.ti.noCoercionNeeded) {
                  k.countTimeline("Compiler: NoCoercionNeeded");
                  break;
                } else {
                  k.countTimeline("Compiler: CoercionNeeded");
                }
                z = d();
                N(this.coerce(this.constantPool.multinames[n.index], z));
                break;
              case 131:
              ;
              case 115:
                N(l(d()));
                break;
              case 136:
              ;
              case 116:
                N(u(d()));
                break;
              case 132:
              ;
              case 117:
                N(w(d()));
                break;
              case 129:
              ;
              case 118:
                N(r(d()));
                break;
              case 120:
                N(this.call(p("checkFilter"), null, [d()]));
                break;
              case 130:
                break;
              case 133:
                N(I(d()));
                break;
              case 112:
                N(G(d()));
                break;
              case 134:
                if (n.ti && n.ti.noCoercionNeeded) {
                  k.countTimeline("Compiler: NoCoercionNeeded");
                  break;
                } else {
                  k.countTimeline("Compiler: CoercionNeeded");
                }
                z = d();
                B = this.constantPool.multinames[n.index];
                v = new g.IR.ASMultiname(a(B.namespaces), a(B.name), B.flags);
                B = this.getProperty(this.findProperty(v, !1), v);
                N(this.call(p("asAsType"), null, [B, z]));
                break;
              case 135:
                B = d();
                z = d();
                N(this.call(p("asAsType"), null, [B, z]));
                break;
              case 72:
              ;
              case 71:
                z = Q;
                72 === A && (z = d(), this.methodInfo.returnType && (n.ti && n.ti.noCoercionNeeded || (z = this.coerce(this.methodInfo.returnType, z))));
                this.builder.stopPoints.push({region:C, store:f.store, value:z});
                this.setReturnStop();
                break;
              case 30:
              ;
              case 35:
                z = d();
                B = d();
                N(new g.IR.CallProperty(C, f.store, B, a(30 === A ? "asNextName" : "asNextValue"), [z], 4));
                break;
              case 50:
                z = new g.IR.ASNewHasNext2;
                this.setJSProperty(z, "object", s[n.object]);
                this.setJSProperty(z, "index", s[n.index]);
                this.store(new g.IR.CallProperty(C, f.store, oa(s[n.object]), a("asHasNext2"), [z], 4));
                s[n.object] = this.getJSProperty(z, "object");
                N(s[n.index] = this.getJSProperty(z, "index"));
                break;
              case 32:
                N(V);
                break;
              case 33:
                N(Q);
                break;
              case 38:
                N(U);
                break;
              case 39:
                N(S);
                break;
              case 40:
                N(a(NaN));
                break;
              case 34:
                K(String(n));
                break;
              case 36:
              ;
              case 37:
                N(a(n.value));
                break;
              case 44:
                N(a(this.constantPool.strings[n.index]));
                break;
              case 45:
                N(a(this.constantPool.ints[n.index]));
                break;
              case 46:
                N(a(this.constantPool.uints[n.index]));
                break;
              case 47:
                N(a(this.constantPool.doubles[n.index]));
                break;
              case 41:
                d();
                break;
              case 42:
                z = h(d());
                N(z);
                N(z);
                break;
              case 43:
                f.stack.push(d(), d());
                break;
              case 239:
              ;
              case 240:
              ;
              case 241:
                break;
              case 16:
                this.setJumpStop();
                break;
              case 12:
                this.setIfStops(this.negatedTruthyCondition(H.LT));
                break;
              case 15:
                this.setIfStops(this.negatedTruthyCondition(H.GE));
                break;
              case 14:
                this.setIfStops(this.negatedTruthyCondition(H.GT));
                break;
              case 13:
                this.setIfStops(this.negatedTruthyCondition(H.LE));
                break;
              case 24:
              ;
              case 23:
              ;
              case 22:
              ;
              case 21:
              ;
              case 17:
              ;
              case 18:
              ;
              case 19:
              ;
              case 20:
              ;
              case 25:
              ;
              case 26:
                this.setIfStops(this.truthyCondition(c(A)));
                break;
              case 27:
                this.setSwitchStops(d());
                break;
              case 160:
                B = d();
                z = d();
                v = m(z, B) ? H.ADD : b.AVM2.Runtime.useAsAdd ? H.AS_ADD : H.ADD;
                N(q(v, z, B));
                break;
              case 161:
              ;
              case 162:
              ;
              case 163:
              ;
              case 164:
              ;
              case 165:
              ;
              case 166:
              ;
              case 167:
              ;
              case 168:
              ;
              case 169:
              ;
              case 170:
              ;
              case 171:
              ;
              case 172:
              ;
              case 173:
              ;
              case 174:
              ;
              case 175:
              ;
              case 176:
              ;
              case 144:
              ;
              case 150:
              ;
              case 151:
                this.pushExpression(c(A));
                break;
              case 196:
              ;
              case 197:
              ;
              case 198:
              ;
              case 199:
                this.pushExpression(c(A), !0);
                break;
              case 145:
              ;
              case 192:
              ;
              case 147:
              ;
              case 193:
                N(a(1));
                145 === A || 147 === A ? N(w(d())) : N(l(d()));
                145 === A || 192 === A ? this.pushExpression(H.ADD) : this.pushExpression(H.SUB);
                break;
              case 146:
              ;
              case 194:
              ;
              case 148:
              ;
              case 195:
                N(a(1));
                146 === A || 148 === A ? N(w(s[n.index])) : N(l(s[n.index]));
                146 === A || 194 === A ? this.pushExpression(H.ADD) : this.pushExpression(H.SUB);
                this.popLocal(n.index);
                break;
              case 177:
                B = d();
                z = d();
                N(this.call(this.getJSProperty(B, "isInstanceOf"), null, [z]));
                break;
              case 178:
                z = d();
                v = this.popMultiname();
                B = this.getProperty(this.findProperty(v, !1), v);
                N(this.call(p("asIsType"), null, [B, z]));
                break;
              case 179:
                B = d();
                z = d();
                N(this.call(p("asIsType"), null, [B, z]));
                break;
              case 180:
                B = d();
                z = d();
                v = new g.IR.ASMultiname(Q, z, 0);
                N(this.store(new g.IR.ASHasProperty(C, f.store, B, v)));
                break;
              case 149:
                N(this.call(p("asTypeOf"), null, [d()]));
                break;
              case 8:
                N(Q);
                this.popLocal(n.index);
                break;
              case 83:
                z = e(n.argCount);
                B = d();
                v = p("applyType");
                N(this.call(v, null, [this.methodInfoConstant, B, new ga(C, z)]));
                break;
              case 86:
                z = e(n.argCount);
                N(new ga(C, z));
                break;
              case 85:
                B = [];
                for (v = 0;v < n.argCount;v++) {
                  z = d();
                  var D = d();
                  F(W(D) && b.isString(D.value));
                  D = a(E.getPublicQualifiedName(D.value));
                  B.push(new ka(D, z));
                }
                N(new ca(C, B));
                break;
              case 87:
                N(new g.IR.ASNewActivation(a(this.methodInfo)));
                break;
              case 88:
                v = p("createClass");
                N(this.call(v, null, [a(this.abc.classes[n.index]), d(), this.topScope()]));
                break;
              default:
                K(String(n));
            }
            239 !== A && 241 !== A && 240 !== A && this.traceBuilder && ha.writeLn(("state: " + f.toString()).padRight(" ", 100) + " : " + J + ", " + n.toString(this.abc));
          }
          this.traceBuilder && ha.leave(("< state: " + f.toString()).padRight(" ", 100));
        };
        return d;
      }(), na = function() {
        function c(a, h, d) {
          F(a && a.abc && h);
          this.abc = a.abc;
          this.methodInfoConstant = new v(a);
          this.scope = h;
          this.methodInfo = a;
          this.hasDynamicScope = d;
          this.traceBuilder = 3 < b.AVM2.Compiler.traceLevel.value;
          this.createFunctionCallee = p("createFunction");
          this.stopPoints = [];
          this.bytecodes = this.methodInfo.analysis.bytecodes;
        }
        c.prototype.buildStart = function(b) {
          var c = this.methodInfo, h = b.entryState = new ja(0);
          h.local.push(new aa(b));
          for (var d = this.hasDynamicScope ? 1 : 0, e = c.parameters.length, l = 0;l < e;l++) {
            h.local.push(new Y(b, d + l, c.parameters[l].name));
          }
          for (l = e;l < c.localCount;l++) {
            h.local.push(Q);
          }
          h.store = new $(b, 3);
          b.scope = this.hasDynamicScope ? new Y(b, 0, z.SAVED_SCOPE_NAME) : new v(this.scope);
          h.saved = new $(b, 4);
          l = new g.IR.Arguments(b);
          if (c.needsRest() || c.needsArguments()) {
            var r = a(d + (c.needsRest() ? e : 0));
            h.local[e + 1] = new X(b, h.store, p("sliceArguments"), null, [l, r], 4);
          }
          b = n(h, l, "length");
          for (l = 0;l < e;l++) {
            var f = c.parameters[l], r = l + 1, q = h.local[r];
            if (void 0 !== f.value) {
              var m;
              m = new g.IR.Binary(H.LT, b, a(d + l + 1));
              q = new g.IR.Latch(null, m, a(f.value), q);
            }
            f.type && !f.type.isAnyName() && (f = C(f.type)) && (q = f(q));
            h.local[r] = q;
          }
        };
        c.prototype.buildGraph = function() {
          for (var a = this.methodInfo.analysis.blocks, c = this.traceBuilder, h = 0;h < a.length;h++) {
            a[h].bdo = h, a[h].region = null;
          }
          var d = new b.SortedList(function(a, b) {
            return a.block.bdo - b.block.bdo;
          }), h = new L;
          this.buildStart(h);
          for (d.push({region:h, block:a[0]});a = d.pop();) {
            this.buildBlock(a.region, a.block, a.region.entryState.clone()).forEach(function(a) {
              var b = a.target, h = b.region;
              if (h) {
                c && ha.enter("Merging into region: " + h + " @ " + b.position + ", block " + b.bid + " {"), c && ha.writeLn("  R " + h.entryState), c && ha.writeLn("+ I " + a.state), h.entryState.merge(h, a.state), h.predecessors.push(a.control), c && ha.writeLn("  = " + h.entryState), c && ha.leave("}");
              } else {
                var h = b.region = new M(a.control), e = null;
                b.loop && (e = g.enableDirtyLocals.value && b.loop.getDirtyLocals(), c && ha.writeLn("Adding PHIs to loop region. " + e));
                h.entryState = b.loop ? a.state.makeLoopPhis(h, e) : a.state.clone(b.position);
                c && ha.writeLn("Adding new region: " + h + " @ " + b.position + " to worklist.");
                d.push({region:h, block:b});
              }
            }), c && ha.enter("Worklist: {"), d.forEach(function(a) {
              c && ha.writeLn(a.region + " " + a.block.bdo + " " + a.region.entryState);
            }), c && ha.leave("}");
          }
          c && ha.writeLn("Done");
          if (1 < this.stopPoints.length) {
            var e = new M(null), l = new ba(e, null), n = new ba(e, null);
            this.stopPoints.forEach(function(a) {
              e.predecessors.push(a.region);
              l.pushValue(a.value);
              n.pushValue(a.store);
            });
            a = new R(e, n, l);
          } else {
            a = new R(this.stopPoints[0].region, this.stopPoints[0].store, this.stopPoints[0].value);
          }
          return new g.IR.DFG(a);
        };
        c.prototype.buildBlock = function(a, b, c) {
          F(a && b && c);
          c.optimize();
          var h = b.verifierEntryState;
          if (h) {
            this.traceBuilder && ha.writeLn("Type State: " + h);
            for (var d = 0;d < h.local.length;d++) {
              var e = h.local[d], l = c.local[d];
              l.ty || (l.ty = e);
            }
          }
          b = new pa(this, a, b, c);
          b.build();
          h = b.stops;
          h || (h = [], b.bc.position + 1 <= this.bytecodes.length && h.push({control:a, target:this.bytecodes[b.bc.position + 1], state:c}));
          return h;
        };
        c.buildMethod = function(a, h, d, e) {
          F(d);
          F(h.analysis);
          F(!h.hasExceptions());
          k.countTimeline("Compiler: Compiled Methods");
          k.enterTimeline("Compiler");
          k.enterTimeline("Mark Loops");
          h.analysis.markLoops();
          k.leaveTimeline();
          b.AVM2.Verifier.enabled.value && (k.enterTimeline("Verify"), a.verifyMethod(h, d), k.leaveTimeline());
          a = 0 < b.AVM2.Compiler.traceLevel.value;
          var l = 1 < b.AVM2.Compiler.traceLevel.value, n = 2 < b.AVM2.Compiler.traceLevel.value;
          if (a) {
            var r = window.performance.now()
          }
          k.enterTimeline("Build IR");
          D.startNumbering();
          d = (new c(h, d, e)).buildGraph();
          k.leaveTimeline();
          n && d.trace(ha);
          k.enterTimeline("Build CFG");
          d = d.buildCFG();
          k.leaveTimeline();
          k.enterTimeline("Optimize Phis");
          d.optimizePhis();
          k.leaveTimeline();
          k.enterTimeline("Schedule Nodes");
          d.scheduleEarly();
          k.leaveTimeline();
          n && d.trace(ha);
          k.enterTimeline("Verify IR");
          d.verify();
          k.leaveTimeline();
          k.enterTimeline("Allocate Variables");
          d.allocateVariables();
          k.leaveTimeline();
          k.enterTimeline("Generate Source");
          n = b.AVM2.Compiler.Backend.generate(d);
          k.leaveTimeline();
          l && ha.writeLn(n.body);
          D.stopNumbering();
          k.leaveTimeline();
          a && ha.writeLn("Compiled " + (h.name ? "function " + h.name : "anonymous function") + " in " + (window.performance.now() - r).toPrecision(2) + "ms");
          return n;
        };
        return c;
      }(), fa = new b.AVM2.Verifier.Verifier;
      g.compileMethod = function(a, b, c) {
        return na.buildMethod(fa, a, b, c);
      };
    })(k.Compiler || (k.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(b, d) {
        var e = new c(null, b), h = b.abc.applicationDomain, l = [];
        k(b.init, d, e, l, !1);
        b.traits.forEach(function(b) {
          if (b.isClass()) {
            for (var n = [], f = b.classInfo;f;) {
              if (n.unshift(f), f.instanceInfo.superName) {
                f = h.findClassInfo(f.instanceInfo.superName);
              } else {
                break;
              }
            }
            var p = e;
            n.forEach(function(a) {
              p = new c(p, a);
            });
            a(b.classInfo, d, p, l);
          } else {
            (b.isMethod() || b.isGetter() || b.isSetter()) && m(b, d, e, l);
          }
        });
        l.forEach(function(a) {
          k(a.methodInfo, d, a.scope, null, !0);
        });
      }
      function k(a, b, c, h, d) {
        if (n(a)) {
          p(a);
          try {
            l = !1;
            var f = e(a, c, d, !1, !1);
            b.enter(a.index + ": ");
            l ? b.writeLn("undefined") : b.writeLns(f.toSource());
            b.leave(",");
            h && s(a, b, c, h);
          } catch (g) {
            b.writeLn("// " + g);
          }
        } else {
          b.writeLn("// Can't compile method: " + a.index);
        }
      }
      function s(a, b, d, h) {
        for (var e = a.analysis.bytecodes, l = a.abc.methods, n = 0;n < e.length;n++) {
          var f = e[n];
          if (64 === f.op) {
            f = l[f.index];
            p(f);
            var g = new c(d, a);
            h.push({scope:g, methodInfo:f});
            s(f, b, g, h);
          }
        }
      }
      function m(a, b, c, h) {
        (a.isMethod() || a.isGetter() || a.isSetter()) && a.methodInfo.hasBody && (b.writeLn("// " + a), k(a.methodInfo, b, c, h, !1));
      }
      function d(a, b, c, h) {
        a.forEach(function(a) {
          m(a, b, c, h);
        });
      }
      function a(a, b, c, h) {
        k(a.init, b, c, h, !1);
        d(a.traits, b, c, h);
        k(a.instanceInfo.init, b, c, h, !1);
        d(a.instanceInfo.traits, b, c, h);
      }
      var c = b.AVM2.Runtime.Scope, n = b.AVM2.Runtime.canCompile, p = b.AVM2.Runtime.ensureFunctionIsInitialized, e = b.AVM2.Runtime.createCompiledFunction, q = b.AVM2.Runtime.LazyInitializer, l = !1;
      jsGlobal.objectConstantName = function(a) {
        if (a.hash) {
          return "$(" + a.hash + ")";
        }
        if (a instanceof q) {
          return a.getName();
        }
        l = !0;
      };
      g.compileAbc = function(a, b) {
        b.enter("{");
        b.enter("methods: {");
        for (var c = 0;c < a.scripts.length;c++) {
          f(a.scripts[c], b);
        }
        b.leave("}");
        b.leave("}");
      };
    })(k.Compiler || (k.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        function g(a) {
          var b = a.length, c = [], h;
          for (h = 0;h < b;++h) {
            c[h] = a.charAt(h);
          }
          return c;
        }
        function k(b) {
          if (null === b) {
            return "null";
          }
          if ("string" === typeof b) {
            var h, e, l, r, f = 0, q = 0, m = b;
            h = c[m];
            if (!h) {
              1024 === a && (c = Object.create(null), a = 0);
              h = "";
              "undefined" === typeof b[0] && (b = g(b));
              e = 0;
              for (l = b.length;e < l;++e) {
                r = b[e];
                if ("'" === r) {
                  ++f;
                } else {
                  if ('"' === r) {
                    ++q;
                  } else {
                    if (0 <= "\\\n\r\u2028\u2029".indexOf(r)) {
                      var x = "\\";
                      switch(r) {
                        case "\\":
                          x += "\\";
                          break;
                        case "\n":
                          x += "n";
                          break;
                        case "\r":
                          x += "r";
                          break;
                        case "\u2028":
                          x += "u2028";
                          break;
                        case "\u2029":
                          x += "u2029";
                          break;
                        default:
                          throw Error("Incorrectly classified character");;
                      }
                      h += x;
                      continue;
                    } else {
                      if (!(" " <= r && "~" >= r)) {
                        var x = b[e + 1], w = r.charCodeAt(0), u = w.toString(16), s = "\\";
                        switch(r) {
                          case "\b":
                            s += "b";
                            break;
                          case "\f":
                            s += "f";
                            break;
                          case "\t":
                            s += "t";
                            break;
                          default:
                            s = 255 < w ? s + ("u" + "0000".slice(u.length) + u) : "\x00" === r && 0 > "0123456789".indexOf(x) ? s + "0" : "\x0B" === r ? s + "x0B" : s + ("x" + "00".slice(u.length) + u);
                        }
                        h += s;
                        continue;
                      }
                    }
                  }
                }
                h += r;
              }
              b = h;
              h = '"';
              "undefined" === typeof b[0] && (b = g(b));
              e = 0;
              for (l = b.length;e < l;++e) {
                r = b[e], '"' === r && (h += "\\"), h += r;
              }
              h += '"';
              c[m] = h;
              a++;
            }
            return h;
          }
          if ("number" === typeof b) {
            if (b !== b) {
              throw Error("Numeric literal whose value is NaN");
            }
            if (0 > b || 0 === b && 0 > 1 / b) {
              throw Error("Numeric literal whose value is negative");
            }
            b === 1 / 0 ? b = "1e+400" : (e = p[b], e || (1024 === n && (p = Object.create(null), n = 0), e = "" + b, p[b] = e, n++), b = e);
            return b;
          }
          if ("boolean" === typeof b) {
            return b ? "true" : "false";
          }
          d(b);
        }
        function m(a, b, c) {
          for (var h = "", d = 0;d < a.length;d++) {
            h += a[d].toSource(b), c && d < a.length - 1 && (h += c);
          }
          return h;
        }
        var d = b.Debug.notImplemented, a = 0, c = Object.create(null), n = 0, p = Object.create(null), e = {"||":3, "&&":4, "|":5, "^":6, "&":7, "==":8, "!=":8, "===":8, "!==":8, is:8, isnt:8, "<":9, ">":9, "<=":9, ">=":9, "in":9, "instanceof":9, "<<":10, ">>":10, ">>>":10, "+":11, "-":11, "*":12, "%":12, "/":12}, q = function() {
          function a() {
          }
          a.prototype.toSource = function(a) {
            d(this.type);
            return "";
          };
          return a;
        }();
        f.Node = q;
        var l = function(a) {
          function b() {
            a.apply(this, arguments);
          }
          __extends(b, a);
          return b;
        }(q);
        f.Statement = l;
        var u = function(a) {
          function b() {
            a.apply(this, arguments);
          }
          __extends(b, a);
          return b;
        }(q);
        f.Expression = u;
        var w = function(a) {
          function b(c) {
            a.call(this);
            this.body = c;
          }
          __extends(b, a);
          return b;
        }(q);
        f.Program = w;
        var r = function(a) {
          function b() {
            a.apply(this, arguments);
          }
          __extends(b, a);
          return b;
        }(l);
        f.EmptyStatement = r;
        var h = function(a) {
          function b(c) {
            a.call(this);
            this.body = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "{\n" + m(this.body, a) + "}";
          };
          return b;
        }(l);
        f.BlockStatement = h;
        var x = function(a) {
          function b(c) {
            a.call(this);
            this.expression = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return this.expression.toSource(0) + ";\n";
          };
          return b;
        }(l);
        f.ExpressionStatement = x;
        var y = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.test = c;
            this.consequent = h;
            this.alternate = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            a = "if(" + this.test.toSource(0) + "){" + this.consequent.toSource(0) + "}";
            this.alternate && (a += "else{" + this.alternate.toSource(0) + "}");
            return a;
          };
          return b;
        }(l);
        f.IfStatement = y;
        var G = function(a) {
          function b(c, h) {
            a.call(this);
            this.label = c;
            this.body = h;
          }
          __extends(b, a);
          return b;
        }(l);
        f.LabeledStatement = G;
        var I = function(a) {
          function b(c) {
            a.call(this);
            this.label = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            a = "break";
            this.label && (a += " " + this.label.toSource(0));
            return a + ";";
          };
          return b;
        }(l);
        f.BreakStatement = I;
        var C = function(a) {
          function b(c) {
            a.call(this);
            this.label = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            a = "continue";
            this.label && (a += " " + this.label.toSource(0));
            return a + ";";
          };
          return b;
        }(l);
        f.ContinueStatement = C;
        var E = function(a) {
          function b(c, h) {
            a.call(this);
            this.object = c;
            this.body = h;
          }
          __extends(b, a);
          return b;
        }(l);
        f.WithStatement = E;
        var O = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.discriminant = c;
            this.cases = h;
            this.lexical = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "switch(" + this.discriminant.toSource(0) + "){" + m(this.cases, 0, ";") + "};";
          };
          return b;
        }(l);
        f.SwitchStatement = O;
        var K = function(a) {
          function b(c) {
            a.call(this);
            this.argument = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            a = "return ";
            this.argument && (a += this.argument.toSource(0));
            return a + ";\n";
          };
          return b;
        }(l);
        f.ReturnStatement = K;
        var F = function(a) {
          function b(c) {
            a.call(this);
            this.argument = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "throw " + this.argument.toSource(0) + ";\n";
          };
          return b;
        }(l);
        f.ThrowStatement = F;
        var J = function(a) {
          function b(c, h, d, e) {
            a.call(this);
            this.block = c;
            this.handlers = h;
            this.guardedHandlers = d;
            this.finalizer = e;
          }
          __extends(b, a);
          return b;
        }(l);
        f.TryStatement = J;
        var A = function(a) {
          function b(c, h) {
            a.call(this);
            this.test = c;
            this.body = h;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "while(" + this.test.toSource(0) + "){" + this.body.toSource(0) + "}";
          };
          return b;
        }(l);
        f.WhileStatement = A;
        var B = function(a) {
          function b(c, h) {
            a.call(this);
            this.body = c;
            this.test = h;
          }
          __extends(b, a);
          return b;
        }(l);
        f.DoWhileStatement = B;
        var z = function(a) {
          function b(c, h, d, e) {
            a.call(this);
            this.init = c;
            this.test = h;
            this.update = d;
            this.body = e;
          }
          __extends(b, a);
          return b;
        }(l);
        f.ForStatement = z;
        var P = function(a) {
          function b(c, h, d, e) {
            a.call(this);
            this.left = c;
            this.right = h;
            this.body = d;
            this.each = e;
          }
          __extends(b, a);
          return b;
        }(l);
        f.ForInStatement = P;
        var D = function(a) {
          function b() {
            a.apply(this, arguments);
          }
          __extends(b, a);
          return b;
        }(l);
        f.DebuggerStatement = D;
        var L = function(a) {
          function b() {
            a.apply(this, arguments);
          }
          __extends(b, a);
          return b;
        }(l);
        f.Declaration = L;
        var M = function(a) {
          function b(c, h, d, e, l, n, r) {
            a.call(this);
            this.id = c;
            this.params = h;
            this.defaults = d;
            this.rest = e;
            this.body = l;
            this.generator = n;
            this.expression = r;
          }
          __extends(b, a);
          return b;
        }(L);
        f.FunctionDeclaration = M;
        var V = function(a) {
          function b(c, h) {
            a.call(this);
            this.declarations = c;
            this.kind = h;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return this.kind + " " + m(this.declarations, a, ",") + ";\n";
          };
          return b;
        }(L);
        f.VariableDeclaration = V;
        var Q = function(a) {
          function b(c, h) {
            a.call(this);
            this.id = c;
            this.init = h;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            a = this.id.toSource(1);
            this.init && (a += "=" + this.init.toSource(1));
            return a;
          };
          return b;
        }(q);
        f.VariableDeclarator = Q;
        var U = function(a) {
          function b(c) {
            a.call(this);
            this.name = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return this.name;
          };
          return b;
        }(u);
        f.Identifier = U;
        var S = function(a) {
          function b(c) {
            a.call(this);
            this.value = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return k(this.value);
          };
          return b;
        }(u);
        f.Literal = S;
        var aa = function(a) {
          function b() {
            a.apply(this, arguments);
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "this";
          };
          return b;
        }(u);
        f.ThisExpression = aa;
        var $ = function(a) {
          function b(c) {
            a.call(this);
            this.elements = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "[" + m(this.elements, 1, ",") + "]";
          };
          return b;
        }(u);
        f.ArrayExpression = $;
        var ea = function(a) {
          function b(c) {
            a.call(this);
            this.properties = c;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "{" + m(this.properties, 0, ",") + "}";
          };
          return b;
        }(u);
        f.ObjectExpression = ea;
        var Z = function(a) {
          function b(c, h, d, e, l, n, r) {
            a.call(this);
            this.id = c;
            this.params = h;
            this.defaults = d;
            this.rest = e;
            this.body = l;
            this.generator = n;
            this.expression = r;
          }
          __extends(b, a);
          return b;
        }(u);
        f.FunctionExpression = Z;
        var v = function(a) {
          function b(c) {
            a.call(this);
            this.expressions = c;
          }
          __extends(b, a);
          return b;
        }(u);
        f.SequenceExpression = v;
        var X = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.operator = c;
            this.prefix = h;
            this.argument = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            var b = this.argument.toSource(13), b = this.prefix ? this.operator + b : b + this.operator, b = " " + b;
            return 13 < a ? "(" + b + ")" : b;
          };
          return b;
        }(u);
        f.UnaryExpression = X;
        var ba = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.operator = c;
            this.left = h;
            this.right = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            var b = e[this.operator], c = this.left.toSource(b) + this.operator + this.right.toSource(b + 1);
            return b < a ? "(" + c + ")" : c;
          };
          return b;
        }(u);
        f.BinaryExpression = ba;
        var R = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.operator = c;
            this.left = h;
            this.right = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            var b = this.left.toSource(1) + this.operator + this.right.toSource(1);
            return 1 < a ? "(" + b + ")" : b;
          };
          return b;
        }(u);
        f.AssignmentExpression = R;
        var H = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.operator = c;
            this.argument = h;
            this.prefix = d;
          }
          __extends(b, a);
          return b;
        }(u);
        f.UpdateExpression = H;
        var Y = function(a) {
          function b(c, h, d) {
            a.call(this, c, h, d);
          }
          __extends(b, a);
          return b;
        }(ba);
        f.LogicalExpression = Y;
        var ga = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.test = c;
            this.consequent = h;
            this.alternate = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return this.test.toSource(3) + "?" + this.consequent.toSource(1) + ":" + this.alternate.toSource(1);
          };
          return b;
        }(u);
        f.ConditionalExpression = ga;
        var ca = function(a) {
          function b(c, h) {
            a.call(this);
            this.callee = c;
            this.arguments = h;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return "new " + this.callee.toSource(a) + "(" + m(this.arguments, a, ",") + ")";
          };
          return b;
        }(u);
        f.NewExpression = ca;
        var ka = function(a) {
          function b(c, h) {
            a.call(this);
            this.callee = c;
            this.arguments = h;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return this.callee.toSource(a) + "(" + m(this.arguments, a, ",") + ")";
          };
          return b;
        }(u);
        f.CallExpression = ka;
        var W = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.object = c;
            this.property = h;
            this.computed = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            var b = this.object.toSource(15);
            this.object instanceof S && (b = "(" + b + ")");
            var c = this.property.toSource(0), b = this.computed ? b + ("[" + c + "]") : b + ("." + c);
            return 17 < a ? "(" + b + ")" : b;
          };
          return b;
        }(u);
        f.MemberExpression = W;
        var ha = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.key = c;
            this.value = h;
            this.kind = d;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return this.key.toSource(a) + ":" + this.value.toSource(a);
          };
          return b;
        }(q);
        f.Property = ha;
        var da = function(a) {
          function b(c, h) {
            a.call(this);
            this.test = c;
            this.consequent = h;
          }
          __extends(b, a);
          b.prototype.toSource = function(a) {
            return(this.test ? "case " + this.test.toSource(a) : "default") + ": " + m(this.consequent, a, ";");
          };
          return b;
        }(q);
        f.SwitchCase = da;
        var ja = function(a) {
          function b(c, h, d) {
            a.call(this);
            this.param = c;
            this.guard = h;
            this.body = d;
          }
          __extends(b, a);
          return b;
        }(q);
        f.CatchClause = ja;
        q.prototype.type = "Node";
        w.prototype.type = "Program";
        l.prototype.type = "Statement";
        r.prototype.type = "EmptyStatement";
        h.prototype.type = "BlockStatement";
        x.prototype.type = "ExpressionStatement";
        y.prototype.type = "IfStatement";
        G.prototype.type = "LabeledStatement";
        I.prototype.type = "BreakStatement";
        C.prototype.type = "ContinueStatement";
        E.prototype.type = "WithStatement";
        O.prototype.type = "SwitchStatement";
        K.prototype.type = "ReturnStatement";
        F.prototype.type = "ThrowStatement";
        J.prototype.type = "TryStatement";
        A.prototype.type = "WhileStatement";
        B.prototype.type = "DoWhileStatement";
        z.prototype.type = "ForStatement";
        P.prototype.type = "ForInStatement";
        D.prototype.type = "DebuggerStatement";
        L.prototype.type = "Declaration";
        M.prototype.type = "FunctionDeclaration";
        V.prototype.type = "VariableDeclaration";
        Q.prototype.type = "VariableDeclarator";
        u.prototype.type = "Expression";
        U.prototype.type = "Identifier";
        S.prototype.type = "Literal";
        aa.prototype.type = "ThisExpression";
        $.prototype.type = "ArrayExpression";
        ea.prototype.type = "ObjectExpression";
        Z.prototype.type = "FunctionExpression";
        v.prototype.type = "SequenceExpression";
        X.prototype.type = "UnaryExpression";
        ba.prototype.type = "BinaryExpression";
        R.prototype.type = "AssignmentExpression";
        H.prototype.type = "UpdateExpression";
        Y.prototype.type = "LogicalExpression";
        ga.prototype.type = "ConditionalExpression";
        ca.prototype.type = "NewExpression";
        ka.prototype.type = "CallExpression";
        W.prototype.type = "MemberExpression";
        ha.prototype.type = "Property";
        da.prototype.type = "SwitchCase";
        ja.prototype.type = "CatchClause";
      })(g.AST || (g.AST = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        var g = function(b) {
          function d(a, c, d) {
            b.call(this);
            this.parent = a;
            this.object = c;
            this.isWith = d;
          }
          __extends(d, b);
          d.prototype.visitInputs = function(a) {
            a(this.parent);
            a(this.object);
          };
          return d;
        }(b.Value);
        b.ASScope = g;
        g.prototype.nodeName = "ASScope";
        g = function(b) {
          function d(a, c, d) {
            b.call(this);
            this.namespaces = a;
            this.name = c;
            this.flags = d;
          }
          __extends(d, b);
          d.prototype.visitInputs = function(a) {
            a(this.namespaces);
            a(this.name);
          };
          return d;
        }(b.Value);
        b.ASMultiname = g;
        g.prototype.mustFloat = !0;
        g.prototype.nodeName = "ASMultiname";
        g = function(b) {
          function d(a, c, d, f, e, g, l) {
            b.call(this, a, c, d, f, e, g);
            this.isLex = l;
          }
          __extends(d, b);
          return d;
        }(b.CallProperty);
        b.ASCallProperty = g;
        g.prototype.nodeName = "ASCallProperty";
        g = function(b) {
          function d(a, c, d, f, e, g, l) {
            b.call(this, a, c, d, f, e, g);
            this.scope = l;
          }
          __extends(d, b);
          d.prototype.visitInputs = function(a) {
            b.prototype.visitInputs.call(this, a);
            a(this.scope);
          };
          return d;
        }(b.CallProperty);
        b.ASCallSuper = g;
        g.prototype.nodeName = "ASCallSuper";
        g = function(b) {
          function d(a, c, d, f) {
            b.call(this, a, c, d, f);
          }
          __extends(d, b);
          return d;
        }(b.New);
        b.ASNew = g;
        g.prototype.nodeName = "ASNew";
        g = function(b) {
          function d(a, c, d, f, e) {
            b.call(this, a, c, d, f);
            this.flags = e;
          }
          __extends(d, b);
          return d;
        }(b.GetProperty);
        b.ASGetProperty = g;
        g.prototype.nodeName = "ASGetProperty";
        g = function(b) {
          function d(a, c, d, f) {
            b.call(this, a, c, d, f);
          }
          __extends(d, b);
          return d;
        }(b.GetProperty);
        b.ASGetDescendants = g;
        g.prototype.nodeName = "ASGetDescendants";
        g = function(b) {
          function d(a, c, d, f) {
            b.call(this, a, c, d, f);
          }
          __extends(d, b);
          return d;
        }(b.GetProperty);
        b.ASHasProperty = g;
        g.prototype.nodeName = "ASHasProperty";
        g = function(b) {
          function d(a, c, d, f) {
            b.call(this, a, c, d, f);
          }
          __extends(d, b);
          return d;
        }(b.GetProperty);
        b.ASGetSlot = g;
        g.prototype.nodeName = "ASGetSlot";
        g = function(b) {
          function d(a, c, d, f, e) {
            b.call(this, a, c, d, f);
            this.scope = e;
          }
          __extends(d, b);
          d.prototype.visitInputs = function(a) {
            b.prototype.visitInputs.call(this, a);
            a(this.scope);
          };
          return d;
        }(b.GetProperty);
        b.ASGetSuper = g;
        g.prototype.nodeName = "ASGetSuper";
        g = function(b) {
          function d(a, c, d, f, e, g) {
            b.call(this, a, c, d, f, e);
            this.flags = g;
          }
          __extends(d, b);
          return d;
        }(b.SetProperty);
        b.ASSetProperty = g;
        g.prototype.nodeName = "ASSetProperty";
        g = function(b) {
          function d(a, c, d, f, e) {
            b.call(this, a, c, d, f, e);
          }
          __extends(d, b);
          return d;
        }(b.SetProperty);
        b.ASSetSlot = g;
        g.prototype.nodeName = "ASSetSlot";
        g = function(b) {
          function d(a, c, d, f, e, g) {
            b.call(this, a, c, d, f, e);
            this.scope = g;
          }
          __extends(d, b);
          d.prototype.visitInputs = function(a) {
            b.prototype.visitInputs.call(this, a);
            a(this.scope);
          };
          return d;
        }(b.SetProperty);
        b.ASSetSuper = g;
        g.prototype.nodeName = "ASSetSuper";
        g = function(b) {
          function d(a, c, d, f) {
            b.call(this, a, c, d, f);
          }
          __extends(d, b);
          return d;
        }(b.DeleteProperty);
        b.ASDeleteProperty = g;
        g.prototype.nodeName = "ASDeleteProperty";
        g = function(b) {
          function d(a, c, d, f, e, g) {
            b.call(this, a, c);
            this.scope = d;
            this.name = f;
            this.methodInfo = e;
            this.strict = g;
          }
          __extends(d, b);
          d.prototype.visitInputs = function(a) {
            b.prototype.visitInputs.call(this, a);
            a(this.scope);
            a(this.name);
          };
          return d;
        }(b.StoreDependent);
        b.ASFindProperty = g;
        g.prototype.nodeName = "ASFindProperty";
        g = function(b) {
          function d(a, c) {
            b.call(this);
            this.control = a;
            this.scope = c;
          }
          __extends(d, b);
          d.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            a(this.scope);
          };
          return d;
        }(b.Value);
        b.ASGlobal = g;
        g.prototype.nodeName = "ASGlobal";
        g = function(b) {
          function d(a) {
            b.call(this);
            this.methodInfo = a;
          }
          __extends(d, b);
          return d;
        }(b.Value);
        b.ASNewActivation = g;
        g.prototype.nodeName = "ASNewActivation";
        var k = function(b) {
          function d() {
            b.call(this);
          }
          __extends(d, b);
          return d;
        }(b.Value);
        b.ASNewHasNext2 = k;
        g.prototype.nodeName = "ASNewHasNext2";
      })(b.IR || (b.IR = {}));
    })(b.Compiler || (b.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        var g = b.ArrayUtilities.top, s = b.ArrayUtilities.peek, m = b.Debug.assert;
        (function(a) {
          (function(a) {
            a[a.SEQ = 1] = "SEQ";
            a[a.LOOP = 2] = "LOOP";
            a[a.IF = 3] = "IF";
            a[a.CASE = 4] = "CASE";
            a[a.SWITCH = 5] = "SWITCH";
            a[a.LABEL_CASE = 6] = "LABEL_CASE";
            a[a.LABEL_SWITCH = 7] = "LABEL_SWITCH";
            a[a.EXIT = 8] = "EXIT";
            a[a.BREAK = 9] = "BREAK";
            a[a.CONTINUE = 10] = "CONTINUE";
            a[a.TRY = 11] = "TRY";
            a[a.CATCH = 12] = "CATCH";
          })(a.Kind || (a.Kind = {}));
          var b = function() {
            return function(a) {
              this.kind = a;
            };
          }();
          a.ControlNode = b;
          var c = function(a) {
            function b(c) {
              a.call(this, 1);
              this.body = c;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              for (var b = this.body, c = 0, d = b.length;c < d;c++) {
                b[c].trace(a);
              }
            };
            b.prototype.first = function() {
              return this.body[0];
            };
            b.prototype.slice = function(a, c) {
              return new b(this.body.slice(a, c));
            };
            return b;
          }(b);
          a.Seq = c;
          c = function(a) {
            function b(c) {
              a.call(this, 2);
              this.body = c;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              a.enter("loop {");
              this.body.trace(a);
              a.leave("}");
            };
            return b;
          }(b);
          a.Loop = c;
          c = function(a) {
            function b(c, d, e, l) {
              a.call(this, 3);
              this.cond = c;
              this.then = d;
              this.nothingThrownLabel = l;
              this.negated = !1;
              this.else = e;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              this.cond.trace(a);
              this.nothingThrownLabel && a.enter("if (label is " + this.nothingThrownLabel + ") {");
              a.enter("if" + (this.negated ? " not" : "") + " {");
              this.then && this.then.trace(a);
              this.else && (a.outdent(), a.enter("} else {"), this.else.trace(a));
              a.leave("}");
              this.nothingThrownLabel && a.leave("}");
            };
            return b;
          }(b);
          a.If = c;
          c = function(a) {
            function b(c, d) {
              a.call(this, 4);
              this.index = c;
              this.body = d;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              0 <= this.index ? a.writeLn("case " + this.index + ":") : a.writeLn("default:");
              a.indent();
              this.body && this.body.trace(a);
              a.outdent();
            };
            return b;
          }(b);
          a.Case = c;
          c = function(a) {
            function b(c, d, e) {
              a.call(this, 5);
              this.determinant = c;
              this.cases = d;
              this.nothingThrownLabel = e;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              this.nothingThrownLabel && a.enter("if (label is " + this.nothingThrownLabel + ") {");
              this.determinant.trace(a);
              a.writeLn("switch {");
              for (var b = 0, c = this.cases.length;b < c;b++) {
                this.cases[b].trace(a);
              }
              a.writeLn("}");
              this.nothingThrownLabel && a.leave("}");
            };
            return b;
          }(b);
          a.Switch = c;
          c = function(a) {
            function b(c, d) {
              a.call(this, 6);
              this.labels = c;
              this.body = d;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              a.enter("if (label is " + this.labels.join(" or ") + ") {");
              this.body && this.body.trace(a);
              a.leave("}");
            };
            return b;
          }(b);
          a.LabelCase = c;
          c = function(a) {
            function b(c) {
              a.call(this, 7);
              this.cases = c;
              for (var d = {}, e = 0, l = c.length;e < l;e++) {
                for (var n = c[e], r = 0, f = n.labels.length;r < f;r++) {
                  d[n.labels[r]] = n;
                }
              }
              this.labelMap = d;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              for (var b = 0, c = this.cases.length;b < c;b++) {
                this.cases[b].trace(a);
              }
            };
            return b;
          }(b);
          a.LabelSwitch = c;
          c = function(a) {
            function b(c) {
              a.call(this, 8);
              this.label = c;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              a.writeLn("label = " + this.label);
            };
            return b;
          }(b);
          a.Exit = c;
          c = function(a) {
            function b(c, d) {
              a.call(this, 9);
              this.label = c;
              this.head = d;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              this.label && a.writeLn("label = " + this.label);
              a.writeLn("break");
            };
            return b;
          }(b);
          a.Break = c;
          c = function(a) {
            function b(c, d) {
              a.call(this, 10);
              this.label = c;
              this.head = d;
              this.necessary = !0;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              this.label && a.writeLn("label = " + this.label);
              this.necessary && a.writeLn("continue");
            };
            return b;
          }(b);
          a.Continue = c;
          c = function(a) {
            function b(c, d) {
              a.call(this, 11);
              this.body = c;
              this.catches = d;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              a.enter("try {");
              this.body.trace(a);
              a.writeLn("label = " + this.nothingThrownLabel);
              for (var b = 0, c = this.catches.length;b < c;b++) {
                this.catches[b].trace(a);
              }
              a.leave("}");
            };
            return b;
          }(b);
          a.Try = c;
          b = function(a) {
            function b(c, d, e) {
              a.call(this, 12);
              this.varName = c;
              this.typeName = d;
              this.body = e;
            }
            __extends(b, a);
            b.prototype.trace = function(a) {
              a.outdent();
              a.enter("} catch (" + (this.varName || "e") + (this.typeName ? " : " + this.typeName : "") + ") {");
              this.body.trace(a);
            };
            return b;
          }(b);
          a.Catch = b;
        })(f.Control || (f.Control = {}));
        var d = f.Control, a = b.BitSets.BITS_PER_WORD, c = b.BitSets.ADDRESS_BITS_PER_WORD, n = b.BitSets.BIT_INDEX_MASK, p = function(b) {
          function d(a, c) {
            b.call(this, a);
            this.blockById = c;
          }
          __extends(d, b);
          d.prototype.forEachBlock = function(b) {
            m(b);
            for (var c = this.blockById, d = this.bits, h = 0, e = d.length;h < e;h++) {
              var l = d[h];
              if (l) {
                for (var n = 0;n < a;n++) {
                  l & 1 << n && b(c[h * a + n]);
                }
              }
            }
          };
          d.prototype.choose = function() {
            for (var b = this.blockById, c = this.bits, d = 0, h = c.length;d < h;d++) {
              var e = c[d];
              if (e) {
                for (var l = 0;l < a;l++) {
                  if (e & 1 << l) {
                    return b[d * a + l];
                  }
                }
              }
            }
          };
          d.prototype.members = function() {
            for (var b = this.blockById, c = [], d = this.bits, h = 0, e = d.length;h < e;h++) {
              var l = d[h];
              if (l) {
                for (var n = 0;n < a;n++) {
                  l & 1 << n && c.push(b[h * a + n]);
                }
              }
            }
            return c;
          };
          d.prototype.setBlocks = function(a) {
            for (var b = this.bits, d = 0, h = a.length;d < h;d++) {
              var e = a[d].id;
              b[e >> c] |= 1 << (e & n);
            }
          };
          return d;
        }(b.BitSets.Uint32ArrayBitSet);
        f.BlockSet = p;
        var e = function() {
          function a(b) {
            this.makeBlockSetFactory(b.blocks.length, b.blocks);
            this.hasExceptions = !1;
            this.normalizeReachableBlocks(b.root);
          }
          a.prototype.makeBlockSetFactory = function(a, b) {
            m(!this.boundBlockSet);
            this.boundBlockSet = function() {
              return new p(a, b);
            };
          };
          a.prototype.normalizeReachableBlocks = function(a) {
            m(0 === a.predecessors.length);
            var b = this.boundBlockSet, c = [], d = {}, h = {}, e = [a];
            for (h[a.id] = !0;a = g(e);) {
              if (d[a.id]) {
                1 === d[a.id] && (d[a.id] = 2, c.push(a)), h[a.id] = !1, e.pop();
              } else {
                d[a.id] = 1;
                h[a.id] = !0;
                for (var n = a.successors, f = 0, p = n.length;f < p;f++) {
                  var q = n[f];
                  h[q.id] && (a.spbacks || (a.spbacks = new b), a.spbacks.set(q.id));
                  !d[q.id] && e.push(q);
                }
              }
            }
            this.blocks = c.reverse();
          };
          a.prototype.computeDominance = function() {
            var a = this.blocks, b = a.length, c = Array(b);
            c[0] = 0;
            for (var d = [], h = 0;h < b;h++) {
              d[a[h].id] = h, a[h].dominatees = [];
            }
            for (var e = !0;e;) {
              for (e = !1, h = 1;h < b;h++) {
                var n = a[h].predecessors, f = n.length, g = d[n[0].id];
                if (!(g in c)) {
                  for (var p = 1;p < f && !(g = d[n[p].id], g in c);p++) {
                  }
                }
                m(g in c);
                for (p = 0;p < f;p++) {
                  var q = d[n[p].id];
                  if (q !== g && q in c) {
                    for (;q !== g;) {
                      for (;q > g;) {
                        q = c[q];
                      }
                      for (;g > q;) {
                        g = c[g];
                      }
                    }
                    g = q;
                  }
                }
                c[h] !== g && (c[h] = g, e = !0);
              }
            }
            a[0].dominator = a[0];
            for (h = 1;h < b;h++) {
              d = a[h], p = a[c[h]], d.dominator = p, p.dominatees.push(d), d.npredecessors = d.predecessors.length;
            }
            b = [a[0]];
            for (a[0].level || (a[0].level = 0);d = b.shift();) {
              a = d.dominatees;
              for (p = 0;p < a.length;p++) {
                a[p].level = d.level + 1;
              }
              b.push.apply(b, a);
            }
          };
          a.prototype.computeFrontiers = function() {
            for (var a = this.boundBlockSet, b = this.blocks, c = 0, d = b.length;c < d;c++) {
              b[c].frontier = new a;
            }
            c = 1;
            for (d = b.length;c < d;c++) {
              var a = b[c], h = a.predecessors;
              if (2 <= h.length) {
                for (var e = a.dominator, n = 0, f = h.length;n < f;n++) {
                  for (var g = h[n];g !== e;) {
                    g.frontier.set(a.id), g = g.dominator;
                  }
                }
              }
            }
          };
          a.prototype.analyzeControlFlow = function() {
            this.computeDominance();
            return this.analyzedControlFlow = !0;
          };
          a.prototype.markLoops = function() {
            function a(b) {
              var c = 1, h = {}, d = {}, e = [], l = [], n = [], f = b.level + 1;
              b = [b];
              for (var r, p;r = g(b);) {
                if (h[r.id]) {
                  if (s(l) === r) {
                    l.pop();
                    var q = [];
                    do {
                      p = e.pop(), d[p.id] = !0, q.push(p);
                    } while (p !== r);
                    (1 < q.length || p.spbacks && p.spbacks.get(p.id)) && n.push(q);
                  }
                  b.pop();
                } else {
                  h[r.id] = c++;
                  e.push(r);
                  l.push(r);
                  p = r.successors;
                  for (var q = 0, m = p.length;q < m;q++) {
                    if (r = p[q], !(r.level < f)) {
                      var x = r.id;
                      if (!h[x]) {
                        b.push(r);
                      } else {
                        if (!d[x]) {
                          for (;h[s(l).id] > h[x];) {
                            l.pop();
                          }
                        }
                      }
                    }
                  }
                }
              }
              return n;
            }
            function b(a, h) {
              var d = new c;
              d.setBlocks(a);
              d.recount();
              this.id = h;
              this.body = d;
              this.exit = new c;
              this.save = {};
              this.head = new c;
              this.npredecessors = 0;
            }
            if (!this.analyzedControlFlow && !this.analyzeControlFlow()) {
              return!1;
            }
            var c = this.boundBlockSet, d = function(a) {
              for (var b = new c, h = 0, d = a.length;h < d;h++) {
                var e = a[h], l = e.spbacks;
                if (l) {
                  for (var e = e.successors, n = 0, f = e.length;n < f;n++) {
                    var r = e[n];
                    l.get(r.id) && b.set(r.dominator.id);
                  }
                }
              }
              return b.members();
            }(this.blocks);
            if (0 >= d.length) {
              return this.markedLoops = !0;
            }
            for (var d = d.sort(function(a, b) {
              return a.level - b.level;
            }), h = 0, e = d.length - 1;0 <= e;e--) {
              var n = d[e], f = a(n);
              if (0 !== f.length) {
                for (var p = 0, q = f.length;p < q;p++) {
                  for (var m = f[p], k = new b(m, h++), K = 0, F = m.length;K < F;K++) {
                    var J = m[K];
                    if (J.level === n.level + 1 && !J.loop) {
                      J.loop = k;
                      k.head.set(J.id);
                      for (var A = J.predecessors, B = 0, z = A.length;B < z;B++) {
                        k.body.get(A[B].id) && J.npredecessors--;
                      }
                      k.npredecessors += J.npredecessors;
                    }
                  }
                  K = 0;
                  for (F = m.length;K < F;K++) {
                    J = m[K], J.level === n.level + 1 && (J.npredecessors = k.npredecessors);
                  }
                  k.head.recount();
                }
              }
            }
            return this.markedLoops = !0;
          };
          a.prototype.induceControlTree = function() {
            function a(b, c) {
              b.recount();
              if (0 === b.count) {
                return null;
              }
              b.save = c;
              return b;
            }
            function b(n, f, p, q, m, k, s) {
              for (var K = [];n;) {
                if (1 < n.count) {
                  for (var F = new e, J = {}, A = [], B = n.members(), z = 0, P = B.length;z < P;z++) {
                    var D = B[z], L = D.id, M;
                    if (D.loop && n.contains(D.loop.head)) {
                      var V = D.loop;
                      if (!V.induced) {
                        for (var Q = V.head.members(), U = 0, S = 0, aa = Q.length;S < aa;S++) {
                          U += n.save[Q[S].id];
                        }
                        if (0 < D.npredecessors - U) {
                          D.npredecessors -= n.save[L], D.save = n.save[L], M = b(D, F, J, q), A.push(new d.LabelCase([L], M));
                        } else {
                          S = 0;
                          for (aa = Q.length;S < aa;S++) {
                            M = Q[S], M.npredecessors -= U, M.save = U;
                          }
                          M = b(D, F, J, q);
                          A.push(new d.LabelCase(V.head.toArray(), M));
                          V.induced = !0;
                        }
                      }
                    } else {
                      D.npredecessors -= n.save[L], D.save = n.save[L], M = b(D, F, J, q), A.push(new d.LabelCase([L], M));
                    }
                  }
                  for (var D = [], S = 0, z = 0;z < A.length;z++) {
                    M = A[z];
                    P = M.labels;
                    Q = aa = 0;
                    for (V = P.length;Q < V;Q++) {
                      L = P[Q], F.get(L) && 0 < B[z].npredecessors - n.save[L] ? D.push(L) : P[aa++] = L;
                    }
                    P.length = aa;
                    0 < P.length && (A[S++] = M);
                  }
                  A.length = S;
                  if (0 === A.length) {
                    for (z = 0;z < D.length;z++) {
                      L = D[z], p[L] = (p[L] || 0) + n.save[L], f.set(L);
                    }
                    break;
                  }
                  K.push(new d.LabelSwitch(A));
                  n = a(F, J);
                } else {
                  1 === n.count ? (D = n.choose(), L = D.id, D.npredecessors -= n.save[L], D.save = n.save[L]) : (D = n, L = D.id);
                  if (m) {
                    m = !1;
                  } else {
                    if (q && !q.body.get(L)) {
                      D.npredecessors += D.save;
                      q.exit.set(L);
                      q.save[L] = (q.save[L] || 0) + D.save;
                      K.push(new d.Break(L, q));
                      break;
                    }
                    if (q && D.loop === q) {
                      D.npredecessors += D.save;
                      K.push(new d.Continue(L, q));
                      break;
                    }
                    if (D === s) {
                      break;
                    }
                    if (0 < D.npredecessors) {
                      D.npredecessors += D.save;
                      p[L] = (p[L] || 0) + D.save;
                      f.set(L);
                      K.push(k ? new d.Break(L, k) : new d.Exit(L));
                      break;
                    }
                    if (D.loop) {
                      var aa = D.loop;
                      if (1 === aa.head.count) {
                        F = b(aa.head.choose(), null, null, aa, !0);
                      } else {
                        F = [];
                        Q = aa.head.members();
                        z = 0;
                        for (P = Q.length;z < P;z++) {
                          M = Q[z], J = M.id, M = b(M, null, null, aa, !0), F.push(new d.LabelCase([J], M));
                        }
                        F = new d.LabelSwitch(F);
                      }
                      K.push(new d.Loop(F));
                      n = a(aa.exit, aa.save);
                      continue;
                    }
                  }
                  F = new e;
                  J = {};
                  if (c && D.hasCatches) {
                    M = D.successors;
                    A = [];
                    n = [];
                    z = 0;
                    for (P = M.length;z < P;z++) {
                      B = M[z], (B.exception ? A : n).push(B);
                    }
                    P = [];
                    for (z = 0;z < A.length;z++) {
                      B = A[z], B.npredecessors -= 1, B.save = 1, M = b(B, F, J, q), B = B.exception, P.push(new d.Catch(B.varName, B.typeName, M));
                    }
                    P = new d.Try(D, P);
                  } else {
                    n = D.successors, P = D;
                  }
                  if (2 < n.length) {
                    A = [];
                    for (z = n.length - 1;0 <= z;z--) {
                      B = n[z], B.npredecessors -= 1, B.save = 1, M = b(B, F, J, q, null, D, n[z + 1]), A.unshift(new d.Case(z, M));
                    }
                    g(A).index = void 0;
                    c && D.hasCatches ? (P.nothingThrownLabel = h, P = new d.Switch(P, A, h++)) : P = new d.Switch(P, A);
                    n = a(F, J);
                  } else {
                    2 === n.length ? (z = D.hasFlippedSuccessors ? n[1] : n[0], M = D.hasFlippedSuccessors ? n[0] : n[1], z.npredecessors -= 1, z.save = 1, z = b(z, F, J, q), M.npredecessors -= 1, M.save = 1, M = b(M, F, J, q), c && D.hasCatches ? (P.nothingThrownLabel = h, P = new d.If(P, z, M, h++)) : P = new d.If(P, z, M), n = a(F, J)) : (M = n[0]) ? c && D.hasCatches ? (P.nothingThrownLabel = M.id, J[M.id] = (J[M.id] || 0) + 1, F.set(M.id), n = a(F, J)) : (M.npredecessors -= 1, M.save = 1, n = 
                    M) : c && D.hasCatches ? (P.nothingThrownLabel = -1, n = a(F, J)) : n = M;
                  }
                  K.push(P);
                }
              }
              return 1 < K.length ? new d.Seq(K) : K[0];
            }
            var c = this.hasExceptions, e = this.boundBlockSet, h = this.blocks.length;
            this.controlTree = b(this.blocks[0], new e, {});
          };
          a.prototype.restructureControlFlow = function() {
            k.enterTimeline("Restructure Control Flow");
            if (this.markedLoops || this.markLoops()) {
              this.induceControlTree(), this.restructuredControlFlow = !0;
            }
            k.leaveTimeline();
          };
          return a;
        }();
        f.Analysis = e;
        f.analyze = function(a) {
          a = new e(a);
          a.restructureControlFlow();
          return a.controlTree;
        };
      })(g.Looper || (g.Looper = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        function t(c, h) {
          if ("string" === typeof c || null === c || !0 === c || !1 === c) {
            return new y(c);
          }
          if (void 0 === c) {
            return new G("undefined");
          }
          if ("object" === typeof c || "function" === typeof c) {
            return c instanceof b.AVM2.Runtime.LazyInitializer ? a(d(ka, "C"), [new y(h.useConstant(c))]) : new E(W, new y(h.useConstant(c)), !0);
          }
          if ("number" === typeof c && isNaN(c)) {
            return new G("NaN");
          }
          if (Infinity === c) {
            return new G("Infinity");
          }
          if (-Infinity === c) {
            return new D("-", !0, new G("Infinity"));
          }
          if ("number" === typeof c && 0 > 1 / c) {
            return new D("-", !0, new y(Math.abs(c)));
          }
          if ("number" === typeof c) {
            return new y(c);
          }
          r("Cannot emit constant for value: " + c);
        }
        function s(a) {
          w("string" === typeof a);
          return new G(a);
        }
        function m(a) {
          var b = a[0];
          if (!("$" === b || "_" === b || "\\" === b || "a" <= b && "z" >= b || "A" <= b && "Z" >= b)) {
            return!1;
          }
          for (b = 1;b < a.length;b++) {
            var c = a[b];
            if (!("$" === c || "_" === c || "\\" === c || "a" <= c && "z" >= c || "A" <= c && "Z" >= c || "0" <= c && "9" >= c)) {
              return!1;
            }
          }
          return!0;
        }
        function d(a) {
          for (var b = [], c = 0;c < arguments.length - 1;c++) {
            b[c] = arguments[c + 1];
          }
          for (c = 0;c < b.length;c++) {
            var h = b[c];
            a = "string" === typeof h ? m(h) ? new E(a, new G(h), !1) : new E(a, new y(h), !0) : h instanceof y && m(h.value) ? new E(a, new G(h.value), !1) : new E(a, h, !0);
          }
          return a;
        }
        function a(a, b) {
          w(b instanceof Array);
          b.forEach(function(a) {
            w(!(a instanceof Array));
            w(void 0 !== a);
          });
          return new K(a, b);
        }
        function c(b, c, h) {
          return a(d(b, "asCall"), [c].concat(h));
        }
        function n(b, c, h) {
          return a(d(b, "call"), [c].concat(h));
        }
        function p(a, b) {
          w(a && b);
          return new F("=", a, b);
        }
        function e(a) {
          return new I(a, "var");
        }
        function q(a, b, c) {
          w(a);
          w(a.compile, "Implement |compile| for " + a + " (" + a.nodeName + ")");
          w(b instanceof ha);
          w(!(a instanceof Array));
          if (c || !a.variable) {
            return a.compile(b);
          }
          w(a.variable, "Value has no variable: " + a);
          return s(a.variable.name);
        }
        function l(a, b) {
          return[q(a.namespaces, b), q(a.name, b), t(a.flags)];
        }
        function u(a, b) {
          w(a instanceof Array);
          return a.map(function(a) {
            return q(a, b);
          });
        }
        var w = b.Debug.assert, r = b.Debug.unexpected, h = b.Debug.notImplemented, x = b.ArrayUtilities.pushUnique, y = g.AST.Literal, G = g.AST.Identifier, I = g.AST.VariableDeclaration, C = g.AST.VariableDeclarator, E = g.AST.MemberExpression, O = g.AST.BinaryExpression, K = g.AST.CallExpression, F = g.AST.AssignmentExpression, J = g.AST.ExpressionStatement, A = g.AST.ReturnStatement, B = g.AST.ConditionalExpression, z = g.AST.ObjectExpression, P = g.AST.ArrayExpression, D = g.AST.UnaryExpression, 
        L = g.AST.NewExpression, M = g.AST.Property, V = g.AST.BlockStatement, Q = g.AST.ThisExpression, U = g.AST.ThrowStatement, S = g.AST.IfStatement, aa = g.AST.WhileStatement, $ = g.AST.BreakStatement, ea = g.AST.ContinueStatement, Z = g.AST.SwitchStatement, v = g.AST.SwitchCase, X = g.IR.Start, ba = g.IR.Variable, R = g.IR.Constant, H = g.IR.Operator, Y = b.AVM2.Compiler.Looper, ga = Y.Control, ca = b.ArrayUtilities.last;
        ga.Break.prototype.compile = function(a) {
          return a.compileBreak(this);
        };
        ga.Continue.prototype.compile = function(a) {
          return a.compileContinue(this);
        };
        ga.Exit.prototype.compile = function(a) {
          return a.compileExit(this);
        };
        ga.LabelSwitch.prototype.compile = function(a) {
          return a.compileLabelSwitch(this);
        };
        ga.Seq.prototype.compile = function(a) {
          return a.compileSequence(this);
        };
        ga.Loop.prototype.compile = function(a) {
          return a.compileLoop(this);
        };
        ga.Switch.prototype.compile = function(a) {
          return a.compileSwitch(this);
        };
        ga.If.prototype.compile = function(a) {
          return a.compileIf(this);
        };
        ga.Try.prototype.compile = function(a) {
          h("try");
          return null;
        };
        var ka = new G("$F"), W = new G("$C"), ha = function() {
          function a() {
            this.label = new ba("$L");
            this.variables = [];
            this.constants = [];
            this.parameters = [];
          }
          a.prototype.useConstant = function(a) {
            return x(this.constants, a);
          };
          a.prototype.useVariable = function(a) {
            w(a);
            x(this.variables, a);
          };
          a.prototype.useParameter = function(a) {
            this.parameters[a.index] = a;
          };
          a.prototype.compileLabelBody = function(a) {
            var b = [];
            void 0 !== a.label && (this.useVariable(this.label), b.push(new J(p(s(this.label.name), new y(a.label)))));
            return b;
          };
          a.prototype.compileBreak = function(a) {
            a = this.compileLabelBody(a);
            a.push(new $(null));
            return new V(a);
          };
          a.prototype.compileContinue = function(a) {
            a = this.compileLabelBody(a);
            a.push(new ea(null));
            return new V(a);
          };
          a.prototype.compileExit = function(a) {
            return new V(this.compileLabelBody(a));
          };
          a.prototype.compileIf = function(a) {
            var b = a.cond.compile(this), c = null, h = null;
            a.then && (c = a.then.compile(this));
            a.else && (h = a.else.compile(this));
            var d = q(b.end.predicate, this);
            if (a.negated) {
              a: {
                a = d;
                if (a instanceof R) {
                  if (!0 === a.value || !1 === a.value) {
                    a = t(!a.value);
                    break a;
                  }
                } else {
                  if (a instanceof G) {
                    a = new D(H.FALSE.name, !0, a);
                    break a;
                  }
                }
                w(a instanceof O || a instanceof D, a);
                var d = a instanceof O ? a.left : a.argument, e = a.right, l = H.fromName(a.operator);
                a = l === H.EQ && e instanceof y && !1 === e.value || l === H.FALSE ? d : l.not ? a instanceof O ? new O(l.not.name, d, e) : new D(l.not.name, !0, d) : new D(H.FALSE.name, !0, a);
              }
            } else {
              a = d;
            }
            b.body.push(new S(a, c || new V([]), h || null));
            return b;
          };
          a.prototype.compileSwitch = function(a) {
            var b = a.determinant.compile(this), c = [];
            a.cases.forEach(function(a) {
              var b;
              a.body && (b = a.body.compile(this));
              a = "number" === typeof a.index ? new y(a.index) : void 0;
              c.push(new v(a, b ? [b] : []));
            }, this);
            a = q(b.end.determinant, this);
            b.body.push(new Z(a, c, !1));
            return b;
          };
          a.prototype.compileLabelSwitch = function(a) {
            function b(a) {
              w("number" === typeof a);
              return new O("===", h, new y(a));
            }
            for (var c = null, h = s(this.label.name), d = a.cases.length - 1;0 <= d;d--) {
              for (var e = a.cases[d], l = e.labels, n = b(l[0]), f = 1;f < l.length;f++) {
                n = new O("||", n, b(l[f]));
              }
              c = new S(n, e.body ? e.body.compile(this) : new V([]), c);
            }
            return c;
          };
          a.prototype.compileLoop = function(a) {
            a = a.body.compile(this);
            return new aa(t(!0), a);
          };
          a.prototype.compileSequence = function(a) {
            var b = this, c = [];
            a.body.forEach(function(a) {
              a = a.compile(b);
              a instanceof V ? c = c.concat(a.body) : c.push(a);
            });
            return new V(c);
          };
          a.prototype.compileBlock = function(a) {
            for (var b = [], c = 1;c < a.nodes.length - 1;c++) {
              var h = a.nodes[c], d;
              h instanceof g.IR.Throw ? d = q(h, this, !0) : (h instanceof g.IR.Move ? (d = s(h.to.name), this.useVariable(h.to), h = q(h.from, this)) : (h.variable ? (d = s(h.variable.name), this.useVariable(h.variable)) : d = null, h = q(h, this, !0)), d = d ? new J(p(d, h)) : new J(h));
              b.push(d);
            }
            c = ca(a.nodes);
            c instanceof g.IR.Stop && b.push(new A(q(c.argument, this)));
            b = new V(b);
            b.end = ca(a.nodes);
            w(b.end instanceof g.IR.End);
            return b;
          };
          return a;
        }();
        f.Context = ha;
        g.IR.Parameter.prototype.compile = function(a) {
          a.useParameter(this);
          return s(this.name);
        };
        g.IR.Constant.prototype.compile = function(a) {
          return t(this.value, a);
        };
        g.IR.Variable.prototype.compile = function(a) {
          return s(this.name);
        };
        g.IR.Phi.prototype.compile = function(a) {
          w(this.variable);
          return q(this.variable, a);
        };
        g.IR.ASScope.prototype.compile = function(a) {
          var b = q(this.parent, a);
          a = q(this.object, a);
          var c = new y(this.isWith);
          return new L(s("Scope"), [b, a, c]);
        };
        g.IR.ASFindProperty.prototype.compile = function(b) {
          var c = q(this.scope, b), h = l(this.name, b);
          b = q(this.methodInfo, b);
          var e = new y(this.strict);
          return a(d(c, "findScopeProperty"), h.concat([b, e]));
        };
        g.IR.ASGetProperty.prototype.compile = function(b) {
          var c = q(this.object, b);
          if (this.flags & 1) {
            return w(!(this.flags & 8)), a(d(c, "asGetNumericProperty"), [q(this.name.name, b)]);
          }
          if (this.flags & 2) {
            return a(d(c, "asGetResolvedStringProperty"), [q(this.name, b)]);
          }
          b = l(this.name, b);
          var h = new y(this.flags & 8);
          return a(d(c, "asGetProperty"), b.concat(h));
        };
        g.IR.ASGetSuper.prototype.compile = function(b) {
          var c = q(this.scope, b), h = q(this.object, b);
          b = l(this.name, b);
          return a(d(h, "asGetSuper"), [c].concat(b));
        };
        g.IR.Latch.prototype.compile = function(a) {
          return new B(q(this.condition, a), q(this.left, a), q(this.right, a));
        };
        g.IR.Unary.prototype.compile = function(a) {
          return new D(this.operator.name, !0, q(this.argument, a));
        };
        g.IR.Copy.prototype.compile = function(a) {
          return q(this.argument, a);
        };
        g.IR.Binary.prototype.compile = function(b) {
          var c = q(this.left, b);
          b = q(this.right, b);
          return this.operator === g.IR.Operator.AS_ADD ? a(s("asAdd"), [c, b]) : new O(this.operator.name, c, b);
        };
        g.IR.CallProperty.prototype.compile = function(b) {
          var h = q(this.object, b), e = q(this.name, b), e = d(h, e), l = this.args.map(function(a) {
            return q(a, b);
          });
          return this.flags & 16 ? c(e, h, l) : this.flags & 4 ? a(e, l) : n(e, h, l);
        };
        g.IR.ASCallProperty.prototype.compile = function(b) {
          var c = q(this.object, b), h = this.args.map(function(a) {
            return q(a, b);
          });
          if (this.flags & 2) {
            return a(d(c, "asCallResolvedStringProperty"), [q(this.name, b), new y(this.isLex), new P(h)]);
          }
          var e = l(this.name, b);
          return a(d(c, "asCallProperty"), e.concat([new y(this.isLex), new P(h)]));
        };
        g.IR.ASCallSuper.prototype.compile = function(b) {
          var c = q(this.scope, b), h = q(this.object, b), e = this.args.map(function(a) {
            return q(a, b);
          }), n = l(this.name, b);
          return a(d(h, "asCallSuper"), [c].concat(n).concat(new P(e)));
        };
        g.IR.Call.prototype.compile = function(b) {
          var h = this.args.map(function(a) {
            return q(a, b);
          }), d = q(this.callee, b), e;
          e = this.object ? q(this.object, b) : new y(null);
          return this.flags & 16 ? c(d, e, h) : null === this.object ? a(d, h) : n(d, e, h);
        };
        g.IR.ASNew.prototype.compile = function(a) {
          var b = this.args.map(function(b) {
            return q(b, a);
          }), c = q(this.callee, a), c = d(c, "instanceConstructor");
          return new L(c, b);
        };
        g.IR.This.prototype.compile = function(a) {
          return new Q;
        };
        g.IR.Throw.prototype.compile = function(a) {
          a = q(this.argument, a);
          return new U(a);
        };
        g.IR.Arguments.prototype.compile = function(a) {
          return s("arguments");
        };
        g.IR.ASGlobal.prototype.compile = function(a) {
          a = q(this.scope, a);
          return d(a, "global", "object");
        };
        g.IR.ASSetProperty.prototype.compile = function(b) {
          var c = q(this.object, b), h = q(this.value, b);
          if (this.flags & 1) {
            return a(d(c, "asSetNumericProperty"), [q(this.name.name, b), h]);
          }
          b = l(this.name, b);
          return a(d(c, "asSetProperty"), b.concat(h));
        };
        g.IR.ASSetSuper.prototype.compile = function(b) {
          var c = q(this.scope, b), h = q(this.object, b), e = l(this.name, b);
          b = q(this.value, b);
          return a(d(h, "asSetSuper"), [c].concat(e).concat([b]));
        };
        g.IR.ASDeleteProperty.prototype.compile = function(b) {
          var c = q(this.object, b);
          b = l(this.name, b);
          return a(d(c, "asDeleteProperty"), b);
        };
        g.IR.ASHasProperty.prototype.compile = function(b) {
          var c = q(this.object, b);
          b = l(this.name, b);
          return a(d(c, "asHasProperty"), b);
        };
        g.IR.GlobalProperty.prototype.compile = function(a) {
          return s(this.name);
        };
        g.IR.GetProperty.prototype.compile = function(a) {
          var b = q(this.object, a);
          a = q(this.name, a);
          return d(b, a);
        };
        g.IR.SetProperty.prototype.compile = function(a) {
          var b = q(this.object, a), c = q(this.name, a);
          a = q(this.value, a);
          return p(d(b, c), a);
        };
        g.IR.ASGetDescendants.prototype.compile = function(b) {
          var c = q(this.object, b);
          b = q(this.name, b);
          return a(s("getDescendants"), [c, b]);
        };
        g.IR.ASSetSlot.prototype.compile = function(b) {
          var c = q(this.object, b), h = q(this.name, b);
          b = q(this.value, b);
          return a(s("asSetSlot"), [c, h, b]);
        };
        g.IR.ASGetSlot.prototype.compile = function(b) {
          var c = q(this.object, b);
          b = q(this.name, b);
          return a(s("asGetSlot"), [c, b]);
        };
        g.IR.Projection.prototype.compile = function(a) {
          w(4 === this.type);
          w(this.argument instanceof X);
          return q(this.argument.scope, a);
        };
        g.IR.NewArray.prototype.compile = function(a) {
          return new P(u(this.elements, a));
        };
        g.IR.NewObject.prototype.compile = function(a) {
          var b = this.properties.map(function(b) {
            var c = q(b.key, a);
            b = q(b.value, a);
            return new M(c, b, "init");
          });
          return new z(b);
        };
        g.IR.ASNewActivation.prototype.compile = function(b) {
          b = q(this.methodInfo, b);
          return a(s("asCreateActivation"), [b]);
        };
        g.IR.ASNewHasNext2.prototype.compile = function(a) {
          return new L(s("HasNext2Info"), []);
        };
        g.IR.ASMultiname.prototype.compile = function(b) {
          var c = q(this.namespaces, b);
          b = q(this.name, b);
          return a(s("createName"), [c, b]);
        };
        g.IR.Block.prototype.compile = function(a) {
          return a.compileBlock(this);
        };
        var da = function() {
          function a(b, c, h) {
            this.parameters = b;
            this.body = c;
            this.constants = h;
          }
          a.prototype.C = function(a) {
            var b = this.constants[a];
            b._isLazyInitializer && (this.constants[a] = b.resolve());
            return this.constants[a];
          };
          a.id = 0;
          return a;
        }();
        f.Compilation = da;
        f.generate = function(a) {
          k.enterTimeline("Looper");
          var c = Y.analyze(a);
          k.leaveTimeline();
          new b.IndentingWriter;
          a = new ha;
          k.enterTimeline("Construct AST");
          var h = c.compile(a);
          k.leaveTimeline();
          for (var c = [], d = 0;d < a.parameters.length;d++) {
            c.push(s(a.parameters[d] ? a.parameters[d].name : "_" + d));
          }
          d = "$$F" + da.id++;
          if (a.constants.length) {
            var l = new G(d), n = new E(l, new G("constants"), !1);
            h.body.unshift(e([new C(s("$F"), l), new C(s("$C"), n)]));
          }
          a.variables.length && (k.countTimeline("Backend: Locals", a.variables.length), l = e(a.variables.map(function(a) {
            return new C(s(a.name));
          })), h.body.unshift(l));
          k.enterTimeline("Serialize AST");
          h = h.toSource();
          k.leaveTimeline();
          return jsGlobal[d] = new da(c.map(function(a) {
            return a.name;
          }), h, a.constants);
        };
      })(g.Backend || (g.Backend = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(c) {
        k.enterTimeline("executeScript", {name:c.name});
        var d = c.abc;
        p(!c.executing && !c.executed);
        var h = new g.Global(c);
        d.applicationDomain.allowNatives && (h[a.getPublicQualifiedName("unsafeJSNative")] = b.AVM2.AS.getNative);
        c.executing = !0;
        d = new g.Scope(null, c.global);
        g.createFunction(c.init, d, !1, !1).call(c.global, !1);
        c.executed = !0;
        k.leaveTimeline();
      }
      function t(a, c) {
        "undefined" === typeof c && (c = "");
        a.executed || a.executing || (2 <= b.AVM2.Runtime.traceExecution.value && log("Executing Script For: " + c), f(a));
      }
      function s(a) {
        if (!g.playerglobal) {
          return null;
        }
        for (var b = 0;b < a.namespaces.length;b++) {
          var c = g.playerglobal.map[a.namespaces[b].uri + ":" + a.name];
          if (c) {
            break;
          }
        }
        return c ? (a = c, a = (b = g.playerglobal.scripts[a]) ? new d(new Uint8Array(g.playerglobal.abcs, b.offset, b.length), a) : null, a) : null;
      }
      function m(a, b) {
        return new Promise(function(c, d) {
          var e = new XMLHttpRequest;
          e.open("GET", a);
          e.responseType = b;
          e.onload = function() {
            var l = e.response;
            l ? ("json" === b && "json" !== e.responseType && (l = JSON.parse(l)), c(l)) : d("Unable to load " + a + ": " + e.statusText);
          };
          e.send();
        });
      }
      var d = b.AVM2.ABC.AbcFile, a = b.AVM2.ABC.Multiname, c = b.Callback, n = b.ObjectUtilities.createEmptyObject, p = b.Debug.assert, e = b.IndentingWriter;
      g.executeScript = f;
      g.ensureScriptIsExecuted = t;
      (function(a) {
        a[a.PUBLIC_PROPERTIES = 1] = "PUBLIC_PROPERTIES";
        a[a.PUBLIC_METHODS = 2] = "PUBLIC_METHODS";
        a[a.ALL = 3] = "ALL";
      })(g.Glue || (g.Glue = {}));
      g.playerglobalLoadedPromise;
      g.playerglobal;
      var q = function() {
        function a(b, c, d) {
          this.systemDomain = new l(this, null, b, !0);
          this.applicationDomain = new l(this, this.systemDomain, c, !1);
          this.findDefiningAbc = s;
          this._loadAVM1 = d;
          this._loadAVM1Promise = null;
          this.exception = {value:void 0};
          this.exceptions = [];
          this.globals = n();
        }
        a.initialize = function(b, c, d) {
          "undefined" === typeof d && (d = null);
          p(!a.instance);
          a.instance = new a(b, c, d);
        };
        a.currentAbc = function() {
          for (var a = arguments.callee, b = null, c = 0;20 > c && a;c++) {
            var d = a.methodInfo;
            if (d) {
              b = d.abc;
              break;
            }
            a = a.caller;
          }
          return b;
        };
        a.currentDomain = function() {
          var b = a.currentAbc();
          if (null === b) {
            return a.instance.systemDomain;
          }
          p(b && b.applicationDomain, "No domain environment was found on the stack, increase STACK_DEPTH or make sure that a compiled / interpreted function is on the call stack.");
          return b.applicationDomain;
        };
        a.isPlayerglobalLoaded = function() {
          return!!g.playerglobal;
        };
        a.prototype.loadAVM1 = function() {
          var a = this._loadAVM1;
          p(a);
          this._loadAVM1Promise || (this._loadAVM1Promise = new Promise(function(b) {
            a(b);
          }));
          return this._loadAVM1Promise;
        };
        a.loadPlayerglobal = function(a, b) {
          if (g.playerglobalLoadedPromise) {
            return Promise.reject("Playerglobal is already loaded");
          }
          g.playerglobalLoadedPromise = Promise.all([m(a, "arraybuffer"), m(b, "json")]).then(function(a) {
            g.playerglobal = {abcs:a[0], map:Object.create(null), scripts:Object.create(null)};
            a = a[1];
            for (var b = 0;b < a.length;b++) {
              var c = a[b];
              g.playerglobal.scripts[c.name] = c;
              if ("string" === typeof c.defs) {
                g.playerglobal.map[c.defs] = c.name;
              } else {
                for (var h = 0;h < c.defs.length;h++) {
                  g.playerglobal.map[c.defs[h]] = c.name;
                }
              }
            }
          }, function(a) {
            console.error(a);
          });
          return g.playerglobalLoadedPromise;
        };
        a.prototype.notifyConstruct = function(a, b) {
        };
        a.getStackTrace = function() {
          b.Debug.somewhatImplemented("getStackTrace");
          return b.Debug.backtrace();
        };
        return a;
      }();
      g.AVM2 = q;
      var l = function() {
        function d(a, h, e, l) {
          p(a instanceof q);
          p(b.isNullOrUndefined(h) || h instanceof d);
          this.vm = a;
          this.abcs = [];
          this.loadedAbcs = {};
          this.loadedClasses = [];
          this.classCache = n();
          this.scriptCache = n();
          this.classInfoCache = n();
          this.base = h;
          this.allowNatives = l;
          this.mode = e;
          this.onMessage = new c;
          this.system = h ? h.system : this;
        }
        d.passthroughCallable = function(a) {
          return{call:function(b) {
            Array.prototype.shift.call(arguments);
            return a.asApply(b, arguments);
          }, apply:function(b, c) {
            return a.asApply(b, c);
          }};
        };
        d.coerceCallable = function(a) {
          return{call:function(b, c) {
            return g.asCoerce(a, c);
          }, apply:function(b, c) {
            return g.asCoerce(a, c[0]);
          }};
        };
        d.prototype.getType = function(a) {
          return this.getProperty(a, !0, !0);
        };
        d.prototype.getProperty = function(c, h, d) {
          if (d = this.findDefiningScript(c, d)) {
            return d.script.executing ? d.script.global[a.getQualifiedName(d.trait.name)] : void 0;
          }
          if (h) {
            return b.Debug.unexpected("Cannot find property " + c);
          }
        };
        d.prototype.getClass = function(c, h) {
          "undefined" === typeof h && (h = !0);
          var d = this.classCache, e = d[c];
          e || (e = d[c] = this.getProperty(a.fromSimpleName(c), h, !0));
          e && p(e instanceof b.AVM2.AS.ASClass);
          return e;
        };
        d.prototype.findDomainProperty = function(a, c, d) {
          b.AVM2.Runtime.traceDomain.value && log("ApplicationDomain.findDomainProperty: " + a);
          if (d = this.findDefiningScript(a, d)) {
            return d.script.global;
          }
          if (c) {
            return b.Debug.unexpected("Cannot find property " + a);
          }
        };
        d.prototype.findClassInfo = function(b) {
          var c;
          if (a.isQName(b)) {
            c = a.getQualifiedName(b);
            var d = this.classInfoCache[c];
          } else {
            d = this.classInfoCache[b.runtimeId];
          }
          if (d || this.base && (d = this.base.findClassInfo(b))) {
            return d;
          }
          for (var d = this.abcs, e = 0;e < d.length;e++) {
            for (var l = d[e], l = l.scripts, n = 0;n < l.length;n++) {
              for (var f = l[n].traits, p = 0;p < f.length;p++) {
                var g = f[p];
                if (g.isClass()) {
                  var q = a.getQualifiedName(g.name);
                  if (c) {
                    if (q === c) {
                      return this.classInfoCache[c] = g.classInfo;
                    }
                  } else {
                    for (var m = 0, k = b.namespaces.length;m < k;m++) {
                      var u = b.getQName(m);
                      if (q === a.getQualifiedName(u)) {
                        return this.classInfoCache[u] = g.classInfo;
                      }
                    }
                  }
                }
              }
            }
          }
          if (!this.base && this.vm.findDefiningAbc && (l = this.vm.findDefiningAbc(b), null !== l && !this.loadedAbcs[l.name])) {
            return this.loadedAbcs[l.name] = !0, this.loadAbc(l), this.findClassInfo(b);
          }
        };
        d.prototype.findDefiningScript = function(c, h) {
          var d = this.scriptCache[c.runtimeId];
          if (d && (d.script.executed || !h) || this.base && (d = this.base.findDefiningScript(c, h))) {
            return d;
          }
          k.countTimeline("ApplicationDomain: findDefiningScript");
          for (var d = this.abcs, e = 0;e < d.length;e++) {
            for (var l = d[e], l = l.scripts, n = 0;n < l.length;n++) {
              var f = l[n], p = f.traits;
              if (c instanceof a) {
                for (var g = 0;g < p.length;g++) {
                  var q = p[g];
                  if (c.hasQName(q.name)) {
                    return h && t(f, String(q.name)), this.scriptCache[c.runtimeId] = {script:f, trait:q};
                  }
                }
              } else {
                b.Debug.unexpected();
              }
            }
          }
          if (!this.base && this.vm.findDefiningAbc && (l = this.vm.findDefiningAbc(c), null !== l && !this.loadedAbcs[l.name])) {
            return this.loadedAbcs[l.name] = !0, this.loadAbc(l), this.findDefiningScript(c, h);
          }
        };
        d.prototype.compileAbc = function(a, c) {
          b.AVM2.Compiler.compileAbc(a, c);
        };
        d.prototype.executeAbc = function(a) {
          this.loadAbc(a);
          f(a.lastScript);
        };
        d.prototype.loadAbc = function(a) {
          b.AVM2.Runtime.traceExecution.value && log("Loading: " + a.name);
          a.applicationDomain = this;
          g.GlobalMultinameResolver.loadAbc(a);
          this.abcs.push(a);
          this.base || (k.AS.initialize(this), b.AVM2.Verifier.Type.initializeTypes(this));
        };
        d.prototype.broadcastMessage = function(a, b, c) {
          try {
            this.onMessage.notify1(a, {data:b, origin:c, source:this});
          } catch (d) {
            throw q.instance.exceptions.push({source:a, message:d.message, stack:d.stack}), d;
          }
        };
        d.prototype.traceLoadedClasses = function() {
          var a = new e;
          [b.ArrayUtilities.last(this.loadedClasses)].forEach(function(c) {
            c !== b.AVM2.AS.ASClass && c.trace(a);
          });
        };
        return d;
      }();
      g.ApplicationDomain = l;
      var u = function() {
        function a(b) {
          this.compartment = newGlobal("new-compartment");
          this.compartment.homePath = homePath;
          this.compartment.release = !1;
          this.compartment.eval(snarf(b));
        }
        a.prototype.initializeShell = function(a, b) {
          var c = this.compartment;
          c.AVM2.initialize(a, b);
          c.AVM2.instance.systemDomain.executeAbc(c.grabAbc(homePath + "src/avm2/generated/builtin/builtin.abc"));
          c.AVM2.instance.systemDomain.executeAbc(c.grabAbc(homePath + "src/avm2/generated/shell/shell.abc"));
          this.systemDomain = c.AVM2.instance.systemDomain;
          this.applicationDomain = c.AVM2.instance.applicationDomain;
        };
        return a;
      }();
      g.SecurityDomain = u;
    })(k.Runtime || (k.Runtime = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Glue = Shumway.AVM2.Runtime.Glue, ApplicationDomain = Shumway.AVM2.Runtime.ApplicationDomain, AVM2 = Shumway.AVM2.Runtime.AVM2, EXECUTION_MODE = Shumway.AVM2.Runtime.ExecutionMode;
(function(b) {
  (function(k) {
    (function(g) {
      function f(a) {
        return a.holder instanceof m ? "static " + a.holder.instanceInfo.name.getOriginalName() + "::" + a.name.getOriginalName() : a.holder instanceof d ? a.holder.name.getOriginalName() + "::" + a.name.getOriginalName() : a.name.getOriginalName();
      }
      function t(b) {
        a(b && "function" === typeof b);
        return b.isTrampoline;
      }
      var s = b.AVM2.ABC.Multiname, m = b.AVM2.ABC.ClassInfo, d = b.AVM2.ABC.InstanceInfo, a = b.Debug.assert, c = b.ObjectUtilities.defineReadOnlyProperty, n = b.FunctionUtilities.bindSafely, p = 1, e = 1;
      g.getMethodOverrideKey = f;
      g.checkMethodOverrides = function(a) {
        if (a.name && (a = f(a), a in g.VM_METHOD_OVERRIDES)) {
          return b.Debug.warning("Overriding Method: " + a), g.VM_METHOD_OVERRIDES[a];
        }
      };
      g.makeTrampoline = function(d, e, n, f, r, h) {
        return function() {
          function m() {
            k.countTimeline("Executing Trampoline");
            1 <= b.AVM2.Runtime.traceExecution.value && (callWriter.writeLn("Trampoline: " + h), 3 <= b.AVM2.Runtime.traceExecution.value && log("Trampolining"));
            s || (s = g.getTraitFunction(d, e, n), g.patch(f, s), d = e = n = f = null, a(s));
            return s.asApply(this, arguments);
          }
          var s = null;
          m.trigger = function() {
            k.countTimeline("Triggering Trampoline");
            s || (s = g.getTraitFunction(d, e, n), g.patch(f, s), d = e = n = f = null, a(s));
          };
          m.isTrampoline = !0;
          m.debugName = "Trampoline #" + p++;
          c(m, g.VM_LENGTH, r);
          return m;
        }();
      };
      g.makeMemoizer = function(d, l) {
        function f() {
          k.countTimeline("Runtime: Memoizing");
          3 <= b.AVM2.Runtime.traceExecution.value && log("Memoizing: " + d);
          1 < b.AVM2.Runtime.traceCallExecution.value && callWriter.writeLn("Memoizing: " + d);
          if (g.isNativePrototype(this)) {
            return k.countTimeline("Runtime: Method Closures"), n(l.value, this);
          }
          t(l.value) && l.value.trigger();
          a(!t(l.value), "We should avoid binding trampolines.");
          var e = null;
          if (this instanceof b.AVM2.AS.ASClass) {
            return k.countTimeline("Runtime: Static Method Closures"), e = n(l.value, this), c(this, d, e), e;
          }
          if (Object.prototype.hasOwnProperty.call(this, d)) {
            if (Object.getOwnPropertyDescriptor(this, d).get) {
              return k.countTimeline("Runtime: Method Closures"), n(l.value, this);
            }
            k.countTimeline("Runtime: Unpatched Memoizer");
            return this[d];
          }
          e = n(l.value, this);
          e.methodInfo = l.value.methodInfo;
          c(e, s.getPublicQualifiedName("prototype"), null);
          c(this, d, e);
          return e;
        }
        k.countTimeline("Runtime: Memoizers");
        f.isMemoizer = !0;
        f.debugName = "Memoizer #" + e++;
        return f;
      };
      g.isMemoizer = function(b) {
        a(b && "function" === typeof b);
        return b.isMemoizer;
      };
    })(k.Runtime || (k.Runtime = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    function g(a, b, c) {
      c.flags = b.flags;
      c.name = b.isRuntimeName() ? a.pop() : b.name;
      c.namespaces = b.isRuntimeNamespace() ? [a.pop()] : b.namespaces;
    }
    var f = b.AVM2.Runtime.Scope, t = b.AVM2.Runtime.asCoerceByMultiname, s = b.AVM2.Runtime.asGetSlot, m = b.AVM2.Runtime.asSetSlot, d = b.AVM2.Runtime.asCoerce, a = b.AVM2.Runtime.asCoerceString, c = b.AVM2.Runtime.asAsType, n = b.AVM2.Runtime.asTypeOf, p = b.AVM2.Runtime.asIsInstanceOf, e = b.AVM2.Runtime.asIsType, q = b.AVM2.Runtime.applyType, l = b.AVM2.Runtime.createFunction, u = b.AVM2.Runtime.createClass, w = b.AVM2.Runtime.getDescendants, r = b.AVM2.Runtime.checkFilter, h = b.AVM2.Runtime.asAdd, 
    x = b.AVM2.Runtime.translateError, y = b.AVM2.Runtime.asCreateActivation, G = b.AVM2.Runtime.sliceArguments, I = b.ObjectUtilities.boxValue, C = b.ArrayUtilities.popManyInto, E = b.AVM2.Runtime.construct, O = b.AVM2.ABC.Multiname, K = b.Debug.assert, F = b.AVM2.Runtime.HasNext2Info, J = function() {
      function a(b) {
        this.parent = b;
        this.stack = [];
        this.isWith = [];
      }
      a.prototype.push = function(a, b) {
        this.stack.push(a);
        this.isWith.push(!!b);
      };
      a.prototype.get = function(a) {
        return this.stack[a];
      };
      a.prototype.clear = function() {
        this.stack.length = 0;
        this.isWith.length = 0;
      };
      a.prototype.pop = function() {
        this.isWith.pop();
        this.stack.pop();
      };
      a.prototype.topScope = function() {
        this.scopes || (this.scopes = []);
        for (var a = this.parent, b = 0;b < this.stack.length;b++) {
          var c = this.stack[b], h = this.isWith[b], d = this.scopes[b];
          d && d.parent === a && d.object === c && d.isWith === h || (d = this.scopes[b] = new f(a, c, h));
          a = d;
        }
        return a;
      };
      return a;
    }(), A = function() {
      function f() {
      }
      f.interpretMethod = function(f, B, A, L) {
        K(B.analysis);
        k.countTimeline("Interpret Method");
        var M = B.abc, V = M.constantPool.ints, Q = M.constantPool.uints, U = M.constantPool.doubles, S = M.constantPool.strings, aa = M.methods, $ = M.constantPool.multinames, ea = M.applicationDomain, Z = B.exceptions;
        f = [f];
        for (var v = [], X = new J(A), ba = B.parameters.length, R = L.length, H, Y = 0;Y < ba;Y++) {
          var ga = B.parameters[Y];
          H = Y < R ? L[Y] : ga.value;
          ga.type && !ga.type.isAnyName() && (H = t(B, ga.type, H));
          f.push(H);
        }
        B.needsRest() ? f.push(G(L, ba)) : B.needsArguments() && f.push(G(L, 0));
        L = B.analysis.bytecodes;
        var ca, ka, W, ha, da, ja, ba = [], R = O.TEMPORARY, ga = [], N = 0, ma = L.length;
        a: for (;N < ma;) {
          try {
            var T = L[N], oa = T.op;
            switch(oa | 0) {
              case 3:
                throw v.pop();;
              case 4:
                g(v, $[T.index], R);
                v.push(v.pop().asGetSuper(A, R.namespaces, R.name, R.flags));
                break;
              case 5:
                H = v.pop();
                g(v, $[T.index], R);
                v.pop().asSetSuper(A, R.namespaces, R.name, R.flags, H);
                break;
              case 8:
                f[T.index] = void 0;
                break;
              case 12:
                ja = v.pop();
                da = v.pop();
                N = da < ja ? N + 1 : T.offset;
                continue;
              case 24:
                ja = v.pop();
                da = v.pop();
                N = da >= ja ? T.offset : N + 1;
                continue;
              case 13:
                ja = v.pop();
                da = v.pop();
                N = da <= ja ? N + 1 : T.offset;
                continue;
              case 23:
                ja = v.pop();
                da = v.pop();
                N = da > ja ? T.offset : N + 1;
                continue;
              case 14:
                ja = v.pop();
                da = v.pop();
                N = da > ja ? N + 1 : T.offset;
                continue;
              case 22:
                ja = v.pop();
                da = v.pop();
                N = da <= ja ? T.offset : N + 1;
                continue;
              case 15:
                ja = v.pop();
                da = v.pop();
                N = da >= ja ? N + 1 : T.offset;
                continue;
              case 21:
                ja = v.pop();
                da = v.pop();
                N = da < ja ? T.offset : N + 1;
                continue;
              case 16:
                N = T.offset;
                continue;
              case 17:
                N = v.pop() ? T.offset : N + 1;
                continue;
              case 18:
                N = v.pop() ? N + 1 : T.offset;
                continue;
              case 19:
                ja = v.pop();
                da = v.pop();
                N = da == ja ? T.offset : N + 1;
                continue;
              case 20:
                ja = v.pop();
                da = v.pop();
                N = da != ja ? T.offset : N + 1;
                continue;
              case 25:
                ja = v.pop();
                da = v.pop();
                N = da === ja ? T.offset : N + 1;
                continue;
              case 26:
                ja = v.pop();
                da = v.pop();
                N = da !== ja ? T.offset : N + 1;
                continue;
              case 27:
                ka = v.pop();
                if (0 > ka || ka >= T.offsets.length) {
                  ka = T.offsets.length - 1;
                }
                N = T.offsets[ka];
                continue;
              case 28:
                X.push(I(v.pop()), !0);
                break;
              case 29:
                X.pop();
                break;
              case 30:
                ka = v.pop();
                v[v.length - 1] = I(v[v.length - 1]).asNextName(ka);
                break;
              case 35:
                ka = v.pop();
                v[v.length - 1] = I(v[v.length - 1]).asNextValue(ka);
                break;
              case 50:
                var pa = ga[N] || (ga[N] = new F(null, 0));
                ca = f[T.object];
                ka = f[T.index];
                pa.object = ca;
                pa.index = ka;
                Object(ca).asHasNext2(pa);
                f[T.object] = pa.object;
                f[T.index] = pa.index;
                v.push(!!pa.index);
                break;
              case 32:
                v.push(null);
                break;
              case 33:
                v.push(void 0);
                break;
              case 36:
              ;
              case 37:
                v.push(T.value);
                break;
              case 44:
                v.push(S[T.index]);
                break;
              case 45:
                v.push(V[T.index]);
                break;
              case 46:
                v.push(Q[T.index]);
                break;
              case 47:
                v.push(U[T.index]);
                break;
              case 38:
                v.push(!0);
                break;
              case 39:
                v.push(!1);
                break;
              case 40:
                v.push(NaN);
                break;
              case 41:
                v.pop();
                break;
              case 42:
                v.push(v[v.length - 1]);
                break;
              case 43:
                ca = v[v.length - 1];
                v[v.length - 1] = v[v.length - 2];
                v[v.length - 2] = ca;
                break;
              case 48:
                X.push(I(v.pop()), !1);
                break;
              case 64:
                v.push(l(aa[T.index], X.topScope(), !0, !1));
                break;
              case 65:
                C(v, T.argCount, ba);
                ca = v.pop();
                v[v.length - 1] = v[v.length - 1].asApply(ca, ba);
                break;
              case 66:
                C(v, T.argCount, ba);
                v[v.length - 1] = E(v[v.length - 1], ba);
                break;
              case 71:
                return;
              case 72:
                return B.returnType ? t(B, B.returnType, v.pop()) : v.pop();
              case 73:
                C(v, T.argCount, ba);
                ca = v.pop();
                A.object.baseClass.instanceConstructorNoInitialize.apply(ca, ba);
                break;
              case 74:
                C(v, T.argCount, ba);
                g(v, $[T.index], R);
                ca = I(v[v.length - 1]);
                ca = ca.asConstructProperty(R.namespaces, R.name, R.flags, ba);
                v[v.length - 1] = ca;
                break;
              case 75:
                b.Debug.notImplemented("OP.callsuperid");
                break;
              case 76:
              ;
              case 70:
              ;
              case 79:
                C(v, T.argCount, ba);
                g(v, $[T.index], R);
                ha = I(v.pop()).asCallProperty(R.namespaces, R.name, R.flags, 76 === oa, ba);
                79 !== oa && v.push(ha);
                break;
              case 69:
              ;
              case 78:
                C(v, T.argCount, ba);
                g(v, $[T.index], R);
                ha = v.pop().asCallSuper(A, R.namespaces, R.name, R.flags, ba);
                78 !== oa && v.push(ha);
                break;
              case 83:
                C(v, T.argCount, ba);
                v[v.length - 1] = q(B, v[v.length - 1], ba);
                break;
              case 85:
                ca = {};
                for (Y = 0;Y < T.argCount;Y++) {
                  H = v.pop(), ca[O.getPublicQualifiedName(v.pop())] = H;
                }
                v.push(ca);
                break;
              case 86:
                ca = [];
                C(v, T.argCount, ba);
                ca.push.apply(ca, ba);
                v.push(ca);
                break;
              case 87:
                K(B.needsActivation());
                v.push(y(B));
                break;
              case 88:
                v[v.length - 1] = u(M.classes[T.index], v[v.length - 1], X.topScope());
                break;
              case 89:
                g(v, $[T.index], R);
                v.push(w(v.pop(), R));
                break;
              case 90:
                K(Z[T.index].scopeObject);
                v.push(Z[T.index].scopeObject);
                break;
              case 94:
              ;
              case 93:
                g(v, $[T.index], R);
                v.push(X.topScope().findScopeProperty(R.namespaces, R.name, R.flags, B, 93 === oa, !1));
                break;
              case 96:
                W = $[T.index];
                ca = X.topScope().findScopeProperty(W.namespaces, W.name, W.flags, B, !0, !1);
                v.push(ca.asGetProperty(W.namespaces, W.name, W.flags));
                break;
              case 104:
              ;
              case 97:
                H = v.pop();
                g(v, $[T.index], R);
                I(v.pop()).asSetProperty(R.namespaces, R.name, R.flags, H);
                break;
              case 98:
                v.push(f[T.index]);
                break;
              case 99:
                f[T.index] = v.pop();
                break;
              case 100:
                v.push(A.global.object);
                break;
              case 101:
                v.push(X.get(T.index));
                break;
              case 102:
                g(v, $[T.index], R);
                v[v.length - 1] = I(v[v.length - 1]).asGetProperty(R.namespaces, R.name, R.flags);
                break;
              case 106:
                g(v, $[T.index], R);
                v[v.length - 1] = I(v[v.length - 1]).asDeleteProperty(R.namespaces, R.name, R.flags);
                break;
              case 108:
                v[v.length - 1] = s(v[v.length - 1], T.index);
                break;
              case 109:
                H = v.pop();
                ca = v.pop();
                m(ca, T.index, H);
                break;
              case 112:
                v[v.length - 1] += "";
                break;
              case 131:
              ;
              case 115:
                v[v.length - 1] |= 0;
                break;
              case 136:
              ;
              case 116:
                v[v.length - 1] >>>= 0;
                break;
              case 132:
              ;
              case 117:
                v[v.length - 1] = +v[v.length - 1];
                break;
              case 129:
              ;
              case 118:
                v[v.length - 1] = !!v[v.length - 1];
                break;
              case 120:
                v[v.length - 1] = r(v[v.length - 1]);
                break;
              case 128:
                v[v.length - 1] = d(ea.getType($[T.index]), v[v.length - 1]);
                break;
              case 130:
                break;
              case 133:
                v[v.length - 1] = a(v[v.length - 1]);
                break;
              case 134:
                v[v.length - 2] = c(ea.getType($[T.index]), v[v.length - 1]);
                break;
              case 135:
                v[v.length - 2] = c(v.pop(), v[v.length - 1]);
                break;
              case 137:
                ca = v[v.length - 1];
                v[v.length - 1] = void 0 == ca ? null : ca;
                break;
              case 144:
                v[v.length - 1] = -v[v.length - 1];
                break;
              case 145:
                ++v[v.length - 1];
                break;
              case 146:
                ++f[T.index];
                break;
              case 147:
                --v[v.length - 1];
                break;
              case 148:
                --f[T.index];
                break;
              case 149:
                v[v.length - 1] = n(v[v.length - 1]);
                break;
              case 150:
                v[v.length - 1] = !v[v.length - 1];
                break;
              case 151:
                v[v.length - 1] = ~v[v.length - 1];
                break;
              case 160:
                v[v.length - 2] = h(v[v.length - 2], v.pop());
                break;
              case 161:
                v[v.length - 2] -= v.pop();
                break;
              case 162:
                v[v.length - 2] *= v.pop();
                break;
              case 163:
                v[v.length - 2] /= v.pop();
                break;
              case 164:
                v[v.length - 2] %= v.pop();
                break;
              case 165:
                v[v.length - 2] <<= v.pop();
                break;
              case 166:
                v[v.length - 2] >>= v.pop();
                break;
              case 167:
                v[v.length - 2] >>>= v.pop();
                break;
              case 168:
                v[v.length - 2] &= v.pop();
                break;
              case 169:
                v[v.length - 2] |= v.pop();
                break;
              case 170:
                v[v.length - 2] ^= v.pop();
                break;
              case 171:
                v[v.length - 2] = v[v.length - 2] == v.pop();
                break;
              case 172:
                v[v.length - 2] = v[v.length - 2] === v.pop();
                break;
              case 173:
                v[v.length - 2] = v[v.length - 2] < v.pop();
                break;
              case 174:
                v[v.length - 2] = v[v.length - 2] <= v.pop();
                break;
              case 175:
                v[v.length - 2] = v[v.length - 2] > v.pop();
                break;
              case 176:
                v[v.length - 2] = v[v.length - 2] >= v.pop();
                break;
              case 177:
                v[v.length - 2] = p(v.pop(), v[v.length - 1]);
                break;
              case 178:
                v[v.length - 1] = e(ea.getType($[T.index]), v[v.length - 1]);
                break;
              case 179:
                v[v.length - 2] = e(v.pop(), v[v.length - 1]);
                break;
              case 180:
                v[v.length - 2] = I(v.pop()).asHasProperty(null, v[v.length - 1]);
                break;
              case 192:
                v[v.length - 1] = (v[v.length - 1] | 0) + 1;
                break;
              case 193:
                v[v.length - 1] = (v[v.length - 1] | 0) - 1;
                break;
              case 194:
                f[T.index] = (f[T.index] | 0) + 1;
                break;
              case 195:
                f[T.index] = (f[T.index] | 0) - 1;
                break;
              case 196:
                v[v.length - 1] = ~v[v.length - 1];
                break;
              case 197:
                v[v.length - 2] = v[v.length - 2] + v.pop() | 0;
                break;
              case 198:
                v[v.length - 2] = v[v.length - 2] - v.pop() | 0;
                break;
              case 199:
                v[v.length - 2] = v[v.length - 2] * v.pop() | 0;
                break;
              case 208:
              ;
              case 209:
              ;
              case 210:
              ;
              case 211:
                v.push(f[oa - 208]);
                break;
              case 212:
              ;
              case 213:
              ;
              case 214:
              ;
              case 215:
                f[oa - 212] = v.pop();
                break;
              case 6:
                b.AVM2.AS.ASXML.defaultNamespace = S[T.index];
                break;
              case 7:
                b.AVM2.AS.ASXML.defaultNamespace = v.pop();
                break;
              case 239:
              ;
              case 240:
              ;
              case 241:
                break;
              default:
                b.Debug.notImplemented(b.AVM2.opcodeName(oa));
            }
            N++;
          } catch (na) {
            if (1 > Z.length) {
              throw na;
            }
            for (var na = x(ea, na), Y = 0, fa = Z.length;Y < fa;Y++) {
              var sa = Z[Y];
              if (N >= sa.start && N <= sa.end && (!sa.typeName || ea.getType(sa.typeName).isType(na))) {
                v.length = 0;
                v.push(na);
                X.clear();
                N = sa.offset;
                continue a;
              }
            }
            throw na;
          }
        }
      };
      return f;
    }();
    k.Interpreter = A;
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      b.VM_METHOD_OVERRIDES["static mochi.as3.MochiServices::connect"] = function() {
      };
      b.VM_METHOD_OVERRIDES["static MochiBot::track"] = function() {
      };
      b.VM_METHOD_OVERRIDES["com.midasplayer.debug.DebugLog::trace"] = function(b) {
        log(b);
      };
      b.VM_METHOD_OVERRIDES["com.midasplayer.engine.comm.DebugGameComm::getGameData"] = function() {
        return'<gamedata randomseed="554884453" version="1">\n<musicOn>true</musicOn>\n<soundOn>true</soundOn>\n<isShortGame>false</isShortGame>\n<booster_1>0</booster_1>\n<booster_2>0</booster_2>\n<booster_3>0</booster_3>\n<booster_4>0</booster_4>\n<booster_5>0</booster_5>\n<bestScore>0</bestScore>\n<bestChain>0</bestChain>\n<bestLevel>0</bestLevel>\n<bestCrushed>0</bestCrushed>\n<bestMixed>0</bestMixed>\n<text id="outro.crushed">Candy crushed</text>\n<text id="outro.bestever">best ever</text>\n<text id="outro.trophy.two">scored {0} in one game</text>\n<text id="outro.combo_color_color">All Clear Created</text>\n<text id="outro.trophy.one">crushed {0} candy in one game</text>\n<text id="outro.score">Score</text>\n<text id="outro.opengame">Please register to play the full game</text>\n<text id="outro.chain">Longest chain</text>\n<text id="outro.time">Game ends in {0} seconds</text>\n<text id="outro.combo_color_line">Super Stripes Created</text>\n<text id="game.nomoves">No more moves!</text>\n<text id="outro.combo_wrapper_line">Mega-Candy Created</text>\n<text id="intro.time">Game starts in {0} seconds</text>\n<text id="outro.now">now</text>\n<text id="outro.level">Level reached</text>\n<text id="outro.title">Game Over</text>\n<text id="intro.info1">Match 3 Candy of the same colour to crush them. Matching 4 or 5 in different formations generates special sweets that are extra tasty.</text>\n<text id="intro.info2">You can also combine the special sweets for additional effects by switching them with each other. Try these combinations for a taste you will not forget: </text>\n<text id="outro.combo_color_wrapper">Double Colour Bombs Created</text>\n<text id="outro.trophy.three">made {0} combined candy in one game</text>\n<text id="intro.title">Play like this:</text>\n</gamedata>';
      };
      b.VM_METHOD_OVERRIDES["com.antkarlov.Preloader::com.antkarlov:Preloader.isUrl"] = function() {
        return!0;
      };
      b.VM_METHOD_OVERRIDES["static com.demonsters.debugger.MonsterDebugger::initialize"] = function() {
      };
      b.VM_METHOD_OVERRIDES["com.spilgames.api.core.tracking.TrackConfig::getTrackers"] = function() {
        return[];
      };
      b.VM_METHOD_OVERRIDES["com.spilgames.api.components.TextFields.AutoFitTextFieldEx::com.spilgames.api.components.TextFields:AutoFitTextFieldEx.updateProperties"] = b.VM_METHOD_OVERRIDES["com.spilgames.api.components.TextFields.AutoFitTextFieldEx::com.spilgames.api.components.TextFields:AutoFitTextFieldEx.updateTextSize"] = function() {
      };
    })(b.Runtime || (b.Runtime = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    function g(a, c) {
      if (65535 < c.length) {
        throw "AMF short string exceeded";
      }
      if (c.length) {
        var d = b.StringUtilities.utf8decode(c);
        a.writeByte(d.length >> 8 & 255);
        a.writeByte(d.length & 255);
        for (var e = 0;e < d.length;e++) {
          a.writeByte(d[e]);
        }
      } else {
        a.writeByte(0), a.writeByte(0);
      }
    }
    function f(a) {
      var c = a.readByte() << 8 | a.readByte();
      if (!c) {
        return "";
      }
      for (var d = new Uint8Array(c), e = 0;e < c;e++) {
        d[e] = a.readByte();
      }
      return b.StringUtilities.utf8encode(d);
    }
    function t(a, b) {
      var c = new ArrayBuffer(8), d = new DataView(c);
      d.setFloat64(0, b, !1);
      for (var e = 0;e < c.byteLength;e++) {
        a.writeByte(d.getUint8(e));
      }
    }
    function s(a) {
      for (var b = new ArrayBuffer(8), c = new DataView(b), d = 0;d < b.byteLength;d++) {
        c.setUint8(d, a.readByte());
      }
      return c.getFloat64(0, !1);
    }
    function m(a) {
      var b = a.readByte();
      if (0 === (b & 128)) {
        return b;
      }
      var c = a.readByte();
      if (0 === (c & 128)) {
        return(b & 127) << 7 | c;
      }
      var d = a.readByte();
      if (0 === (d & 128)) {
        return(b & 127) << 14 | (c & 127) << 7 | d;
      }
      a = a.readByte();
      return(b & 127) << 22 | (c & 127) << 15 | (d & 127) << 8 | a;
    }
    function d(a, b) {
      if (0 === (b & 4294967168)) {
        a.writeByte(b & 127);
      } else {
        if (0 === (b & 4294950912)) {
          a.writeByte(128 | b >> 7 & 127), a.writeByte(b & 127);
        } else {
          if (0 === (b & 4292870144)) {
            a.writeByte(128 | b >> 14 & 127), a.writeByte(128 | b >> 7 & 127), a.writeByte(b & 127);
          } else {
            if (0 === (b & 3221225472)) {
              a.writeByte(128 | b >> 22 & 127), a.writeByte(128 | b >> 15 & 127), a.writeByte(128 | b >> 8 & 127), a.writeByte(b & 255);
            } else {
              throw "AMF3 U29 range";
            }
          }
        }
      }
    }
    function a(a, c) {
      var d = m(a);
      if (1 === d) {
        return "";
      }
      var e = c.stringsCache || (c.stringsCache = []);
      if (0 === (d & 1)) {
        return e[d >> 1];
      }
      for (var d = d >> 1, l = new Uint8Array(d), n = 0;n < d;n++) {
        l[n] = a.readByte();
      }
      d = b.StringUtilities.utf8encode(l);
      e.push(d);
      return d;
    }
    function c(a, c, e) {
      if ("" === c) {
        a.writeByte(1);
      } else {
        e = e.stringsCache || (e.stringsCache = []);
        var l = e.indexOf(c);
        if (0 <= l) {
          d(a, l << 1);
        } else {
          for (e.push(c), c = b.StringUtilities.utf8decode(c), d(a, 1 | c.length << 1), e = 0;e < c.length;e++) {
            a.writeByte(c[e]);
          }
        }
      }
    }
    function n(b, c) {
      var d = b.readByte();
      switch(d) {
        case 1:
          return null;
        case 0:
          break;
        case 2:
          return!1;
        case 3:
          return!0;
        case 4:
          return m(b);
        case 5:
          return s(b);
        case 6:
          return a(b, c);
        case 8:
          return new Date(s(b));
        case 10:
          var e = m(b);
          if (0 === (e & 1)) {
            return c.objectsCache[e >> 1];
          }
          if (0 !== (e & 4)) {
            throw "AMF3 Traits-Ext is not supported";
          }
          var l, f;
          if (0 === (e & 2)) {
            l = c.traitsCache[e >> 2], f = l.class;
          } else {
            l = {};
            d = a(b, c);
            f = (l.className = d) && k.aliasesCache.names[d];
            l.class = f;
            l.isDynamic = 0 !== (e & 8);
            l.members = [];
            for (var p = f && f.instanceBindings.slots, d = 0, e = e >> 4;d < e;d++) {
              for (var g = a(b, c), w = null, e = 1;p && e < p.length;e++) {
                if (p[e].name.name === g) {
                  w = p[e];
                  break;
                }
              }
              l.members.push(w ? q.getQualifiedName(w.name) : q.getPublicQualifiedName(g));
            }
            (c.traitsCache || (c.traitsCache = [])).push(l);
          }
          p = f ? u(f, []) : {};
          (c.objectsCache || (c.objectsCache = [])).push(p);
          for (d = 0;d < l.members.length;d++) {
            f = n(b, c), p[l.members[d]] = f;
          }
          if (l.isDynamic) {
            for (;;) {
              d = a(b, c);
              if (!d.length) {
                break;
              }
              f = n(b, c);
              p.asSetPublicProperty(d, f);
            }
          }
          return p;
        case 9:
          e = m(b);
          if (0 === (e & 1)) {
            return c.objectsCache[e >> 1];
          }
          l = [];
          (c.objectsCache || (c.objectsCache = [])).push(l);
          for (p = e >> 1;;) {
            d = a(b, c);
            if (!d.length) {
              break;
            }
            f = n(b, c);
            l.asSetPublicProperty(d, f);
          }
          for (d = 0;d < p;d++) {
            f = n(b, c), l.asSetPublicProperty(d, f);
          }
          return l;
        default:
          throw "AMF3 Unknown marker " + d;;
      }
    }
    function p(a, b, c) {
      c = c.objectsCache || (c.objectsCache = []);
      var e = c.indexOf(b);
      if (0 > e) {
        return c.push(b), !1;
      }
      d(a, e << 1);
      return!0;
    }
    function e(a, h, n) {
      switch(typeof h) {
        case "boolean":
          a.writeByte(h ? 3 : 2);
          break;
        case "number":
          h === (h | 0) ? (a.writeByte(4), d(a, h)) : (a.writeByte(5), t(a, h));
          break;
        case "undefined":
          a.writeByte(0);
          break;
        case "string":
          a.writeByte(6);
          c(a, h, n);
          break;
        case "object":
          if (null === h) {
            a.writeByte(1);
          } else {
            if (Array.isArray(h)) {
              a.writeByte(9);
              if (p(a, h, n)) {
                break;
              }
              for (var f = 0;f in h;) {
                ++f;
              }
              d(a, f << 1 | 1);
              l(h, function(d, h) {
                b.isNumeric(d) && 0 <= d && d < f || (c(a, d, n), e(a, h, n));
              });
              c(a, "", n);
              for (var g = 0;g < f;g++) {
                e(a, h[g], n);
              }
            } else {
              if (h instanceof Date) {
                a.writeByte(8);
                if (p(a, h, n)) {
                  break;
                }
                d(a, 1);
                t(a, h.valueOf());
              } else {
                a.writeByte(10);
                if (p(a, h, n)) {
                  break;
                }
                var g = !0, m = h.class;
                if (m) {
                  var g = !m.classInfo.instanceInfo.isSealed(), u = k.aliasesCache.classes.get(m) || "", w, s = n.traitsCache || (n.traitsCache = []), K = n.traitsInfos || (n.traitsInfos = []), F = s.indexOf(m);
                  if (0 > F) {
                    var J = m.instanceBindings.slots;
                    w = [];
                    for (var F = [], A = 1;A < J.length;A++) {
                      var B = J[A];
                      B.name.getNamespace().isPublic() && (w.push(q.getQualifiedName(B.name)), F.push(B.name.name));
                    }
                    s.push(m);
                    K.push(w);
                    m = F.length;
                    d(a, (g ? 11 : 3) + (m << 4));
                    c(a, u, n);
                    for (A = 0;A < m;A++) {
                      c(a, F[A], n);
                    }
                  } else {
                    w = K[F], m = w.length, d(a, 1 + (F << 2));
                  }
                  for (A = 0;A < m;A++) {
                    e(a, h[w[A]], n);
                  }
                } else {
                  d(a, 11), c(a, "", n);
                }
                g && (l(h, function(b, d) {
                  c(a, b, n);
                  e(a, d, n);
                }), c(a, "", n));
              }
            }
          }
        ;
      }
    }
    var q = b.AVM2.ABC.Multiname, l = b.AVM2.Runtime.forEachPublicProperty, u = b.AVM2.Runtime.construct;
    (function(a) {
      a[a.NUMBER = 0] = "NUMBER";
      a[a.BOOLEAN = 1] = "BOOLEAN";
      a[a.STRING = 2] = "STRING";
      a[a.OBJECT = 3] = "OBJECT";
      a[a.NULL = 5] = "NULL";
      a[a.UNDEFINED = 6] = "UNDEFINED";
      a[a.REFERENCE = 7] = "REFERENCE";
      a[a.ECMA_ARRAY = 8] = "ECMA_ARRAY";
      a[a.OBJECT_END = 9] = "OBJECT_END";
      a[a.STRICT_ARRAY = 10] = "STRICT_ARRAY";
      a[a.DATE = 11] = "DATE";
      a[a.LONG_STRING = 12] = "LONG_STRING";
      a[a.XML = 15] = "XML";
      a[a.TYPED_OBJECT = 16] = "TYPED_OBJECT";
      a[a.AVMPLUS = 17] = "AVMPLUS";
    })(k.AMF0Marker || (k.AMF0Marker = {}));
    var w = function() {
      function a() {
      }
      a.write = function(a, b) {
        switch(typeof b) {
          case "boolean":
            a.writeByte(1);
            a.writeByte(b ? 1 : 0);
            break;
          case "number":
            a.writeByte(0);
            t(a, b);
            break;
          case "undefined":
            a.writeByte(6);
            break;
          case "string":
            a.writeByte(2);
            g(a, b);
            break;
          case "object":
            null === b ? a.writeByte(5) : (Array.isArray(b) ? (a.writeByte(8), a.writeByte(b.length >>> 24 & 255), a.writeByte(b.length >> 16 & 255), a.writeByte(b.length >> 8 & 255), a.writeByte(b.length & 255), l(b, function(b, c) {
              g(a, b);
              this.write(a, c);
            }, this)) : (a.writeByte(3), l(b, function(b, c) {
              g(a, b);
              this.write(a, c);
            }, this)), a.writeByte(0), a.writeByte(0), a.writeByte(9));
        }
      };
      a.read = function(a) {
        var b = a.readByte();
        switch(b) {
          case 0:
            return s(a);
          case 1:
            return!!a.readByte();
          case 2:
            return f(a);
          case 3:
            for (var c = {};;) {
              b = f(a);
              if (!b.length) {
                break;
              }
              var d = this.read(a);
              c.asSetPublicProperty(b, d);
            }
            if (9 !== a.readByte()) {
              throw "AMF0 End marker is not found";
            }
            return c;
          case 5:
            return null;
          case 6:
            break;
          case 8:
            c = [];
            for (c.length = a.readByte() << 24 | a.readByte() << 16 | a.readByte() << 8 | a.readByte();;) {
              b = f(a);
              if (!b.length) {
                break;
              }
              d = this.read(a);
              c.asSetPublicProperty(b, d);
            }
            if (9 !== a.readByte()) {
              throw "AMF0 End marker is not found";
            }
            return c;
          case 10:
            c = [];
            c.length = a.readByte() << 24 | a.readByte() << 16 | a.readByte() << 8 | a.readByte();
            for (b = 0;b < c.length;b++) {
              c[b] = this.read(a);
            }
            return c;
          case 17:
            return n(a, {});
          default:
            throw "AMF0 Unknown marker " + b;;
        }
      };
      return a;
    }();
    k.AMF0 = w;
    (function(a) {
      a[a.UNDEFINED = 0] = "UNDEFINED";
      a[a.NULL = 1] = "NULL";
      a[a.FALSE = 2] = "FALSE";
      a[a.TRUE = 3] = "TRUE";
      a[a.INTEGER = 4] = "INTEGER";
      a[a.DOUBLE = 5] = "DOUBLE";
      a[a.STRING = 6] = "STRING";
      a[a.XML_DOC = 7] = "XML_DOC";
      a[a.DATE = 8] = "DATE";
      a[a.ARRAY = 9] = "ARRAY";
      a[a.OBJECT = 10] = "OBJECT";
      a[a.XML = 11] = "XML";
      a[a.BYTEARRAY = 12] = "BYTEARRAY";
      a[a.VECTOR_INT = 13] = "VECTOR_INT";
      a[a.VECTOR_UINT = 14] = "VECTOR_UINT";
      a[a.VECTOR_DOUBLE = 15] = "VECTOR_DOUBLE";
      a[a.VECTOR_OBJECT = 16] = "VECTOR_OBJECT";
      a[a.DICTIONARY = 17] = "DICTIONARY";
    })(k.AMF3Marker || (k.AMF3Marker = {}));
    k.aliasesCache = {classes:new WeakMap, names:Object.create(null)};
    w = function() {
      function a() {
      }
      a.write = function(a, b) {
        e(a, b, {});
      };
      a.read = function(a) {
        return n(a, {});
      };
      return a;
    }();
    k.AMF3 = w;
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load AVM2 Dependencies");
console.time("Load Compiled Code Cache");
console.timeEnd("Load Compiled Code Cache");
console.time("Load Flash TS Dependencies");
(function(b) {
  function k(a) {
    var b = {};
    a = a.split(",");
    for (var c = 0;c < a.length;c++) {
      b[a[c]] = !0;
    }
    return b;
  }
  var g = /^<([-A-Za-z0-9_]+)((?:\s+[-A-Za-z0-9_]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, f = /^<\/([-A-Za-z0-9_]+)[^>]*>/, t = /([-A-Za-z0-9_]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g, s = k("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"), m = k("address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul"), 
  d = k("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"), a = k("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"), c = k("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"), n = k("script,style");
  b.HTMLParser = function(b, e) {
    function q() {
      return this[this.length - 1];
    }
    function l(b, l, n, f) {
      l = l.toLowerCase();
      if (m[l]) {
        for (;q() && d[q()];) {
          k("", q());
        }
      }
      a[l] && q() == l && k("", l);
      (f = s[l] || !!f) || h.push(l);
      if (e.start) {
        var g = Object.create(null);
        n.replace(t, function(a, b, d, h, e) {
          b = b.toLowerCase();
          g[b] = d ? d : h ? h : e ? e : c[b] ? b : "";
          return a;
        });
        e.start && e.start(l, g, !!f);
      }
    }
    function k(a, b) {
      if (b) {
        for (c = h.length - 1;0 <= c && h[c] != b;c--) {
        }
      } else {
        var c = 0
      }
      if (0 <= c) {
        for (var d = h.length - 1;d >= c;d--) {
          e.end && e.end(h[d]);
        }
        h.length = c;
      }
    }
    for (var w, r, h = [], x = b;b;) {
      r = !0;
      if (q() && n[q()]) {
        b = b.replace(new RegExp("(.*)</" + q() + "[^>]*>"), function(a, b) {
          b = b.replace(/\x3c!--(.*?)--\x3e/g, "$1").replace(/<!\[CDATA\[(.*?)]]\x3e/g, "$1");
          e.chars && e.chars(b);
          return "";
        }), k("", q());
      } else {
        if (0 == b.indexOf("\x3c!--")) {
          w = b.indexOf("--\x3e"), 0 <= w && (e.comment && e.comment(b.substring(4, w)), b = b.substring(w + 3), r = !1);
        } else {
          if (0 == b.indexOf("</")) {
            if (w = b.match(f)) {
              b = b.substring(w[0].length), w[0].replace(f, k), r = !1;
            }
          } else {
            0 == b.indexOf("<") && (w = b.match(g)) && (b = b.substring(w[0].length), w[0].replace(g, l), r = !1);
          }
        }
        r && (w = b.indexOf("<"), r = 0 > w ? b : b.substring(0, w), b = 0 > w ? "" : b.substring(w), e.chars && e.chars(r));
      }
      if (b == x) {
        throw "Parse Error: " + b;
      }
      x = b;
    }
    k();
  };
})(Shumway || (Shumway = {}));
(function(b) {
  var k = b.Debug.notImplemented, g = b.Debug.somewhatImplemented, f = b.Bounds, t = b.ArrayUtilities.DataBuffer, s = b.ColorUtilities, m = b.AVM2.AS.flash;
  (function(a) {
    a[a.None = 0] = "None";
    a[a.DirtyBounds = 1] = "DirtyBounds";
    a[a.DirtyContent = 2] = "DirtyContent";
    a[a.DirtyStyle = 4] = "DirtyStyle";
    a[a.DirtyFlow = 8] = "DirtyFlow";
    a[a.Dirty = a.DirtyBounds | a.DirtyContent | a.DirtyStyle | a.DirtyFlow] = "Dirty";
  })(b.TextContentFlags || (b.TextContentFlags = {}));
  var d = {lt:"<", gt:">", amp:"&", quot:'"', apos:"'"}, a = function() {
    function a(b) {
      this._id = m.display.DisplayObject.getNextSyncID();
      this._bounds = new f(0, 0, 0, 0);
      this._plainText = "";
      this._autoSize = this._borderColor = this._backgroundColor = 0;
      this._wordWrap = !1;
      this.flags = 0;
      this.defaultTextFormat = b || new m.text.TextFormat;
      this.textRuns = [];
      this.textRunData = new t;
      this.coords = this.matrix = null;
    }
    a.prototype.parseHtml = function(a, c) {
      "undefined" === typeof c && (c = !1);
      var e = "", f = this.textRuns, l = f.length = 0, u = 0, w = this.defaultTextFormat.clone(), r = null, h = [], x;
      b.HTMLParser(a, x = {chars:function(a) {
        for (var c = "", h = 0;h < a.length;h++) {
          var n = a.charAt(h);
          if ("&" !== n) {
            c += n;
          } else {
            if (n = b.StringUtilities.indexOfAny(a, ["&", ";"], h + 1), 0 < n) {
              h = a.substring(h + 1, n);
              if (1 < h.length && "#" === h.charAt(0)) {
                var g = 0, g = 2 < h.length && "x" === h.charAt(1) ? parseInt(h.substring(1)) : parseInt(h.substring(2), 16), c = c + String.fromCharCode(g)
              } else {
                void 0 !== d[h] ? c += d[h] : b.Debug.unexpected(h);
              }
              h = n;
            } else {
              for (var p in d) {
                if (a.indexOf(p, h + 1) === h + 1) {
                  c += d[p];
                  h += p.length;
                  break;
                }
              }
            }
          }
        }
        a = c;
        e += a;
        u += a.length;
        u - l && (r && r.textFormat.equals(w) ? r.endIndex = u : (r = new m.text.TextRun(l, u, w), f.push(r)), l = u);
      }, start:function(a, b) {
        switch(a) {
          case "a":
            h.push(w);
            g("<a/>");
            var d = b.target || w.target, l = b.url || w.url;
            if (d !== w.target || l !== w.url) {
              w = w.clone(), w.target = d, w.url = l;
            }
            break;
          case "b":
            h.push(w);
            w.bold || (w = w.clone(), w.bold = !0);
            break;
          case "font":
            h.push(w);
            var d = s.isValidHexColor(b.color) ? s.hexToRGB(b.color) : w.color, l = b.face || w.font, n = isNaN(b.size) ? w.size : +b.size;
            if (d !== w.color || l !== w.font || n !== w.size) {
              w = w.clone(), w.color = d, w.font = l, w.size = n;
            }
            break;
          case "img":
            k("<img/>");
            break;
          case "i":
            h.push(w);
            r || (w = w.clone(), w.italic = !0);
            break;
          case "li":
            if (h.push(w), w.bullet || (w = w.clone(), w.bullet = !0), "\r" === e[e.length - 1]) {
              break;
            }
          ;
          case "br":
            c && x.chars("\r");
            break;
          case "p":
            h.push(w);
            d = b.align;
            -1 < m.text.TextFormatAlign.toNumber(d) && d !== w.align && (w = w.clone(), w.align = d);
            break;
          case "textformat":
            h.push(w);
            var d = isNaN(b.blockindent) ? w.blockIndent : +b.blockindent, l = isNaN(b.indent) ? w.indent : +b.indent, n = isNaN(b.leading) ? w.leading : +b.leading, f = isNaN(b.leftmargin) ? w.leftMargin : +b.leftmargin, q = isNaN(b.rightmargin) ? w.rightMargin : +b.rightmargin;
            if (d !== w.blockIndent || l !== w.indent || n !== w.leading || f !== w.leftMargin || q !== w.rightMargin) {
              w = w.clone(), w.blockIndent = d, w.indent = l, w.leading = n, w.leftMargin = f, w.rightMargin = q;
            }
            break;
          case "u":
            h.push(w), w.underline || (w = w.clone(), w.underline = !0);
        }
      }, end:function(a) {
        switch(a) {
          case "li":
          ;
          case "p":
            c && x.chars("\r");
          case "a":
          ;
          case "b":
          ;
          case "font":
          ;
          case "i":
          ;
          case "textformat":
          ;
          case "u":
            w = h.pop();
        }
      }});
      this._plainText = e;
      this.textRunData.clear();
      for (var y = 0;y < f.length;y++) {
        this._writeTextRun(f[y]);
      }
      this.flags |= 2;
    };
    Object.defineProperty(a.prototype, "plainText", {get:function() {
      return this._plainText;
    }, set:function(a) {
      this._plainText = a;
      this.textRuns.length = 0;
      a = new m.text.TextRun(0, a.length, this.defaultTextFormat);
      this.textRuns[0] = a;
      this.textRunData.clear();
      this._writeTextRun(a);
      this.flags |= 2;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "bounds", {get:function() {
      return this._bounds;
    }, set:function(a) {
      this._bounds.copyFrom(a);
      this.flags |= 1;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "autoSize", {get:function() {
      return this._autoSize;
    }, set:function(a) {
      a !== this._autoSize && (this._autoSize = a, this._plainText && (this.flags |= 8));
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "wordWrap", {get:function() {
      return this._wordWrap;
    }, set:function(a) {
      a !== this._wordWrap && (this._wordWrap = a, this._plainText && (this.flags |= 8));
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "backgroundColor", {get:function() {
      return this._backgroundColor;
    }, set:function(a) {
      a !== this._backgroundColor && (this._backgroundColor = a, this.flags |= 4);
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "borderColor", {get:function() {
      return this._borderColor;
    }, set:function(a) {
      a !== this._borderColor && (this._borderColor = a, this.flags |= 4);
    }, enumerable:!0, configurable:!0});
    a.prototype._writeTextRun = function(a) {
      var b = this.textRunData;
      b.writeInt(a.beginIndex);
      b.writeInt(a.endIndex);
      a = a.textFormat;
      var c = +a.size;
      b.writeInt(c);
      var d = m.text.Font.getByName(a.font) || m.text.Font.getDefaultFont();
      d.fontType === m.text.FontType.EMBEDDED ? b.writeInt(d._id) : (b.writeInt(0), b.writeUTF(m.text.Font.resolveFontName(d.fontName)));
      b.writeInt(d.ascent * c);
      b.writeInt(d.descent * c);
      b.writeInt(null === a.leading ? d.leading * c : +a.leading);
      c = null === a.bold ? d.fontStyle === m.text.FontStyle.BOLD || d.fontType === m.text.FontStyle.BOLD_ITALIC : !!a.bold;
      d = null === a.italic ? d.fontStyle === m.text.FontStyle.ITALIC || d.fontType === m.text.FontStyle.BOLD_ITALIC : !!a.italic;
      b.writeBoolean(c);
      b.writeBoolean(d);
      b.writeInt(+a.color);
      b.writeInt(m.text.TextFormatAlign.toNumber(a.align));
      b.writeBoolean(!!a.bullet);
      b.writeInt(+a.indent);
      b.writeInt(+a.kerning);
      b.writeInt(+a.leftMargin);
      b.writeInt(+a.letterSpacing);
      b.writeInt(+a.rightMargin);
      b.writeBoolean(!!a.underline);
    };
    return a;
  }();
  b.TextContent = a;
})(Shumway || (Shumway = {}));
var Shumway$$inline_423 = Shumway || (Shumway = {}), AVM2$$inline_424 = Shumway$$inline_423.AVM2 || (Shumway$$inline_423.AVM2 = {}), AS$$inline_425 = AVM2$$inline_424.AS || (AVM2$$inline_424.AS = {});
AS$$inline_425.flashOptions = Shumway$$inline_423.Settings.shumwayOptions.register(new Shumway$$inline_423.Options.OptionSet("Flash Options"));
AS$$inline_425.traceLoaderOption = AS$$inline_425.flashOptions.register(new Shumway$$inline_423.Options.Option("tp", "Trace Loader", "boolean", !1, "Trace loader execution."));
AS$$inline_425.disableAudioOption = AS$$inline_425.flashOptions.register(new Shumway$$inline_423.Options.Option("da", "Disable Audio", "boolean", !1, "Disables audio."));
var AS$$inline_426 = AVM2$$inline_424.AS, AVM2$$inline_427 = Shumway$$inline_423.AVM2, __extends = this.__extends || function(b, k) {
  function g() {
    this.constructor = b;
  }
  for (var f in k) {
    k.hasOwnProperty(f) && (b[f] = k[f]);
  }
  g.prototype = k.prototype;
  b.prototype = new g;
};
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(k) {
          var s = function(b) {
            function d(a, b, d, f, e, g) {
              "undefined" === typeof a && (a = 1);
              "undefined" === typeof b && (b = 0);
              "undefined" === typeof d && (d = 0);
              "undefined" === typeof f && (f = 1);
              "undefined" === typeof e && (e = 0);
              "undefined" === typeof g && (g = 0);
              var l = this._data = new Float64Array(6);
              l[0] = a;
              l[1] = b;
              l[2] = d;
              l[3] = f;
              l[4] = e;
              l[5] = g;
            }
            __extends(d, b);
            d.FromUntyped = function(a) {
              return new f.geom.Matrix(a.a, a.b, a.c, a.d, a.tx, a.ty);
            };
            d.FromDataBuffer = function(a) {
              return new f.geom.Matrix(a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat());
            };
            Object.defineProperty(d.prototype, "a", {get:function() {
              return this._data[0];
            }, set:function(a) {
              this._data[0] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "b", {get:function() {
              return this._data[1];
            }, set:function(a) {
              this._data[1] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "c", {get:function() {
              return this._data[2];
            }, set:function(a) {
              this._data[2] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "d", {get:function() {
              return this._data[3];
            }, set:function(a) {
              this._data[3] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "tx", {get:function() {
              return this._data[4];
            }, set:function(a) {
              this._data[4] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "ty", {get:function() {
              return this._data[5];
            }, set:function(a) {
              this._data[5] = a;
            }, enumerable:!0, configurable:!0});
            d.prototype.concat = function(a) {
              var b = this._data;
              a = a._data;
              var d = b[0] * a[0], f = 0, e = 0, g = b[3] * a[3], l = b[4] * a[0] + a[4], m = b[5] * a[3] + a[5];
              if (0 !== b[1] || 0 !== b[2] || 0 !== a[1] || 0 !== a[2]) {
                d += b[1] * a[2], g += b[2] * a[1], f += b[0] * a[1] + b[1] * a[3], e += b[2] * a[0] + b[3] * a[2], l += b[5] * a[2], m += b[4] * a[1];
              }
              b[0] = d;
              b[1] = f;
              b[2] = e;
              b[3] = g;
              b[4] = l;
              b[5] = m;
            };
            d.prototype.preMultiply = function(a) {
              this.preMultiplyInto(a, this);
            };
            d.prototype.preMultiplyInto = function(a, b) {
              var d = this._data, f = a._data, e = b._data, g = f[0] * d[0], l = 0, m = 0, k = f[3] * d[3], r = f[4] * d[0] + d[4], h = f[5] * d[3] + d[5];
              if (0 !== f[1] || 0 !== f[2] || 0 !== d[1] || 0 !== d[2]) {
                g += f[1] * d[2], k += f[2] * d[1], l += f[0] * d[1] + f[1] * d[3], m += f[2] * d[0] + f[3] * d[2], r += f[5] * d[2], h += f[4] * d[1];
              }
              e[0] = g;
              e[1] = l;
              e[2] = m;
              e[3] = k;
              e[4] = r;
              e[5] = h;
            };
            d.prototype.invert = function() {
              this.invertInto(this);
            };
            d.prototype.invertInto = function(a) {
              var b = this._data, d = a._data, f = b[1], e = b[2], g = b[4], l = b[5];
              if (0 === f && 0 === e) {
                var m = d[0] = 1 / b[0], b = d[3] = 1 / b[3];
                d[1] = d[2] = 0;
                d[4] = -m * g;
                d[5] = -b * l;
              } else {
                var m = b[0], b = b[3], k = m * b - f * e;
                0 === k ? a.identity() : (k = 1 / k, a = 0, a = d[0] = b * k, f = d[1] = -f * k, e = d[2] = -e * k, b = d[3] = m * k, d[4] = -(a * g + e * l), d[5] = -(f * g + b * l));
              }
            };
            d.prototype.identity = function() {
              var a = this._data;
              a[0] = a[3] = 1;
              a[1] = a[2] = a[4] = a[5] = 0;
            };
            d.prototype.createBox = function(a, b, d, f, e) {
              "undefined" === typeof d && (d = 0);
              "undefined" === typeof f && (f = 0);
              "undefined" === typeof e && (e = 0);
              var g = this._data;
              if (0 !== d) {
                var l = Math.cos(d);
                d = Math.sin(d);
                g[0] = l * a;
                g[1] = d * b;
                g[2] = -d * a;
                g[3] = l * b;
              } else {
                g[0] = a, g[1] = 0, g[2] = 0, g[3] = b;
              }
              g[4] = f;
              g[5] = e;
            };
            d.prototype.createGradientBox = function(a, b, d, f, e) {
              "undefined" === typeof d && (d = 0);
              "undefined" === typeof f && (f = 0);
              "undefined" === typeof e && (e = 0);
              this.createBox(a / 1638.4, b / 1638.4, d, f + a / 2, e + b / 2);
            };
            d.prototype.rotate = function(a) {
              a = +a;
              if (0 !== a) {
                var b = this._data, d = Math.cos(a);
                a = Math.sin(a);
                var f = b[0], e = b[1], g = b[2], l = b[3], m = b[4], k = b[5];
                b[0] = f * d - e * a;
                b[1] = f * a + e * d;
                b[2] = g * d - l * a;
                b[3] = g * a + l * d;
                b[4] = m * d - k * a;
                b[5] = m * a + k * d;
              }
            };
            d.prototype.translate = function(a, b) {
              var d = this._data;
              d[4] += a;
              d[5] += b;
            };
            d.prototype.scale = function(a, b) {
              var d = this._data;
              1 !== a && (d[0] *= a, d[2] *= a, d[4] *= a);
              1 !== b && (d[1] *= b, d[3] *= b, d[5] *= b);
            };
            d.prototype.deltaTransformPoint = function(a) {
              return new k.Point(this._data[0] * a.x + this._data[2] * a.y, this._data[1] * a.x + this._data[3] * a.y);
            };
            d.prototype.transformX = function(a, b) {
              var d = this._data;
              return d[0] * a + d[2] * b + d[4];
            };
            d.prototype.transformY = function(a, b) {
              var d = this._data;
              return d[1] * a + d[3] * b + d[5];
            };
            d.prototype.transformPoint = function(a) {
              var b = this._data;
              return new k.Point(b[0] * a.x + b[2] * a.y + b[4], b[1] * a.x + b[3] * a.y + b[5]);
            };
            d.prototype.transformPointInPlace = function(a) {
              var b = this._data;
              a.setTo(b[0] * a.x + b[2] * a.y + b[4], b[1] * a.x + b[3] * a.y + b[5]);
              return a;
            };
            d.prototype.transformBounds = function(a) {
              var b = this._data, d = b[0], f = b[1], e = b[2], g = b[3], l = b[4], m = b[5], k = a.xMin, r = a.yMin, h = a.width, x = a.height, b = Math.round(d * k + e * r + l), s = Math.round(f * k + g * r + m), t = Math.round(d * (k + h) + e * r + l), I = Math.round(f * (k + h) + g * r + m), C = Math.round(d * (k + h) + e * (r + x) + l), h = Math.round(f * (k + h) + g * (r + x) + m), d = Math.round(d * k + e * (r + x) + l), f = Math.round(f * k + g * (r + x) + m), g = 0;
              b > t && (g = b, b = t, t = g);
              C > d && (g = C, C = d, d = g);
              a.xMin = b < C ? b : C;
              a.xMax = t > d ? t : d;
              s > I && (g = s, s = I, I = g);
              h > f && (g = h, h = f, f = g);
              a.yMin = s < h ? s : h;
              a.yMax = I > f ? I : f;
            };
            d.prototype.getDeterminant = function() {
              var a = this._data;
              return a[0] * a[3] - a[1] * a[2];
            };
            d.prototype.getScaleX = function() {
              var a = this._data;
              if (1 === a[0] && 0 === a[1]) {
                return 1;
              }
              a = Math.sqrt(a[0] * a[0] + a[1] * a[1]);
              return 0 > this.getDeterminant() ? -a : a;
            };
            d.prototype.getScaleY = function() {
              var a = this._data;
              if (0 === a[2] && 1 === a[3]) {
                return 1;
              }
              a = Math.sqrt(a[2] * a[2] + a[3] * a[3]);
              return 0 > this.getDeterminant() ? -a : a;
            };
            d.prototype.getAbsoluteScaleX = function() {
              return Math.abs(this.getScaleX());
            };
            d.prototype.getAbsoluteScaleY = function() {
              return Math.abs(this.getScaleY());
            };
            d.prototype.getRotation = function() {
              return Math.atan2(this._data[1], this._data[0]);
            };
            d.prototype.copyFrom = function(a) {
              var b = this._data;
              a = a._data;
              b[0] = a[0];
              b[1] = a[1];
              b[2] = a[2];
              b[3] = a[3];
              b[4] = a[4];
              b[5] = a[5];
            };
            d.prototype.setTo = function(a, b, d, f, e, g) {
              var l = this._data;
              l[0] = a;
              l[1] = b;
              l[2] = d;
              l[3] = f;
              l[4] = e;
              l[5] = g;
            };
            d.prototype.toTwipsInPlace = function() {
              var a = this._data;
              a[4] = 20 * a[4] | 0;
              a[5] = 20 * a[5] | 0;
              return this;
            };
            d.prototype.toPixelsInPlace = function() {
              var a = this._data;
              a[4] /= 20;
              a[5] /= 20;
              return this;
            };
            d.prototype.copyRowTo = function(a, b) {
              var d = this._data;
              a >>>= 0;
              0 === a ? (b.x = d[0], b.y = d[2], b.z = d[4]) : 1 === a ? (b.x = d[1], b.y = d[3], b.z = d[5]) : 2 === a && (b.x = 0, b.y = 0, b.z = 1);
            };
            d.prototype.copyColumnTo = function(a, b) {
              var d = this._data;
              a >>>= 0;
              0 === a ? (b.x = d[0], b.y = d[1], b.z = 0) : 1 === a ? (b.x = d[2], b.y = d[3], b.z = 0) : 2 === a && (b.x = d[4], b.y = d[5], b.z = 1);
            };
            d.prototype.copyRowFrom = function(a, b) {
              var d = this._data;
              a >>>= 0;
              0 === a ? (d[0] = b.x, d[2] = b.y, d[4] = b.z) : 1 === a && (d[1] = b.x, d[3] = b.y, d[5] = b.z);
            };
            d.prototype.copyColumnFrom = function(a, b) {
              var d = this._data;
              a >>>= 0;
              0 === a ? (d[0] = b.x, d[2] = b.y, d[4] = b.z) : 1 === a && (d[1] = b.x, d[3] = b.y, d[5] = b.z);
            };
            d.prototype.updateScaleAndRotation = function(a, b, d) {
              var f = this._data;
              if (0 === d || 360 === d) {
                f[0] = a, f[1] = f[2] = 0, f[3] = b;
              } else {
                var e = 0, g = 0;
                switch(d) {
                  case 90:
                  ;
                  case -270:
                    e = 0;
                    g = 1;
                    break;
                  case 180:
                  ;
                  case -180:
                    e = -1;
                    g = 0;
                    break;
                  case 270:
                  ;
                  case -90:
                    e = 0;
                    g = -1;
                    break;
                  default:
                    d = d / 180 * Math.PI, e = Math.cos(d), g = Math.sin(d);
                }
                f[0] = e * a;
                f[1] = g * a;
                f[2] = -g * b;
                f[3] = e * b;
              }
            };
            d.prototype.clone = function() {
              var a = this._data;
              return new f.geom.Matrix(a[0], a[1], a[2], a[3], a[4], a[5]);
            };
            d.prototype.equals = function(a) {
              var b = this._data;
              a = a._data;
              return b[0] === a[0] && b[1] === a[1] && b[2] === a[2] && b[3] === a[3] && b[4] === a[4] && b[5] === a[5];
            };
            d.prototype.toString = function() {
              var a = this._data;
              return "(a=" + a[0] + ", b=" + a[1] + ", c=" + a[2] + ", d=" + a[3] + ", tx=" + a[4] + ", ty=" + a[5] + ")";
            };
            d.prototype.writeExternal = function(a) {
              var b = this._data;
              a.writeFloat(b[0]);
              a.writeFloat(b[1]);
              a.writeFloat(b[2]);
              a.writeFloat(b[3]);
              a.writeFloat(b[4]);
              a.writeFloat(b[5]);
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.FROZEN_IDENTITY_MATRIX = Object.freeze(new d);
            d.TEMP_MATRIX = new d;
            return d;
          }(b.ASNative);
          k.Matrix = s;
        })(f.geom || (f.geom = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          function s(a, b, c, d, l, g, m) {
            var r = b * b, h = c * c, k = d * d, s = r + h + k, t = Math.sqrt(s);
            b /= t;
            c /= t;
            d /= t;
            r /= s;
            h /= s;
            k /= s;
            s = Math.cos(a);
            a = Math.sin(a);
            return new f.geom.Matrix3D([r + (h + k) * s, b * c * (1 - s) + d * a, b * d * (1 - s) - c * a, 0, b * c * (1 - s) - d * a, h + (r + k) * s, c * d * (1 - s) + b * a, 0, b * d * (1 - s) + c * a, c * d * (1 - s) - b * a, k + (r + h) * s, 0, (l * (h + k) - b * (g * c + m * d)) * (1 - s) + (g * d - m * c) * a, (g * (r + k) - c * (l * b + m * d)) * (1 - s) + (m * b - l * d) * a, (m * (r + h) - d * (l * b + g * c)) * (1 - s) + (l * c - g * b) * a, 1]);
          }
          var m = b.Debug.notImplemented, d = b.AVM2.Runtime.asCoerceString, a = new Uint32Array([0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15]), c = function(b) {
            function c(a) {
              "undefined" === typeof a && (a = null);
              this._matrix = new Float32Array(16);
              a && 16 <= a.length ? this.copyRawDataFrom(a) : this.identity();
            }
            __extends(c, b);
            c.interpolate = function(a, b, c) {
              m("public flash.geom.Matrix3D::static interpolate");
            };
            Object.defineProperty(c.prototype, "rawData", {get:function() {
              var a = new g.Float64Vector;
              this.copyRawDataTo(a);
              return a;
            }, set:function(a) {
              this.copyRawDataFrom(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "position", {get:function() {
              var a = this._matrix;
              return new f.geom.Vector3D(a[12], a[13], a[14]);
            }, set:function(a) {
              var b = this._matrix;
              b[12] = a.x;
              b[13] = a.y;
              b[14] = a.z;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "determinant", {get:function() {
              var a = this._matrix, b = a[4], c = a[8], d = a[12], f = a[5], n = a[9], h = a[13], g = a[6], p = a[10], m = a[14], k = a[7], s = a[11], t = a[15];
              return a[0] * (f * (p * t - s * m) - g * (n * t - s * h) + k * (n * m - p * h)) - a[1] * (b * (p * t - s * m) - g * (c * t - s * d) + k * (c * m - p * d)) + a[2] * (b * (n * t - s * h) - f * (c * t - s * d) + k * (c * h - n * d)) - a[3] * (b * (n * m - p * h) - f * (c * m - p * d) + g * (c * h - n * d));
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new f.geom.Matrix3D(this._matrix);
            };
            c.prototype.copyToMatrix3D = function(a) {
              a._matrix.set(this._matrix);
            };
            c.prototype.append = function(a) {
              var b = a._matrix, c = this._matrix;
              a = this._matrix;
              var d = b[0], f = b[4], n = b[8], h = b[12], g = b[1], p = b[5], m = b[9], k = b[13], s = b[2], t = b[6], O = b[10], K = b[14], F = b[3], J = b[7], A = b[11], b = b[15], B = c[0], z = c[4], P = c[8], D = c[12], L = c[1], M = c[5], V = c[9], Q = c[13], U = c[2], S = c[6], aa = c[10], $ = c[14], ea = c[3], Z = c[7], v = c[11], c = c[15];
              a[0] = d * B + f * L + n * U + h * ea;
              a[1] = g * B + p * L + m * U + k * ea;
              a[2] = s * B + t * L + O * U + K * ea;
              a[3] = F * B + J * L + A * U + b * ea;
              a[4] = d * z + f * M + n * S + h * Z;
              a[5] = g * z + p * M + m * S + k * Z;
              a[6] = s * z + t * M + O * S + K * Z;
              a[7] = F * z + J * M + A * S + b * Z;
              a[8] = d * P + f * V + n * aa + h * v;
              a[9] = g * P + p * V + m * aa + k * v;
              a[10] = s * P + t * V + O * aa + K * v;
              a[11] = F * P + J * V + A * aa + b * v;
              a[12] = d * D + f * Q + n * $ + h * c;
              a[13] = g * D + p * Q + m * $ + k * c;
              a[14] = s * D + t * Q + O * $ + K * c;
              a[15] = F * D + J * Q + A * $ + b * c;
            };
            c.prototype.prepend = function(a) {
              var b = this._matrix, c = a._matrix;
              a = this._matrix;
              var d = b[0], f = b[4], n = b[8], h = b[12], g = b[1], p = b[5], m = b[9], k = b[13], s = b[2], t = b[6], O = b[10], K = b[14], F = b[3], J = b[7], A = b[11], b = b[15], B = c[0], z = c[4], P = c[8], D = c[12], L = c[1], M = c[5], V = c[9], Q = c[13], U = c[2], S = c[6], aa = c[10], $ = c[14], ea = c[3], Z = c[7], v = c[11], c = c[15];
              a[0] = d * B + f * L + n * U + h * ea;
              a[1] = g * B + p * L + m * U + k * ea;
              a[2] = s * B + t * L + O * U + K * ea;
              a[3] = F * B + J * L + A * U + b * ea;
              a[4] = d * z + f * M + n * S + h * Z;
              a[5] = g * z + p * M + m * S + k * Z;
              a[6] = s * z + t * M + O * S + K * Z;
              a[7] = F * z + J * M + A * S + b * Z;
              a[8] = d * P + f * V + n * aa + h * v;
              a[9] = g * P + p * V + m * aa + k * v;
              a[10] = s * P + t * V + O * aa + K * v;
              a[11] = F * P + J * V + A * aa + b * v;
              a[12] = d * D + f * Q + n * $ + h * c;
              a[13] = g * D + p * Q + m * $ + k * c;
              a[14] = s * D + t * Q + O * $ + K * c;
              a[15] = F * D + J * Q + A * $ + b * c;
            };
            c.prototype.invert = function() {
              var a = this.determinant;
              if (1E-7 > Math.abs(a)) {
                return!1;
              }
              var a = 1 / a, b = this._matrix, c = b[0], d = b[1], f = b[2], n = b[3], h = b[4], g = b[5], p = b[6], m = b[7], k = b[8], s = b[9], t = b[10], O = b[11], K = b[12], F = b[13], J = b[14], A = b[15];
              b[0] = a * (g * (t * A - J * O) - s * (p * A - J * m) + F * (p * O - t * m));
              b[1] = -a * (d * (t * A - J * O) - s * (f * A - J * n) + F * (f * O - t * n));
              b[2] = a * (d * (p * A - J * m) - g * (f * A - J * n) + F * (f * m - p * n));
              b[3] = -a * (d * (p * O - t * m) - g * (f * O - t * n) + s * (f * m - p * n));
              b[4] = -a * (h * (t * A - J * O) - k * (p * A - J * m) + K * (p * O - t * m));
              b[5] = a * (c * (t * A - J * O) - k * (f * A - J * n) + K * (f * O - t * n));
              b[6] = -a * (c * (p * A - J * m) - h * (f * A - J * n) + K * (f * m - p * n));
              b[7] = a * (c * (p * O - t * m) - h * (f * O - t * n) + k * (f * m - p * n));
              b[8] = a * (h * (s * A - F * O) - k * (g * A - F * m) + K * (g * O - s * m));
              b[9] = -a * (c * (s * A - F * O) - k * (d * A - F * n) + K * (d * O - s * n));
              b[10] = a * (c * (g * A - F * m) - h * (d * A - F * n) + K * (d * m - g * n));
              b[11] = -a * (c * (g * O - s * m) - h * (d * O - s * n) + k * (d * m - g * n));
              b[12] = -a * (h * (s * J - F * t) - k * (g * J - F * p) + K * (g * t - s * p));
              b[13] = a * (c * (s * J - F * t) - k * (d * J - F * f) + K * (d * t - s * f));
              b[14] = -a * (c * (g * J - F * p) - h * (d * J - F * f) + K * (d * p - g * f));
              b[15] = a * (c * (g * t - s * p) - h * (d * t - s * f) + k * (d * p - g * f));
              return!0;
            };
            c.prototype.identity = function() {
              var a = this._matrix;
              a[0] = a[5] = a[10] = a[15] = 1;
              a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[11] = a[12] = a[13] = a[14] = 0;
            };
            c.prototype.decompose = function(a) {
              "undefined" === typeof a && (a = "eulerAngles");
              d(a);
              m("public flash.geom.Matrix3D::decompose");
            };
            c.prototype.recompose = function(a, b) {
              "undefined" === typeof b && (b = "eulerAngles");
              d(b);
              m("public flash.geom.Matrix3D::recompose");
            };
            c.prototype.appendTranslation = function(a, b, c) {
              a = +a;
              b = +b;
              c = +c;
              var d = this._matrix, f = d[3], n = d[7], h = d[11], g = d[15];
              d[0] += a * f;
              d[1] += b * f;
              d[2] += c * f;
              d[4] += a * n;
              d[5] += b * n;
              d[6] += c * n;
              d[8] += a * h;
              d[9] += b * h;
              d[10] += c * h;
              d[12] += a * g;
              d[13] += b * g;
              d[14] += c * g;
            };
            c.prototype.appendRotation = function(a, b, c) {
              "undefined" === typeof c && (c = null);
              this.append(s(+a / 180 * Math.PI, b.x, b.y, b.z, c ? c.x : 0, c ? c.y : 0, c ? c.z : 0));
            };
            c.prototype.appendScale = function(a, b, c) {
              a = +a;
              b = +b;
              c = +c;
              var d = this._matrix;
              d[0] *= a;
              d[1] *= b;
              d[2] *= c;
              d[4] *= a;
              d[5] *= b;
              d[6] *= c;
              d[8] *= a;
              d[9] *= b;
              d[10] *= c;
              d[12] *= a;
              d[13] *= b;
              d[14] *= c;
            };
            c.prototype.prependTranslation = function(a, b, c) {
              a = +a;
              b = +b;
              c = +c;
              var d = this._matrix, f = d[1], n = d[5], h = d[9], g = d[2], p = d[6], m = d[10], k = d[3], s = d[7], t = d[11];
              d[12] += d[0] * a + d[4] * b + d[8] * c;
              d[13] += f * a + n * b + h * c;
              d[14] += g * a + p * b + m * c;
              d[15] += k * a + s * b + t * c;
            };
            c.prototype.prependRotation = function(a, b, c) {
              "undefined" === typeof c && (c = null);
              this.prepend(s(+a / 180 * Math.PI, b.x, b.y, b.z, c ? c.x : 0, c ? c.y : 0, c ? c.z : 0));
            };
            c.prototype.prependScale = function(a, b, c) {
              a = +a;
              b = +b;
              c = +c;
              var d = this._matrix;
              d[0] *= a;
              d[1] *= a;
              d[2] *= a;
              d[3] *= a;
              d[4] *= b;
              d[5] *= b;
              d[6] *= b;
              d[7] *= b;
              d[8] *= c;
              d[9] *= c;
              d[10] *= c;
              d[11] *= c;
            };
            c.prototype.transformVector = function(a) {
              var b = this._matrix, c = a.x, d = a.y;
              a = a.z;
              return new f.geom.Vector3D(b[0] * c + b[4] * d + b[8] * a + b[12], b[1] * c + b[5] * d + b[9] * a + b[13], b[2] * c + b[6] * d + b[10] * a + b[14]);
            };
            c.prototype.deltaTransformVector = function(a) {
              var b = this._matrix, c = a.x, d = a.y;
              a = a.z;
              return new f.geom.Vector3D(b[0] * c + b[4] * d + b[8] * a, b[1] * c + b[5] * d + b[9] * a, b[2] * c + b[6] * d + b[10] * a);
            };
            c.prototype.transformVectors = function(a, b) {
              for (var c = this._matrix, d = c[0], f = c[4], n = c[8], h = c[12], g = c[1], p = c[5], m = c[9], k = c[13], s = c[2], t = c[6], O = c[10], c = c[14], K = 0;K < a.length - 2;K += 3) {
                var F = a.asGetNumericProperty(K), J = a.asGetNumericProperty(K + 1), A = a.asGetNumericProperty(K + 2);
                b.push(d * F + f * J + n * A + h);
                b.push(g * F + p * J + m * A + k);
                b.push(s * F + t * J + O * A + c);
              }
            };
            c.prototype.transpose = function() {
              var a = this._matrix, b;
              b = a[1];
              a[1] = a[4];
              a[4] = b;
              b = a[2];
              a[2] = a[8];
              a[5] = b;
              b = a[3];
              a[3] = a[12];
              a[12] = b;
              b = a[6];
              a[6] = a[9];
              a[9] = b;
              b = a[7];
              a[7] = a[13];
              a[13] = b;
              b = a[11];
              a[11] = a[14];
              a[14] = b;
            };
            c.prototype.pointAt = function(a, b, c) {
              m("public flash.geom.Matrix3D::pointAt");
            };
            c.prototype.interpolateTo = function(a, b) {
              m("public flash.geom.Matrix3D::interpolateTo");
            };
            c.prototype.copyFrom = function(a) {
              this._matrix.set(a._matrix);
            };
            c.prototype.copyRawDataTo = function(b) {
              var c = 0, d = !1;
              "undefined" === typeof c && (c = 0);
              "undefined" === typeof d && (d = !1);
              var c = c >>> 0, f = this._matrix;
              if (d) {
                for (d = 0, c |= 0;16 > d;d++, c++) {
                  b.asSetNumericProperty(c, f[a[d]]);
                }
              } else {
                for (d = 0, c |= 0;16 > d;d++, c++) {
                  b.asSetNumericProperty(c, f[d]);
                }
              }
            };
            c.prototype.copyRawDataFrom = function(b) {
              var c = 0, d = !1;
              "undefined" === typeof c && (c = 0);
              "undefined" === typeof d && (d = !1);
              var c = c >>> 0, f = this._matrix;
              if (d) {
                for (d = 0, c |= 0;16 > d;d++, c++) {
                  f[a[d]] = b.asGetNumericProperty(c) || 0;
                }
              } else {
                for (d = 0, c |= 0;16 > d;d++, c++) {
                  f[d] = b.asGetNumericProperty(c) || 0;
                }
              }
            };
            c.prototype.copyRowTo = function(a, b) {
              var c = a >>> 0 | 0, d = this._matrix;
              b.x = d[c];
              b.y = d[c + 4];
              b.z = d[c + 8];
              b.w = d[c + 12];
            };
            c.prototype.copyColumnTo = function(a, b) {
              var c = a >>> 0 << 2, d = this._matrix;
              b.x = d[c];
              b.y = d[c + 1];
              b.z = d[c + 2];
              b.w = d[c + 3];
            };
            c.prototype.copyRowFrom = function(a, b) {
              var c = a >>> 0 | 0, d = this._matrix;
              d[c] = b.x;
              d[c + 4] = b.y;
              d[c + 8] = b.z;
              d[c + 12] = b.w;
            };
            c.prototype.copyColumnFrom = function(a, b) {
              var c = a >>> 0 << 2, d = this._matrix;
              d[c] = b.x;
              d[c + 1] = b.y;
              d[c + 2] = b.z;
              d[c + 3] = b.w;
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(g.ASNative);
          k.Matrix3D = c;
        })(f.geom || (f.geom = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.geom.Orientation3D");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.EULER_ANGLES = "eulerAngles";
            a.AXIS_ANGLE = "axisAngle";
            a.QUATERNION = "quaternion";
            return a;
          }(g.ASNative);
          f.Orientation3D = m;
        })(f.geom || (f.geom = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.geom.PerspectiveProjection");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "fieldOfView", {get:function() {
              k("public flash.geom.PerspectiveProjection::get fieldOfView");
            }, set:function(a) {
              k("public flash.geom.PerspectiveProjection::set fieldOfView");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "projectionCenter", {get:function() {
              k("public flash.geom.PerspectiveProjection::get projectionCenter");
            }, set:function(a) {
              k("public flash.geom.PerspectiveProjection::set projectionCenter");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "focalLength", {get:function() {
              k("public flash.geom.PerspectiveProjection::get focalLength");
            }, set:function(a) {
              k("public flash.geom.PerspectiveProjection::set focalLength");
            }, enumerable:!0, configurable:!0});
            a.prototype.toMatrix3D = function() {
              k("public flash.geom.PerspectiveProjection::toMatrix3D");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.PerspectiveProjection = m;
        })(f.geom || (f.geom = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d(a, b) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof b && (b = 0);
              this.x = +a;
              this.y = +b;
            }
            __extends(d, b);
            Object.defineProperty(d.prototype, "native_x", {get:function() {
              return this.x;
            }, set:function(a) {
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_y", {get:function() {
              return this.y;
            }, set:function(a) {
              this.y = a;
            }, enumerable:!0, configurable:!0});
            d.prototype.Point = function(a, b) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof b && (b = 0);
              this.x = a;
              this.y = b;
            };
            Object.defineProperty(d.prototype, "length", {get:function() {
              return Math.sqrt(this.x * this.x + this.y * this.y);
            }, enumerable:!0, configurable:!0});
            d.interpolate = function(a, b, f) {
              var g = 1 - f;
              return new d(a.x * f + b.x * g, a.y * f + b.y * g);
            };
            d.distance = function(a, b) {
              var d = b.x - a.x, f = b.y - a.y;
              return 0 === d ? Math.abs(f) : 0 === f ? Math.abs(d) : Math.sqrt(d * d + f * f);
            };
            d.polar = function(a, b) {
              a = +a;
              b = +b;
              return new d(a * Math.cos(b), a * Math.sin(b));
            };
            d.prototype.clone = function() {
              return new d(this.x, this.y);
            };
            d.prototype.offset = function(a, b) {
              this.x += +a;
              this.y += +b;
            };
            d.prototype.equals = function(a) {
              return this.x === a.x && this.y === a.y;
            };
            d.prototype.subtract = function(a) {
              return new d(this.x - a.x, this.y - a.y);
            };
            d.prototype.add = function(a) {
              return new d(this.x + a.x, this.y + a.y);
            };
            d.prototype.normalize = function(a) {
              if (0 !== this.x || 0 !== this.y) {
                a = +a / this.length, this.x *= a, this.y *= a;
              }
            };
            d.prototype.copyFrom = function(a) {
              this.x = a.x;
              this.y = a.y;
            };
            d.prototype.setTo = function(a, b) {
              this.x = +a;
              this.y = +b;
            };
            d.prototype.toTwips = function() {
              this.x = 20 * this.x | 0;
              this.y = 20 * this.y | 0;
              return this;
            };
            d.prototype.toPixels = function() {
              this.x /= 20;
              this.y /= 20;
              return this;
            };
            d.prototype.round = function() {
              this.x = Math.round(this.x);
              this.y = Math.round(this.y);
              return this;
            };
            d.prototype.toString = function() {
              return "(x=" + this.x + ", y=" + this.y + ")";
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(b.ASNative);
          f.Point = k;
        })(f.geom || (f.geom = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d(a, b, d, f) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof b && (b = 0);
              "undefined" === typeof d && (d = 0);
              "undefined" === typeof f && (f = 0);
              this.x = +a;
              this.y = +b;
              this.width = +d;
              this.height = +f;
            }
            __extends(d, b);
            d.FromBounds = function(a) {
              var b = a.xMin, f = a.yMin;
              return new d(b / 20, f / 20, (a.xMax - b) / 20, (a.yMax - f) / 20);
            };
            Object.defineProperty(d.prototype, "native_x", {get:function() {
              return this.x;
            }, set:function(a) {
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_y", {get:function() {
              return this.y;
            }, set:function(a) {
              this.y = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_width", {get:function() {
              return this.width;
            }, set:function(a) {
              this.width = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_height", {get:function() {
              return this.height;
            }, set:function(a) {
              this.height = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "left", {get:function() {
              return this.x;
            }, set:function(a) {
              a = +a;
              this.width += this.x - a;
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "right", {get:function() {
              return this.x + this.width;
            }, set:function(a) {
              this.width = +a - this.x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "top", {get:function() {
              return this.y;
            }, set:function(a) {
              a = +a;
              this.height += this.y - a;
              this.y = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "bottom", {get:function() {
              return this.y + this.height;
            }, set:function(a) {
              this.height = +a - this.y;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "topLeft", {get:function() {
              return new f.Point(this.left, this.top);
            }, set:function(a) {
              this.top = a.y;
              this.left = a.x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "bottomRight", {get:function() {
              return new f.Point(this.right, this.bottom);
            }, set:function(a) {
              this.bottom = a.y;
              this.right = a.x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "size", {get:function() {
              return new f.Point(this.width, this.height);
            }, set:function(a) {
              this.width = a.x;
              this.height = a.y;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "area", {get:function() {
              return this.width * this.height;
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new d(this.x, this.y, this.width, this.height);
            };
            d.prototype.isEmpty = function() {
              return 0 >= this.width || 0 >= this.height;
            };
            d.prototype.setEmpty = function() {
              this.height = this.width = this.y = this.x = 0;
            };
            d.prototype.inflate = function(a, b) {
              a = +a;
              b = +b;
              this.x -= a;
              this.y -= b;
              this.width += 2 * a;
              this.height += 2 * b;
            };
            d.prototype.inflatePoint = function(a) {
              this.inflate(a.x, a.y);
            };
            d.prototype.offset = function(a, b) {
              this.x += +a;
              this.y += +b;
            };
            d.prototype.offsetPoint = function(a) {
              this.offset(a.x, a.y);
            };
            d.prototype.contains = function(a, b) {
              a = +a;
              b = +b;
              return a >= this.x && a < this.right && b >= this.y && b < this.bottom;
            };
            d.prototype.containsPoint = function(a) {
              return this.contains(a.x, a.y);
            };
            d.prototype.containsRect = function(a) {
              var b = a.x + a.width, d = a.y + a.height, f = this.x + this.width, e = this.y + this.height;
              return a.x >= this.x && a.x < f && a.y >= this.y && a.y < e && b > this.x && b <= f && d > this.y && d <= e;
            };
            d.prototype.intersection = function(a) {
              return this.clone().intersectInPlace(a);
            };
            d.prototype.intersects = function(a) {
              return Math.max(this.x, a.x) <= Math.min(this.right, a.right) && Math.max(this.y, a.y) <= Math.min(this.bottom, a.bottom);
            };
            d.prototype.intersectInPlace = function(a) {
              var b = this.x, d = this.y, f = a.x, e = a.y, g = Math.max(b, f), b = Math.min(b + this.width, f + a.width);
              if (g <= b && (f = Math.max(d, e), a = Math.min(d + this.height, e + a.height), f <= a)) {
                return this.setTo(g, f, b - g, a - f), this;
              }
              this.setEmpty();
              return this;
            };
            d.prototype.intersectInPlaceInt32 = function(a) {
              var b = this.x | 0, d = this.y | 0, f = this.width | 0, e = this.height | 0, g = a.x | 0, l = a.width | 0, m = Math.max(b, g) | 0, b = Math.min(b + f | 0, g + l | 0) | 0;
              if (m <= b && (f = a.y | 0, g = a.height | 0, a = Math.max(d, f) | 0, d = Math.min(d + e | 0, f + g | 0), a <= d)) {
                return this.setTo(m, a, b - m, d - a), this;
              }
              this.setEmpty();
              return this;
            };
            d.prototype.union = function(a) {
              return this.clone().unionInPlace(a);
            };
            d.prototype.unionInPlace = function(a) {
              if (!a.isEmpty()) {
                if (this.isEmpty()) {
                  this.copyFrom(a);
                } else {
                  var b = Math.min(this.x, a.x), d = Math.min(this.y, a.y);
                  this.setTo(b, d, Math.max(this.right, a.right) - b, Math.max(this.bottom, a.bottom) - d);
                  return this;
                }
              }
            };
            d.prototype.equals = function(a) {
              return this.x === a.x && this.y === a.y && this.width === a.width && this.height === a.height;
            };
            d.prototype.copyFrom = function(a) {
              this.x = a.x;
              this.y = a.y;
              this.width = a.width;
              this.height = a.height;
            };
            d.prototype.setTo = function(a, b, d, f) {
              this.x = +a;
              this.y = +b;
              this.width = +d;
              this.height = +f;
            };
            d.prototype.toTwips = function() {
              this.x = 20 * this.x | 0;
              this.y = 20 * this.y | 0;
              this.width = 20 * this.width | 0;
              this.height = 20 * this.height | 0;
              return this;
            };
            d.prototype.getBaseWidth = function(a) {
              return Math.abs(Math.cos(a)) * this.width + Math.abs(Math.sin(a)) * this.height;
            };
            d.prototype.getBaseHeight = function(a) {
              return Math.abs(Math.sin(a)) * this.width + Math.abs(Math.cos(a)) * this.height;
            };
            d.prototype.toPixels = function() {
              this.x /= 20;
              this.y /= 20;
              this.width /= 20;
              this.height /= 20;
              return this;
            };
            d.prototype.snapInPlace = function() {
              var a = Math.ceil(this.x + this.width), b = Math.ceil(this.y + this.height);
              this.x = Math.floor(this.x);
              this.y = Math.floor(this.y);
              this.width = a - this.x;
              this.height = b - this.y;
              return this;
            };
            d.prototype.roundInPlace = function() {
              var a = Math.round(this.x + this.width), b = Math.round(this.y + this.height);
              this.x = Math.round(this.x);
              this.y = Math.round(this.y);
              this.width = a - this.x;
              this.height = b - this.y;
              return this;
            };
            d.prototype.toString = function() {
              return "(x=" + this.x + ", y=" + this.y + ", w=" + this.width + ", h=" + this.height + ")";
            };
            d.prototype.writeExternal = function(a) {
              a.writeFloat(this.x);
              a.writeFloat(this.y);
              a.writeFloat(this.width);
              a.writeFloat(this.height);
            };
            d.prototype.readExternal = function(a) {
              this.x = a.readFloat();
              this.y = a.readFloat();
              this.width = a.readFloat();
              this.height = a.readFloat();
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(b.ASNative);
          f.Rectangle = k;
        })(f.geom || (f.geom = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          var s = b.Debug.notImplemented, m = b.Debug.somewhatImplemented, d = b.AVM2.Runtime.throwError, a = b.AVM2.Errors, c = function(b) {
            function c(b) {
              b || d("ArgumentError", a.NullPointerError, "displayObject");
              this._displayObject = b;
            }
            __extends(c, b);
            Object.defineProperty(c.prototype, "matrix", {get:function() {
              return this._displayObject._getMatrix().clone().toPixelsInPlace();
            }, set:function(a) {
              this._displayObject._setMatrix(a, !0);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "colorTransform", {get:function() {
              return this._displayObject._colorTransform.clone();
            }, set:function(a) {
              this._displayObject._setColorTransform(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "concatenatedMatrix", {get:function() {
              var a = this._displayObject._getConcatenatedMatrix().clone().toPixelsInPlace();
              this._displayObject._stage || a.scale(5, 5);
              return a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "concatenatedColorTransform", {get:function() {
              return this._displayObject._getConcatenatedColorTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "pixelBounds", {get:function() {
              s("public flash.geom.Transform::get pixelBounds");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "matrix3D", {get:function() {
              var a = this._displayObject._matrix3D;
              return a && a.clone();
            }, set:function(b) {
              k.Matrix3D.isType(b) || d("TypeError", a.CheckTypeFailedError, b, "flash.geom.Matrix3D");
              b = b.rawData;
              this.matrix = new f.geom.Matrix(b.asGetPublicProperty(0), b.asGetPublicProperty(1), b.asGetPublicProperty(4), b.asGetPublicProperty(5), b.asGetPublicProperty(12), b.asGetPublicProperty(13));
              m("public flash.geom.Transform::set matrix3D");
            }, enumerable:!0, configurable:!0});
            c.prototype.getRelativeMatrix3D = function(a) {
              s("public flash.geom.Transform::getRelativeMatrix3D");
            };
            Object.defineProperty(c.prototype, "perspectiveProjection", {get:function() {
              s("public flash.geom.Transform::get perspectiveProjection");
            }, set:function(a) {
              s("public flash.geom.Transform::set perspectiveProjection");
            }, enumerable:!0, configurable:!0});
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(g.ASNative);
          k.Transform = c;
        })(f.geom || (f.geom = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.geom.Utils3D");
            }
            __extends(a, b);
            a.projectVector = function(a, b) {
              k("public flash.geom.Utils3D::static projectVector");
            };
            a.projectVectors = function(a, b, d, e) {
              k("public flash.geom.Utils3D::static projectVectors");
            };
            a.pointTowards = function(a, b, d, e, f) {
              k("public flash.geom.Utils3D::static pointTowards");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.Utils3D = m;
        })(f.geom || (f.geom = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d(a, b, d, f) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof b && (b = 0);
              "undefined" === typeof d && (d = 0);
              "undefined" === typeof f && (f = 0);
              this.x = +a;
              this.y = +b;
              this.z = +d;
              this.w = +f;
            }
            __extends(d, b);
            Object.defineProperty(d.prototype, "native_x", {get:function() {
              return this.x;
            }, set:function(a) {
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_y", {get:function() {
              return this.y;
            }, set:function(a) {
              this.y = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_z", {get:function() {
              return this.z;
            }, set:function(a) {
              this.z = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_w", {get:function() {
              return this.w;
            }, set:function(a) {
              this.w = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "length", {get:function() {
              return Math.sqrt(this.lengthSquared);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "lengthSquared", {get:function() {
              return this.x * this.x + this.y * this.y + this.z * this.z;
            }, enumerable:!0, configurable:!0});
            d.angleBetween = function(a, b) {
              return Math.acos(a.dotProduct(b) / (a.length * b.length));
            };
            d.distance = function(a, b) {
              return a.subtract(b).length;
            };
            d.prototype.dotProduct = function(a) {
              return this.x * a.x + this.y * a.y + this.z * a.z;
            };
            d.prototype.crossProduct = function(a) {
              return new d(this.y * a.z - this.z * a.y, this.z * a.x - this.x * a.z, this.x * a.y - this.y * a.x, 1);
            };
            d.prototype.normalize = function() {
              var a = this.length;
              0 !== a ? (this.x /= a, this.y /= a, this.z /= a) : this.x = this.y = this.z = 0;
              return a;
            };
            d.prototype.scaleBy = function(a) {
              a = +a;
              this.x *= a;
              this.y *= a;
              this.z *= a;
            };
            d.prototype.incrementBy = function(a) {
              this.x += a.x;
              this.y += a.y;
              this.z += a.z;
            };
            d.prototype.decrementBy = function(a) {
              this.x -= a.x;
              this.y -= a.y;
              this.z -= a.z;
            };
            d.prototype.add = function(a) {
              return new d(this.x + a.x, this.y + a.y, this.z + a.z);
            };
            d.prototype.subtract = function(a) {
              return new d(this.x - a.x, this.y - a.y, this.z - a.z);
            };
            d.prototype.negate = function() {
              this.x = -this.x;
              this.y = -this.y;
              this.z = -this.z;
            };
            d.prototype.equals = function(a, b) {
              return this.x === a.x && this.y === a.y && this.z === a.z && (!b || this.w === a.w);
            };
            d.prototype.nearEquals = function(a, b, d) {
              return Math.abs(this.x - a.x) < b && Math.abs(this.y - a.y) < b && Math.abs(this.z - a.z) < b && (!d || Math.abs(this.w - a.w) < b);
            };
            d.prototype.project = function() {
              this.x /= this.w;
              this.y /= this.w;
              this.z /= this.w;
            };
            d.prototype.copyFrom = function(a) {
              this.x = a.x;
              this.y = a.y;
              this.z = a.z;
            };
            d.prototype.setTo = function(a, b, d) {
              this.x = +a;
              this.y = +b;
              this.z = +d;
            };
            d.prototype.clone = function() {
              return new d(this.x, this.y, this.z, this.w);
            };
            d.prototype.toString = function() {
              return "Vector3D(" + this.x + ", " + this.y + ", " + this.z + ")";
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.X_AXIS = Object.freeze(new d(1, 0, 0));
            d.Y_AXIS = Object.freeze(new d(0, 1, 0));
            d.Z_AXIS = Object.freeze(new d(0, 0, 1));
            return d;
          }(b.ASNative);
          f.Vector3D = k;
        })(f.geom || (f.geom = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.accessibility.Accessibility");
            }
            __extends(a, b);
            Object.defineProperty(a, "active", {get:function() {
              k("public flash.accessibility.Accessibility::get active");
              return a._active;
            }, enumerable:!0, configurable:!0});
            a.sendEvent = function(a, b, d, e) {
              k("public flash.accessibility.Accessibility::static sendEvent");
            };
            a.updateProperties = function() {
              k("public flash.accessibility.Accessibility::static updateProperties");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a._active = !1;
            return a;
          }(g.ASNative);
          f.Accessibility = m;
        })(f.accessibility || (f.accessibility = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.accessibility.AccessibilityImplementation");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.AccessibilityImplementation = m;
        })(f.accessibility || (f.accessibility = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(b.ASNative);
          f.AccessibilityProperties = k;
        })(f.accessibility || (f.accessibility = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.assert, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function c(a, b, c) {
              "undefined" === typeof b && (b = !1);
              "undefined" === typeof c && (c = !1);
              this._type = m(a);
              this._bubbles = !!b;
              this._cancelable = !!c;
              this._currentTarget = this._target = null;
              this._eventPhase = f.EventPhase.AT_TARGET;
              this._isDefaultPrevented = this._stopImmediatePropagation = this._stopPropagation = !1;
            }
            __extends(c, a);
            c.getInstance = function(a, b) {
              var d;
              "undefined" === typeof b && (b = !1);
              "undefined" === typeof d && (d = !1);
              var f = c._instances[a];
              f || (f = new c(a, b, d), c._instances[a] = f);
              f._bubbles = b;
              f._cancelable = d;
              return f;
            };
            c.getBroadcastInstance = function(a) {
              var b, d;
              "undefined" === typeof b && (b = !1);
              "undefined" === typeof d && (d = !1);
              var f = c._instances[a];
              f || (f = new c(a, b, d), c._instances[a] = f, k(c.isBroadcastEventType(a)));
              f._isBroadcastEvent = !0;
              f._bubbles = b;
              f._cancelable = d;
              return f;
            };
            c.isBroadcastEventType = function(a) {
              switch(a) {
                case c.ENTER_FRAME:
                ;
                case c.EXIT_FRAME:
                ;
                case c.FRAME_CONSTRUCTED:
                ;
                case c.RENDER:
                ;
                case c.ACTIVATE:
                ;
                case c.DEACTIVATE:
                ;
                case c.AVM1_LOAD:
                  return!0;
              }
              return!1;
            };
            Object.defineProperty(c.prototype, "type", {get:function() {
              return this._type;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "bubbles", {get:function() {
              return this._bubbles;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "cancelable", {get:function() {
              return this._cancelable;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "target", {get:function() {
              return this._target;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "currentTarget", {get:function() {
              return this._currentTarget;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "eventPhase", {get:function() {
              return this._eventPhase;
            }, enumerable:!0, configurable:!0});
            c.prototype.stopPropagation = function() {
              this._stopPropagation = !0;
            };
            c.prototype.stopImmediatePropagation = function() {
              this._stopImmediatePropagation = this._stopPropagation = !0;
            };
            c.prototype.preventDefault = function() {
              this._cancelable && (this._isDefaultPrevented = !0);
            };
            c.prototype.isDefaultPrevented = function() {
              return this._isDefaultPrevented;
            };
            c.prototype.isBroadcastEvent = function() {
              return!!this._isBroadcastEvent;
            };
            c.prototype.clone = function() {
              return new c(this._type, this._bubbles, this._cancelable);
            };
            c.prototype.toString = function() {
              return this.formatToString("Event", "type", "bubbles", "cancelable", "eventPhase");
            };
            c.prototype.formatToString = function(a) {
              for (var b = [], c = 0;c < arguments.length - 1;c++) {
                b[c] = arguments[c + 1];
              }
              for (var c = "[" + a, d = 0;d < b.length;d++) {
                var f = b[d], g = this.asGetPublicProperty(f);
                "string" === typeof g && (g = '"' + g + '"');
                c += " " + f + "=" + g;
              }
              return c + "]";
            };
            c.classInitializer = function() {
              c._instances = b.ObjectUtilities.createMap();
            };
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.ACTIVATE = "activate";
            c.ADDED = "added";
            c.ADDED_TO_STAGE = "addedToStage";
            c.CANCEL = "cancel";
            c.CHANGE = "change";
            c.CLEAR = "clear";
            c.CLOSE = "close";
            c.COMPLETE = "complete";
            c.CONNECT = "connect";
            c.COPY = "copy";
            c.CUT = "cut";
            c.DEACTIVATE = "deactivate";
            c.ENTER_FRAME = "enterFrame";
            c.FRAME_CONSTRUCTED = "frameConstructed";
            c.EXIT_FRAME = "exitFrame";
            c.FRAME_LABEL = "frameLabel";
            c.ID3 = "id3";
            c.INIT = "init";
            c.MOUSE_LEAVE = "mouseLeave";
            c.OPEN = "open";
            c.PASTE = "paste";
            c.REMOVED = "removed";
            c.REMOVED_FROM_STAGE = "removedFromStage";
            c.RENDER = "render";
            c.RESIZE = "resize";
            c.SCROLL = "scroll";
            c.TEXT_INTERACTION_MODE_CHANGE = "textInteractionModeChange";
            c.SELECT = "select";
            c.SELECT_ALL = "selectAll";
            c.SOUND_COMPLETE = "soundComplete";
            c.TAB_CHILDREN_CHANGE = "tabChildrenChange";
            c.TAB_ENABLED_CHANGE = "tabEnabledChange";
            c.TAB_INDEX_CHANGE = "tabIndexChange";
            c.UNLOAD = "unload";
            c.FULLSCREEN = "fullScreen";
            c.CONTEXT3D_CREATE = "context3DCreate";
            c.TEXTURE_READY = "textureReady";
            c.VIDEO_FRAME = "videoFrame";
            c.SUSPEND = "suspend";
            c.AVM1_INIT = "initialize";
            c.AVM1_CONSTRUCT = "construct";
            c.AVM1_LOAD = "load";
            return c;
          }(g.ASNative);
          f.Event = d;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          var s = b.AVM2.Runtime.asCoerceString, m = b.ObjectUtilities.createEmptyObject, d = b.isFunction, a = b.isNullOrUndefined, c = b.AVM2.Runtime.throwError, n = b.Debug.assert, p = function() {
            return function(a, b, c) {
              this.listener = a;
              this.useCapture = b;
              this.priority = c;
            };
          }(), e = function() {
            function a() {
              this._aliasCount = 0;
              this._entries = [];
            }
            a.prototype.isEmpty = function() {
              return 0 === this._entries.length;
            };
            a.prototype.insert = function(a, b, c) {
              for (var d = this._entries, e = d.length, f = e - 1;0 <= f;f--) {
                var l = d[f];
                if (l.listener === a) {
                  return;
                }
                if (c > l.priority) {
                  e = f;
                } else {
                  break;
                }
              }
              d = this.ensureNonAliasedEntries();
              d.splice(e, 0, new p(a, b, c));
            };
            a.prototype.ensureNonAliasedEntries = function() {
              var a = this._entries;
              0 < this._aliasCount && (a = this._entries = a.slice(), this._aliasCount = 0);
              return a;
            };
            a.prototype.remove = function(a) {
              for (var b = this._entries, c = 0;c < b.length;c++) {
                if (b[c].listener === a) {
                  this.ensureNonAliasedEntries().splice(c, 1);
                  break;
                }
              }
            };
            a.prototype.snapshot = function() {
              this._aliasCount++;
              return this._entries;
            };
            a.prototype.releaseSnapshot = function(a) {
              this._entries === a && 0 < this._aliasCount && this._aliasCount--;
            };
            return a;
          }(), q = function() {
            function a() {
              this.reset();
            }
            a.prototype.reset = function() {
              this._queues = b.ObjectUtilities.createEmptyObject();
            };
            a.prototype.add = function(a, b) {
              n(t.Event.isBroadcastEventType(a), "Can only register broadcast events.");
              var c = this._queues[a] || (this._queues[a] = []);
              0 <= c.indexOf(b) || c.push(b);
            };
            a.prototype.remove = function(a, b) {
              n(t.Event.isBroadcastEventType(a), "Can only unregister broadcast events.");
              var c = this._queues[a];
              n(c, "There should already be a queue for this.");
              var d = c.indexOf(b);
              n(0 <= d, "Target should be somewhere in this queue.");
              c[d] = null;
              n(0 > c.indexOf(b), "Target shouldn't be in this queue anymore.");
            };
            a.prototype.dispatchEvent = function(a) {
              n(a.isBroadcastEvent(), "Cannot dispatch non-broadcast events.");
              var b = this._queues[a.type];
              if (b) {
                for (var c = 0, d = 0;d < b.length;d++) {
                  var e = b[d];
                  null === e ? c++ : e.dispatchEvent(a);
                }
                if (16 < c && c > b.length >> 1) {
                  c = [];
                  for (d = 0;d < b.length;d++) {
                    b[d] && c.push(b[d]);
                  }
                  this._queues[a.type] = c;
                }
              }
            };
            a.prototype.getQueueLength = function(a) {
              return this._queues[a] ? this._queues[a].length : 0;
            };
            return a;
          }();
          t.BroadcastEventDispatchQueue = q;
          var l = function(b) {
            function l(a) {
              "undefined" === typeof a && (a = null);
              this._target = a || this;
            }
            __extends(l, b);
            l.prototype._getListenersForType = function(a, b) {
              var c = a ? this._captureListeners : this._targetOrBubblingListeners;
              return c ? c[b] : null;
            };
            l.prototype._getListeners = function(a) {
              return a ? this._captureListeners || (this._captureListeners = m()) : this._targetOrBubblingListeners || (this._targetOrBubblingListeners = m());
            };
            l.prototype.addEventListener = function(b, h, f, n, g) {
              "undefined" === typeof f && (f = !1);
              "undefined" === typeof n && (n = 0);
              "undefined" === typeof g && (g = !1);
              (2 > arguments.length || 5 < arguments.length) && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/addEventListener()", 2, arguments.length);
              d(h) || c("TypeError", k.Errors.CheckTypeFailedError, h, "Function");
              a(b) && c("TypeError", k.Errors.NullPointerError, "type");
              b = s(b);
              f = !!f;
              n |= 0;
              g = !!g;
              var m = this._getListeners(f);
              (m[b] || (m[b] = new e)).insert(h, f, n);
              !f && t.Event.isBroadcastEventType(b) && l.broadcastEventDispatchQueue.add(b, this);
            };
            l.prototype.removeEventListener = function(b, h, e) {
              "undefined" === typeof e && (e = !1);
              (2 > arguments.length || 3 < arguments.length) && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/removeEventListener()", 2, arguments.length);
              d(h) || c("TypeError", k.Errors.CheckTypeFailedError, h, "Function");
              a(b) && c("TypeError", k.Errors.NullPointerError, "type");
              b = s(b);
              var f = this._getListeners(!!e), n = f[b];
              n && (n.remove(h), n.isEmpty() && (!e && t.Event.isBroadcastEventType(b) && l.broadcastEventDispatchQueue.remove(b, this), f[b] = null));
            };
            l.prototype._hasTargetOrBubblingEventListener = function(a) {
              return!(!this._targetOrBubblingListeners || !this._targetOrBubblingListeners[a]);
            };
            l.prototype._hasCaptureEventListener = function(a) {
              return!(!this._captureListeners || !this._captureListeners[a]);
            };
            l.prototype._hasEventListener = function(a) {
              return this._hasTargetOrBubblingEventListener(a) || this._hasCaptureEventListener(a);
            };
            l.prototype.hasEventListener = function(b) {
              1 !== arguments.length && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/hasEventListener()", 1, arguments.length);
              a(b) && c("TypeError", k.Errors.NullPointerError, "type");
              b = s(b);
              return this._hasEventListener(b);
            };
            l.prototype.willTrigger = function(b) {
              1 !== arguments.length && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/hasEventListener()", 1, arguments.length);
              a(b) && c("TypeError", k.Errors.NullPointerError, "type");
              b = s(b);
              if (this._hasEventListener(b)) {
                return!0;
              }
              if (f.display.DisplayObject.isType(this)) {
                var d = this._parent;
                do {
                  if (d._hasEventListener(b)) {
                    return!0;
                  }
                } while (d = d._parent);
              }
              return!1;
            };
            l.prototype._skipDispatchEvent = function(a) {
              if (!a.isBroadcastEvent() && f.display.DisplayObject.isType(this)) {
                for (var b = this;b;) {
                  if (b._hasEventListener(a.type)) {
                    return!1;
                  }
                  b = b._parent;
                }
                return!0;
              }
              return!this._hasEventListener(a.type);
            };
            l.prototype.dispatchEvent = function(a) {
              if (this._skipDispatchEvent(a)) {
                return!0;
              }
              1 !== arguments.length && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/dispatchEvent()", 1, arguments.length);
              k.counter.count("EventDispatcher::dispatchEvent");
              var b = a._type, d = this._target;
              k.counter.count("EventDispatcher::dispatchEvent(" + b + ")");
              var e = !0, g = [];
              if (!a.isBroadcastEvent() && f.display.DisplayObject.isType(this)) {
                for (var m = this._parent;m;) {
                  m._hasEventListener(b) && g.push(m), m = m._parent;
                }
                for (m = g.length - 1;0 <= m && e;m--) {
                  var p = g[m];
                  if (p._hasCaptureEventListener(b)) {
                    var q = p._getListenersForType(!0, b);
                    n(q);
                    e = l.callListeners(q, a, d, p, t.EventPhase.CAPTURING_PHASE);
                  }
                }
              }
              e && (q = this._getListenersForType(!1, b)) && (e = l.callListeners(this._getListeners(!1)[b], a, d, d, t.EventPhase.AT_TARGET));
              if (!a.isBroadcastEvent() && e && a.bubbles) {
                for (m = 0;m < g.length && e;m++) {
                  p = g[m], p._hasTargetOrBubblingEventListener(b) && (q = p._getListenersForType(!1, b), e = l.callListeners(q, a, d, p, t.EventPhase.BUBBLING_PHASE));
                }
              }
              return!a._isDefaultPrevented;
            };
            l.callListeners = function(a, b, c, d, e) {
              if (a.isEmpty()) {
                return!0;
              }
              b._target && (b = b.clone());
              for (var f = a.snapshot(), l = 0;l < f.length;l++) {
                var n = f[l];
                b._target = c;
                b._currentTarget = d;
                b._eventPhase = e;
                n.listener(b);
                if (b._stopImmediatePropagation) {
                  break;
                }
              }
              a.releaseSnapshot(f);
              return!b._stopPropagation;
            };
            l.classInitializer = function() {
              l.broadcastEventDispatchQueue = new q;
            };
            l.initializer = function() {
              this._target = this;
              this._targetOrBubblingListeners = this._captureListeners = null;
            };
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(g.ASNative);
          t.EventDispatcher = l;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              b.call(this);
              k("Dummy Constructor: public flash.events.EventPhase");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.CAPTURING_PHASE = 1;
            a.AT_TARGET = 2;
            a.BUBBLING_PHASE = 3;
            return a;
          }(g.ASNative);
          f.EventPhase = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e) {
              b.call(this, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.TextEvent");
            }
            __extends(a, b);
            a.prototype.copyNativeData = function(a) {
              k("public flash.events.TextEvent::copyNativeData");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.LINK = "link";
            a.TEXT_INPUT = "textInput";
            return a;
          }(f.events.Event);
          g.TextEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e, m) {
              b.call(this, void 0, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.ErrorEvent");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.ERROR = "error";
            return a;
          }(f.events.TextEvent);
          g.ErrorEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e) {
              b.call(this, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.GameInputEvent");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.DEVICE_ADDED = "deviceAdded";
            a.DEVICE_REMOVED = "deviceRemoved";
            return a;
          }(f.events.Event);
          g.GameInputEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.AVM2.Runtime.asCoerceString, m = b.Debug.notImplemented, d = b.Debug.somewhatImplemented, a = function(a) {
            function b(d, e, f, l, n, g, r, h, k) {
              a.call(this, void 0, void 0, void 0);
              m("Dummy Constructor: public flash.events.GestureEvent");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "localX", {get:function() {
              return this._localX;
            }, set:function(a) {
              this._localX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "localY", {get:function() {
              return this._localY;
            }, set:function(a) {
              this._localY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "stageX", {get:function() {
              d("public flash.events.GestureEvent::stageX");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "stageY", {get:function() {
              d("public flash.events.GestureEvent::stageY");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "phase", {get:function() {
              return this._phase;
            }, set:function(a) {
              this._phase = k(a);
            }, enumerable:!0, configurable:!0});
            b.prototype.updateAfterEvent = function() {
              d("public flash.events.GestureEvent::updateAfterEvent");
            };
            b.prototype.NativeCtor = function(a, b, c, d, f, n) {
              this._phase = k(a);
              this._localX = +b;
              this._localY = +c;
              this._ctrlKey = !!d;
              this._altKey = !!f;
              this._shiftKey = !!n;
            };
            b.prototype.clone = function() {
              return new f.events.GestureEvent(this.type, this.bubbles, this.cancelable, this.phase, this.localX, this.localY, this.ctrlKey, this.altKey, this.shiftKey);
            };
            b.prototype.toString = function() {
              return this.formatToString("GestureEvent", "type", "bubbles", "cancelable", "eventPhase", "localX", "localY", "ctrlKey", "altKey", "shiftKey");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            b.GESTURE_TWO_FINGER_TAP = "gestureTwoFingerTap";
            return b;
          }(f.events.Event);
          g.GestureEvent = a;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e) {
              b.call(this, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.HTTPStatusEvent");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.HTTP_STATUS = "httpStatus";
            a.HTTP_RESPONSE_STATUS = "httpResponseStatus";
            return a;
          }(f.events.Event);
          g.HTTPStatusEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e, m) {
              b.call(this, void 0, void 0, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.IOErrorEvent");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.IO_ERROR = "ioError";
            a.NETWORK_ERROR = "networkError";
            a.DISK_ERROR = "diskError";
            a.VERIFY_ERROR = "verifyError";
            return a;
          }(f.events.ErrorEvent);
          g.IOErrorEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.somewhatImplemented, m = b.Debug.notImplemented, d = function(a) {
            function b(c, d, e, f, l, g, k, r, h) {
              a.call(this, void 0, void 0, void 0);
              m("Dummy Constructor: public flash.events.KeyboardEvent");
            }
            __extends(b, a);
            b.prototype.updateAfterEvent = function() {
              k("public flash.events.KeyboardEvent::updateAfterEvent");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            b.KEY_DOWN = "keyDown";
            b.KEY_UP = "keyUp";
            return b;
          }(f.events.Event);
          g.KeyboardEvent = d;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.Debug.somewhatImplemented, d = function(a) {
            function c(b, c, d, f, l, g, m, r, h, x, y) {
              a.call(this, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.MouseEvent");
            }
            __extends(c, a);
            c.typeFromDOMType = function(a) {
              switch(a) {
                case "click":
                  return c.CLICK;
                case "dblclick":
                  return c.DOUBLE_CLICK;
                case "mousedown":
                  return c.MOUSE_DOWN;
                case "mousemove":
                  return c.MOUSE_MOVE;
                case "mouseup":
                  return c.MOUSE_UP;
                default:
                  k(a);
              }
            };
            Object.defineProperty(c.prototype, "localX", {get:function() {
              return this._localX / 20 | 0;
            }, set:function(a) {
              this._localX = 20 * a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "localY", {get:function() {
              return this._localY / 20 | 0;
            }, set:function(a) {
              this._localY = 20 * a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "stageX", {get:function() {
              return isNaN(this.localX + this.localY) ? Number.NaN : this._getGlobalPoint().x / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "stageY", {get:function() {
              return isNaN(this.localX + this.localY) ? Number.NaN : this._getGlobalPoint().y / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "movementX", {get:function() {
              m("public flash.events.MouseEvent::set movementX");
              return this._movementX || 0;
            }, set:function(a) {
              this._movementX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "movementY", {get:function() {
              m("public flash.events.MouseEvent::set movementY");
              return this._movementY || 0;
            }, set:function(a) {
              this._movementY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "delta", {get:function() {
              return this._delta;
            }, set:function(a) {
              this._delta = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "buttonDown", {get:function() {
              return this._buttonDown;
            }, set:function(a) {
              this._buttonDown = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "relatedObject", {get:function() {
              return this._relatedObject;
            }, set:function(a) {
              this._relatedObject = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "isRelatedObjectInaccessible", {get:function() {
              return this._isRelatedObjectInaccessible;
            }, set:function(a) {
              this._isRelatedObjectInaccessible = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.updateAfterEvent = function() {
              b.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestRendering();
            };
            c.prototype._getGlobalPoint = function() {
              var a = this._position;
              a || (a = this._position = new f.geom.Point);
              this.target ? (a.setTo(this._localX, this._localY), this._target._getConcatenatedMatrix().transformPointInPlace(a)) : a.setTo(0, 0);
              return a;
            };
            c.prototype.clone = function() {
              return new f.events.MouseEvent(this.type, this.bubbles, this.cancelable, this.localX, this.localY, this.relatedObject, this.ctrlKey, this.altKey, this.shiftKey, this.buttonDown, this.delta);
            };
            c.prototype.toString = function() {
              return this.formatToString("MouseEvent", "type", "bubbles", "cancelable", "eventPhase", "localX", "localY", "relatedObject", "ctrlKey", "altKey", "shiftKey", "buttonDown", "delta");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.CLICK = "click";
            c.DOUBLE_CLICK = "doubleClick";
            c.MOUSE_DOWN = "mouseDown";
            c.MOUSE_MOVE = "mouseMove";
            c.MOUSE_OUT = "mouseOut";
            c.MOUSE_OVER = "mouseOver";
            c.MOUSE_UP = "mouseUp";
            c.RELEASE_OUTSIDE = "releaseOutside";
            c.MOUSE_WHEEL = "mouseWheel";
            c.ROLL_OUT = "rollOut";
            c.ROLL_OVER = "rollOver";
            c.MIDDLE_CLICK = "middleClick";
            c.MIDDLE_MOUSE_DOWN = "middleMouseDown";
            c.MIDDLE_MOUSE_UP = "middleMouseUp";
            c.RIGHT_CLICK = "rightClick";
            c.RIGHT_MOUSE_DOWN = "rightMouseDown";
            c.RIGHT_MOUSE_UP = "rightMouseUp";
            c.CONTEXT_MENU = "contextMenu";
            return c;
          }(f.events.Event);
          g.MouseEvent = d;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        (function(g) {
          var k = function(b) {
            function d(a, b, d, f) {
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NET_STATUS = "netStatus";
            return d;
          }(b.events.Event);
          g.NetStatusEvent = k;
        })(b.events || (b.events = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e, m) {
              b.call(this, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.ProgressEvent");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, set:function(a) {
              this._bytesLoaded = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, set:function(a) {
              this._bytesTotal = a;
            }, enumerable:!0, configurable:!0});
            a.prototype.clone = function() {
              return new f.events.ProgressEvent(this._type, this._bubbles, this._cancelable, this._bytesLoaded, this._bytesTotal);
            };
            a.prototype.toString = function() {
              return this.formatToString("ProgressEvent", "bubbles", "cancelable", "eventPhase", "bytesLoaded", "bytesTotal");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.PROGRESS = "progress";
            a.SOCKET_DATA = "socketData";
            return a;
          }(f.events.Event);
          g.ProgressEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e, m) {
              b.call(this, void 0, void 0, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.SecurityErrorEvent");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.SECURITY_ERROR = "securityError";
            return a;
          }(f.events.ErrorEvent);
          g.SecurityErrorEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g) {
              b.call(this, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.TimerEvent");
            }
            __extends(a, b);
            a.prototype.updateAfterEvent = function() {
              k("public flash.events.TimerEvent::updateAfterEvent");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.TIMER = "timer";
            a.TIMER_COMPLETE = "timerComplete";
            return a;
          }(f.events.Event);
          g.TimerEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e, m, l, u, w, r, h, x, y, t, I) {
              b.call(this, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.TouchEvent");
            }
            __extends(a, b);
            a.prototype.updateAfterEvent = function() {
              k("public flash.events.TouchEvent::updateAfterEvent");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.TOUCH_BEGIN = "touchBegin";
            a.TOUCH_END = "touchEnd";
            a.TOUCH_MOVE = "touchMove";
            a.TOUCH_OVER = "touchOver";
            a.TOUCH_OUT = "touchOut";
            a.TOUCH_ROLL_OVER = "touchRollOver";
            a.TOUCH_ROLL_OUT = "touchRollOut";
            a.TOUCH_TAP = "touchTap";
            a.PROXIMITY_BEGIN = "proximityBegin";
            a.PROXIMITY_END = "proximityEnd";
            a.PROXIMITY_MOVE = "proximityMove";
            a.PROXIMITY_OUT = "proximityOut";
            a.PROXIMITY_OVER = "proximityOver";
            a.PROXIMITY_ROLL_OUT = "proximityRollOut";
            a.PROXIMITY_ROLL_OVER = "proximityRollOver";
            return a;
          }(f.events.Event);
          g.TouchEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, f, g, e) {
              b.call(this, void 0, void 0, void 0, void 0, void 0);
              k("Dummy Constructor: public flash.events.UncaughtErrorEvent");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.UNCAUGHT_ERROR = "uncaughtError";
            return a;
          }(f.events.ErrorEvent);
          g.UncaughtErrorEvent = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              b.call(this, void 0);
              k("Dummy Constructor: public flash.events.UncaughtErrorEvents");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.UncaughtErrorEvents = m;
        })(f.events || (f.events = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.Debug.notImplemented, m = b.Debug.somewhatImplemented, d = b.isNullOrUndefined, a = b.AVM2.Runtime.asCoerceString, c = b.AVM2.Runtime.throwError, n = b.AVM2.Runtime.checkNullParameter, p = b.Debug.assert, e = b.Bounds, q = f.geom, l = f.events;
          (function(a) {
            a[a.None = 0] = "None";
            a[a.Visible = 1] = "Visible";
            a[a.InvalidLineBounds = 2] = "InvalidLineBounds";
            a[a.InvalidFillBounds = 4] = "InvalidFillBounds";
            a[a.InvalidMatrix = 8] = "InvalidMatrix";
            a[a.InvalidInvertedMatrix = 16] = "InvalidInvertedMatrix";
            a[a.InvalidConcatenatedMatrix = 32] = "InvalidConcatenatedMatrix";
            a[a.InvalidInvertedConcatenatedMatrix = 64] = "InvalidInvertedConcatenatedMatrix";
            a[a.InvalidConcatenatedColorTransform = 128] = "InvalidConcatenatedColorTransform";
            a[a.Constructed = 256] = "Constructed";
            a[a.Destroyed = 512] = "Destroyed";
            a[a.OwnedByTimeline = 1024] = "OwnedByTimeline";
            a[a.AnimatedByTimeline = 2048] = "AnimatedByTimeline";
            a[a.HasFrameScriptPending = 4096] = "HasFrameScriptPending";
            a[a.ContainsFrameScriptPendingChildren = 8192] = "ContainsFrameScriptPendingChildren";
            a[a.CacheAsBitmap = 16384] = "CacheAsBitmap";
            a[a.DirtyMatrix = 1048576] = "DirtyMatrix";
            a[a.DirtyChildren = 2097152] = "DirtyChildren";
            a[a.DirtyGraphics = 4194304] = "DirtyGraphics";
            a[a.DirtyTextContent = 8388608] = "DirtyTextContent";
            a[a.DirtyBitmapData = 16777216] = "DirtyBitmapData";
            a[a.DirtyNetStream = 33554432] = "DirtyNetStream";
            a[a.DirtyColorTransform = 67108864] = "DirtyColorTransform";
            a[a.DirtyMask = 134217728] = "DirtyMask";
            a[a.DirtyClipDepth = 268435456] = "DirtyClipDepth";
            a[a.DirtyMiscellaneousProperties = 536870912] = "DirtyMiscellaneousProperties";
            a[a.Dirty = a.DirtyMatrix | a.DirtyChildren | a.DirtyGraphics | a.DirtyTextContent | a.DirtyBitmapData | a.DirtyNetStream | a.DirtyColorTransform | a.DirtyMask | a.DirtyClipDepth | a.DirtyMiscellaneousProperties] = "Dirty";
          })(g.DisplayObjectFlags || (g.DisplayObjectFlags = {}));
          (function(a) {
            a[a.None = 0] = "None";
            a[a.Continue = 0] = "Continue";
            a[a.Stop = 1] = "Stop";
            a[a.Skip = 2] = "Skip";
            a[a.FrontToBack = 8] = "FrontToBack";
            a[a.Filter = 16] = "Filter";
          })(g.VisitorFlags || (g.VisitorFlags = {}));
          (function(a) {
            a[a.HitTestBounds = 0] = "HitTestBounds";
            a[a.HitTestBoundsAndMask = 1] = "HitTestBoundsAndMask";
            a[a.HitTestShape = 2] = "HitTestShape";
            a[a.Mouse = 3] = "Mouse";
            a[a.ObjectsUnderPoint = 4] = "ObjectsUnderPoint";
          })(g.HitTestingType || (g.HitTestingType = {}));
          (function(a) {
            a[a.None = 0] = "None";
            a[a.Bounds = 1] = "Bounds";
            a[a.Shape = 2] = "Shape";
          })(g.HitTestingResult || (g.HitTestingResult = {}));
          var u = function(u) {
            function r() {
              l.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._addReference();
              this._setFlags(256);
            }
            __extends(r, u);
            r.getNextSyncID = function() {
              return this._syncID++;
            };
            r.reset = function() {
              r._advancableInstances = new b.WeakList;
            };
            r.createAnimatedDisplayObject = function(a, b) {
              var c = a.symbol, d = c.symbolClass, c = d.isSubtypeOf(f.display.BitmapData) ? f.display.Bitmap.initializeFrom(c) : d.initializeFrom(c);
              c._setFlags(2048);
              c._setFlags(1024);
              c._animate(a);
              b && d.instanceConstructorNoInitialize.call(c);
              return c;
            };
            r.performFrameNavigation = function(a, b) {
              a ? (r._runScripts = b, k.enterTimeline("DisplayObject.performFrameNavigation", {instances:0})) : b = r._runScripts;
              p(16384 > r._advancableInstances.length, "Too many advancable instances.");
              r._advancableInstances.forEach(function(b) {
                b._initFrame(a);
              });
              a && b && r._broadcastFrameEvent(l.Event.ENTER_FRAME);
              r._advancableInstances.forEach(function(a) {
                a._constructFrame();
              });
              b ? (r._broadcastFrameEvent(l.Event.FRAME_CONSTRUCTED), r._advancableInstances.forEach(function(a) {
                g.MovieClip.isInstanceOf(a) && !a.parent && a._enqueueFrameScripts();
              }), f.display.DisplayObject._stage._enqueueFrameScripts(), g.MovieClip.runFrameScripts(), r._broadcastFrameEvent(l.Event.EXIT_FRAME)) : g.MovieClip.reset();
              a && (k.leaveTimeline(), r._runScripts = !0);
            };
            r._broadcastFrameEvent = function(a) {
              var b;
              switch(a) {
                case l.Event.ENTER_FRAME:
                ;
                case l.Event.FRAME_CONSTRUCTED:
                ;
                case l.Event.EXIT_FRAME:
                ;
                case l.Event.RENDER:
                  b = l.Event.getBroadcastInstance(a);
              }
              p(b, "Invalid frame event.");
              l.EventDispatcher.broadcastEventDispatchQueue.dispatchEvent(b);
            };
            r.prototype._setInitialName = function() {
              this._name = "instance" + f.display.DisplayObject._instanceID++;
            };
            r.prototype._setParent = function(a, b) {
              var c = this._parent;
              p(a !== this);
              this._parent = a;
              this._depth = b;
              a && (this._addReference(), a && this._hasAnyFlags(12288) && a._propagateFlagsUp(8192));
              c && this._removeReference();
            };
            r.prototype._setFillAndLineBoundsFromWidthAndHeight = function(a, b) {
              this._fillBounds.width = a;
              this._fillBounds.height = b;
              this._lineBounds.width = a;
              this._lineBounds.height = b;
              this._removeFlags(6);
              this._invalidateParentFillAndLineBounds(!0, !0);
            };
            r.prototype._setFillAndLineBoundsFromSymbol = function(a) {
              p(a.fillBounds || a.lineBounds, "Fill or Line bounds are not defined in the symbol.");
              a.fillBounds && (this._fillBounds.copyFrom(a.fillBounds), this._removeFlags(4));
              a.lineBounds && (this._lineBounds.copyFrom(a.lineBounds), this._removeFlags(2));
              this._invalidateParentFillAndLineBounds(!!a.fillBounds, !!a.lineBounds);
            };
            r.prototype._setFlags = function(a) {
              this._displayObjectFlags |= a;
            };
            r.prototype._setDirtyFlags = function(a) {
              this._displayObjectFlags |= a;
              this._parent && this._parent._propagateFlagsUp(2097152);
            };
            r.prototype._toggleFlags = function(a, b) {
              this._displayObjectFlags = b ? this._displayObjectFlags | a : this._displayObjectFlags & ~a;
            };
            r.prototype._removeFlags = function(a) {
              this._displayObjectFlags &= ~a;
            };
            r.prototype._hasFlags = function(a) {
              return(this._displayObjectFlags & a) === a;
            };
            r.prototype._hasAnyFlags = function(a) {
              return!!(this._displayObjectFlags & a);
            };
            r.prototype._propagateFlagsUp = function(a) {
              if (!this._hasFlags(a)) {
                this._setFlags(a);
                var b = this._parent;
                b && b._propagateFlagsUp(a);
              }
            };
            r.prototype._propagateFlagsDown = function(a) {
              this._setFlags(a);
            };
            r.prototype._findNearestAncestor = function() {
              for (var a = this;a;) {
                if (!1 === a._hasFlags(128)) {
                  return a;
                }
                a = a._parent;
              }
              return null;
            };
            r.prototype._findFurthestAncestorOrSelf = function() {
              for (var a = this;a;) {
                if (!a._parent) {
                  return a;
                }
                a = a._parent;
              }
            };
            r.prototype._isAncestor = function(a) {
              for (;a;) {
                if (a === this) {
                  return!0;
                }
                a = a._parent;
              }
              return!1;
            };
            r._clampRotation = function(a) {
              a %= 360;
              180 < a ? a -= 360 : -180 > a && (a += 360);
              return a;
            };
            r._getAncestors = function(a, b) {
              var c = r._path;
              for (c.length = 0;a && a !== b;) {
                c.push(a), a = a._parent;
              }
              p(a === b, "Last ancestor is not an ancestor.");
              return c;
            };
            r.prototype._getConcatenatedMatrix = function() {
              this._hasFlags(32) && (this._parent ? this._parent._getConcatenatedMatrix().preMultiplyInto(this._getMatrix(), this._concatenatedMatrix) : this._concatenatedMatrix.copyFrom(this._getMatrix()), this._removeFlags(32));
              return this._concatenatedMatrix;
            };
            r.prototype._getInvertedConcatenatedMatrix = function() {
              this._hasFlags(64) && (this._getConcatenatedMatrix().invertInto(this._invertedConcatenatedMatrix), this._removeFlags(64));
              return this._invertedConcatenatedMatrix;
            };
            r.prototype._setMatrix = function(a, b) {
              if (b || !this._matrix.equals(a)) {
                var c = this._matrix;
                c.copyFrom(a);
                b && c.toTwipsInPlace();
                this._scaleX = c.getScaleX();
                this._scaleY = c.getScaleY();
                this._rotation = r._clampRotation(180 * a.getRotation() / Math.PI);
                this._removeFlags(8);
                this._setFlags(16);
                this._setDirtyFlags(1048576);
                this._invalidatePosition();
              }
            };
            r.prototype._getMatrix = function() {
              this._hasFlags(8) && (this._matrix.updateScaleAndRotation(this._scaleX, this._scaleY, this._rotation), this._removeFlags(8));
              return this._matrix;
            };
            r.prototype._getInvertedMatrix = function() {
              this._hasFlags(16) && (this._getMatrix().invertInto(this._invertedMatrix), this._removeFlags(16));
              return this._invertedMatrix;
            };
            r.prototype._getConcatenatedColorTransform = function() {
              if (!this.stage) {
                return this._colorTransform.clone();
              }
              if (this._hasFlags(128)) {
                var a = this._findNearestAncestor(), b = r._getAncestors(this, a), c = b.length - 1;
                f.display.Stage.isType(b[c]) && c--;
                for (var d = a && !f.display.Stage.isType(a) ? a._concatenatedColorTransform.clone() : new q.ColorTransform;0 <= c;) {
                  a = b[c--], p(a._hasFlags(128)), d.preMultiply(a._colorTransform), d.convertToFixedPoint(), a._concatenatedColorTransform.copyFrom(d), a._removeFlags(128);
                }
              }
              return this._concatenatedColorTransform;
            };
            r.prototype._setColorTransform = function(a) {
              this._colorTransform.copyFrom(a);
              this._colorTransform.convertToFixedPoint();
              this._propagateFlagsDown(128);
              this._setDirtyFlags(67108864);
            };
            r.prototype._invalidateFillAndLineBounds = function(a, b) {
              this._propagateFlagsUp((b ? 2 : 0) | (a ? 4 : 0));
            };
            r.prototype._invalidateParentFillAndLineBounds = function(a, b) {
              this._parent && this._parent._invalidateFillAndLineBounds(a, b);
            };
            r.prototype._getContentBounds = function(a) {
              "undefined" === typeof a && (a = !0);
              var b, c;
              a ? (b = 2, c = this._lineBounds) : (b = 4, c = this._fillBounds);
              if (this._hasFlags(b)) {
                var d = this._getGraphics();
                d ? c.copyFrom(d._getContentBounds(a)) : c.setEmpty();
                this._getChildBounds(c, a);
                this._removeFlags(b);
              }
              return c;
            };
            r.prototype._getChildBounds = function(a, b) {
            };
            r.prototype._getTransformedBounds = function(a, b) {
              var c = this._getContentBounds(b).clone();
              if (a === this || c.isEmpty()) {
                return c;
              }
              var d;
              a ? (d = q.Matrix.TEMP_MATRIX, a._getInvertedConcatenatedMatrix().preMultiplyInto(this._getConcatenatedMatrix(), d)) : d = this._getConcatenatedMatrix();
              d.transformBounds(c);
              return c;
            };
            r.prototype._stopTimelineAnimation = function() {
              this._removeFlags(2048);
            };
            r.prototype._invalidateMatrix = function() {
              this._setDirtyFlags(1048576);
              this._setFlags(24);
              this._invalidatePosition();
            };
            r.prototype._invalidatePosition = function() {
              this._propagateFlagsDown(96);
              this._invalidateParentFillAndLineBounds(!0, !0);
            };
            r.prototype._animate = function(a) {
              a.matrix && this._setMatrix(a.matrix, !1);
              a.colorTransform && this._setColorTransform(a.colorTransform);
              this._ratio = a.ratio;
              a.name && (this._name = a.name);
              this._clipDepth !== a.clipDepth && 0 <= a.clipDepth && (this._clipDepth = a.clipDepth, this._setDirtyFlags(268435456));
              this._filters = a.filters;
              a.blendMode && a.blendMode !== this._blendMode && (this._blendMode = a.blendMode, this._setDirtyFlags(536870912));
              a.cacheAsBitmap && (this._setFlags(16384), this._setDirtyFlags(536870912));
              a.visible !== this._hasFlags(1) && (this._toggleFlags(1, a.visible), this._setDirtyFlags(536870912));
            };
            r.prototype._propagateEvent = function(a) {
              this.visit(function(b) {
                b.dispatchEvent(a);
                return 0;
              }, 0);
            };
            Object.defineProperty(r.prototype, "x", {get:function() {
              var a = this._matrix.tx;
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds(), a = a + b.xMin
              }
              return a / 20;
            }, set:function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds();
                a -= b.xMin;
              }
              a !== this._matrix.tx && (this._matrix.tx = a, this._invertedMatrix.tx = -a, this._invalidatePosition(), this._setDirtyFlags(1048576));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "y", {get:function() {
              var a = this._matrix.ty;
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds(), a = a + b.yMin
              }
              return a / 20;
            }, set:function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds();
                a -= b.yMin;
              }
              a !== this._matrix.ty && (this._matrix.ty = a, this._invertedMatrix.ty = -a, this._invalidatePosition(), this._setDirtyFlags(1048576));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "scaleX", {get:function() {
              return Math.abs(this._scaleX);
            }, set:function(a) {
              a = +a;
              this._stopTimelineAnimation();
              a !== this._scaleX && (this._scaleX = a, this._invalidateMatrix());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "scaleY", {get:function() {
              return this._scaleY;
            }, set:function(a) {
              a = +a;
              this._stopTimelineAnimation();
              a !== this._scaleY && (this._scaleY = a, this._invalidateMatrix());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "scaleZ", {get:function() {
              return this._scaleZ;
            }, set:function(a) {
              s("public DisplayObject::set scaleZ");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotation", {get:function() {
              return this._rotation;
            }, set:function(a) {
              a = +a;
              this._stopTimelineAnimation();
              a = r._clampRotation(a);
              a !== this._rotation && (this._rotation = a, this._invalidateMatrix());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotationX", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              s("public DisplayObject::set rotationX");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotationY", {get:function() {
              return this._rotationY;
            }, set:function(a) {
              s("public DisplayObject::set rotationY");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotationZ", {get:function() {
              return this._rotationZ;
            }, set:function(a) {
              s("public DisplayObject::set rotationZ");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "width", {get:function() {
              return this._getTransformedBounds(this._parent, !0).width / 20;
            }, set:function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (!(0 > a)) {
                var b = this._getContentBounds(!0);
                if (this._canHaveTextContent()) {
                  var c = this._getContentBounds();
                  this._setFillAndLineBoundsFromWidthAndHeight(a, b.height);
                } else {
                  var c = this._getTransformedBounds(this._parent, !0), d = this._rotation / 180 * Math.PI, e = b.getBaseWidth(d);
                  e && (this._scaleY = c.height / b.getBaseHeight(d), this._scaleX = a / e, this._invalidateMatrix());
                }
              }
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "height", {get:function() {
              return this._getTransformedBounds(this._parent, !0).height / 20;
            }, set:function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (!(0 > a)) {
                var b = this._getContentBounds(!0);
                if (this._canHaveTextContent()) {
                  var c = this._getContentBounds();
                  this._setFillAndLineBoundsFromWidthAndHeight(b.width, a);
                } else {
                  var c = this._getTransformedBounds(this._parent, !0), d = this._rotation / 180 * Math.PI, e = b.getBaseHeight(d);
                  e && (b = b.getBaseWidth(d), this._scaleY = a / e, this._scaleX = c.width / b, this._invalidateMatrix());
                }
              }
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "mask", {get:function() {
              return this._mask;
            }, set:function(a) {
              this._stopTimelineAnimation();
              if (this._mask !== a && a !== this) {
                a && a._maskedObject && (a._maskedObject.mask = null);
                if (this._mask = a) {
                  a._maskedObject = this;
                }
                this._setDirtyFlags(134217728);
              }
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "transform", {get:function() {
              return new f.geom.Transform(this);
            }, set:function(a) {
              this._stopTimelineAnimation();
              a.matrix3D ? this._matrix3D = a.matrix3D : this._setMatrix(a.matrix, !0);
              this._setColorTransform(a.colorTransform);
            }, enumerable:!0, configurable:!0});
            r.prototype.destroy = function() {
              this._setFlags(512);
            };
            Object.defineProperty(r.prototype, "root", {get:function() {
              var a = this;
              do {
                if (a._root === a) {
                  return a;
                }
                a = a._parent;
              } while (a);
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "stage", {get:function() {
              var a = this;
              do {
                if (a._stage === a) {
                  return p(f.display.Stage.isType(a)), a;
                }
                a = a._parent;
              } while (a);
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "name", {get:function() {
              return this._name;
            }, set:function(b) {
              n(b, "name");
              this._name = a(b);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "parent", {get:function() {
              return this._parent;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "visible", {get:function() {
              return this._hasFlags(1);
            }, set:function(a) {
              this._stopTimelineAnimation();
              a = !!a;
              a !== this._hasFlags(1) && (this._toggleFlags(1, a), this._setDirtyFlags(536870912));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "alpha", {get:function() {
              return this._colorTransform.alphaMultiplier;
            }, set:function(a) {
              this._stopTimelineAnimation();
              a = +a;
              a !== this._colorTransform.alphaMultiplier && (this._colorTransform.alphaMultiplier = a, this._colorTransform.convertToFixedPoint(), this._propagateFlagsDown(128), this._setDirtyFlags(67108864));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "blendMode", {get:function() {
              return this._blendMode;
            }, set:function(b) {
              this._stopTimelineAnimation();
              b = a(b);
              b !== this._blendMode && (0 > g.BlendMode.toNumber(b) && c("ArgumentError", k.Errors.InvalidEnumError, "blendMode"), this._blendMode = b, this._setDirtyFlags(536870912));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "scale9Grid", {get:function() {
              return this._scale9Grid ? f.geom.Rectangle.FromBounds(this._scale9Grid) : null;
            }, set:function(a) {
              this._stopTimelineAnimation();
              this._scale9Grid = e.FromRectangle(a);
              this._setDirtyFlags(536870912);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "cacheAsBitmap", {get:function() {
              return 0 < this._filters.length || this._hasFlags(16384);
            }, set:function(a) {
              this._hasFlags(16384) || (this._toggleFlags(16384, !!a), this._setDirtyFlags(536870912));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "filters", {get:function() {
              return this._filters ? this._filters.map(function(a) {
                return a.clone();
              }) : [];
            }, set:function(a) {
              var b = !1;
              d(a) ? (b = 0 < this.filters.length, this._filters.length = 0) : (this._filters = a.map(function(a) {
                p(f.filters.BitmapFilter.isType(a));
                return a.clone();
              }), b = !0);
              b && this._setDirtyFlags(536870912);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "z", {get:function() {
              return this._z;
            }, set:function(a) {
              this._z = +a;
              s("public DisplayObject::set z");
            }, enumerable:!0, configurable:!0});
            r.prototype.getBounds = function(a) {
              return q.Rectangle.FromBounds(this._getTransformedBounds(a || this, !0));
            };
            r.prototype.getRect = function(a) {
              return q.Rectangle.FromBounds(this._getTransformedBounds(a || this, !1));
            };
            r.prototype.globalToLocal = function(a) {
              return this._getInvertedConcatenatedMatrix().transformPointInPlace(a.clone().toTwips()).round().toPixels();
            };
            r.prototype.localToGlobal = function(a) {
              return this._getConcatenatedMatrix().transformPointInPlace(a.clone().toTwips()).round().toPixels();
            };
            r.prototype.visit = function(a, b, c) {
              "undefined" === typeof c && (c = 0);
              var d, e, f = b & 8;
              for (d = [this];0 < d.length;) {
                e = d.pop();
                var l = 0, l = b & 16 && !e._hasAnyFlags(c) ? 2 : a(e);
                if (0 === l) {
                  if (e = e._children) {
                    for (var l = e.length, n = 0;n < l;n++) {
                      d.push(e[f ? n : l - 1 - n]);
                    }
                  }
                } else {
                  if (1 === l) {
                    break;
                  }
                }
              }
            };
            Object.defineProperty(r.prototype, "loaderInfo", {get:function() {
              var a = this.root;
              return a ? (p(a._loaderInfo, "No LoaderInfo object found on root."), a._loaderInfo) : null;
            }, enumerable:!0, configurable:!0});
            r.prototype._canHaveGraphics = function() {
              return!1;
            };
            r.prototype._getGraphics = function() {
              return null;
            };
            r.prototype._canHaveTextContent = function() {
              return!1;
            };
            r.prototype._getTextContent = function() {
              return null;
            };
            r.prototype._ensureGraphics = function() {
              p(this._canHaveGraphics());
              if (this._graphics) {
                return this._graphics;
              }
              this._graphics = new f.display.Graphics;
              this._graphics._setParent(this);
              this._invalidateFillAndLineBounds(!0, !0);
              this._setDirtyFlags(4194304);
              return this._graphics;
            };
            r.prototype._setStaticContentFromSymbol = function(a) {
              p(!a.dynamic);
              this._canHaveGraphics() ? (p(a instanceof b.Timeline.ShapeSymbol), this._graphics = a.graphics, this._setDirtyFlags(4194304)) : f.text.StaticText.isType(this) && (p(a instanceof b.Timeline.TextSymbol), this._textContent = a.textContent, this._setDirtyFlags(8388608));
              this._setFillAndLineBoundsFromSymbol(a);
            };
            r.prototype.hitTestObject = function(a) {
              p(a && r.isType(a));
              var b = this._getContentBounds(!1).clone(), c = a._getContentBounds(!1).clone();
              this._getConcatenatedMatrix().transformBounds(b);
              a._getConcatenatedMatrix().transformBounds(c);
              return b.intersects(c);
            };
            r.prototype.hitTestPoint = function(a, b, c) {
              return!!this._containsGlobalPoint(20 * +a | 0, 20 * +b | 0, c ? 2 : 0, null);
            };
            r.prototype._containsPoint = function(a, b, c, d, e, f) {
              a = this._boundsAndMaskContainPoint(a, b, c, d, e);
              if (0 === a || 2 > e) {
                return a;
              }
              (c = this._containsPointDirectly(c, d)) && f && (4 === e || g.InteractiveObject.isType(this) && this._mouseEnabled) && f.push(this);
              return c ? 2 : a;
            };
            r.prototype._containsGlobalPoint = function(a, b, c, d) {
              var e = this._getInvertedConcatenatedMatrix();
              return this._containsPoint(a, b, e.transformX(a, b), e.transformY(a, b), c, d);
            };
            r.prototype._boundsAndMaskContainPoint = function(a, b, c, d, e) {
              return this._hasFlags(1) && this._getContentBounds().contains(c, d) ? 0 !== e && this._mask ? this._mask._containsGlobalPoint(a, b, 1, null) : 1 : 0;
            };
            r.prototype._containsPointDirectly = function(a, b) {
              var c = this._getGraphics();
              return!!c && c._containsPoint(a, b, !0);
            };
            Object.defineProperty(r.prototype, "scrollRect", {get:function() {
              return this._scrollRect ? this._scrollRect.clone() : null;
            }, set:function(a) {
              this._scrollRect = a ? a.clone() : null;
              m("public DisplayObject::set scrollRect");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "opaqueBackground", {get:function() {
              return this._opaqueBackground;
            }, set:function(a) {
              p(null === a || b.isInteger(a));
              this._opaqueBackground = a;
            }, enumerable:!0, configurable:!0});
            r.prototype._getDistance = function(a) {
              for (var b = 0, c = this;c !== a;) {
                b++, c = c._parent;
              }
              return b;
            };
            r.prototype.findNearestCommonAncestor = function(a) {
              if (!a) {
                return null;
              }
              for (var b = this, c = b._getDistance(null), d = a._getDistance(null);c > d;) {
                b = b._parent, c--;
              }
              for (;d > c;) {
                a = a._parent, d--;
              }
              for (;b !== a;) {
                b = b._parent, a = a._parent;
              }
              return b;
            };
            Object.defineProperty(r.prototype, "mouseX", {get:function() {
              return this.globalToLocal(f.ui.Mouse._currentPosition).x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "mouseY", {get:function() {
              return this.globalToLocal(f.ui.Mouse._currentPosition).y;
            }, enumerable:!0, configurable:!0});
            r.prototype.debugName = function() {
              return this._id + " [" + this._depth + "]: (" + this._referenceCount + ") " + this;
            };
            r.prototype.debugTrace = function(a, c) {
              "undefined" === typeof a && (a = 1024);
              "undefined" === typeof c && (c = "");
              var d = this, e = new b.IndentingWriter;
              this.visit(function(f) {
                var l = f._getDistance(d);
                if (l > a) {
                  return 2;
                }
                l = c + b.StringUtilities.multiple(" ", l);
                e.writeLn(l + f.debugName());
                return 0;
              }, 0);
            };
            r.prototype._addReference = function() {
              this._referenceCount++;
            };
            r.prototype._removeReference = function() {
              this._referenceCount--;
              if (0 === this._referenceCount && this._children) {
                for (var a = this._children, b = 0;b < a.length;b++) {
                  a[b]._removeReference();
                }
              }
            };
            Object.defineProperty(r.prototype, "accessibilityProperties", {get:function() {
              return this._accessibilityProperties;
            }, set:function(a) {
              this._accessibilityProperties = a;
            }, enumerable:!0, configurable:!0});
            r._syncID = 0;
            r._instanceID = 1;
            r.classInitializer = function() {
              r.reset();
            };
            r.initializer = function(a) {
              k.counter.count("DisplayObject::initializer");
              this._id = f.display.DisplayObject.getNextSyncID();
              this._displayObjectFlags = 1011875943;
              this._stage = this._root = null;
              this._setInitialName();
              this._mask = this._parent = null;
              this._z = 0;
              this._scaleZ = this._scaleY = this._scaleX = 1;
              this._height = this._width = this._rotationZ = this._rotationY = this._rotationX = this._rotation = 0;
              this._scrollRect = this._opaqueBackground = null;
              this._filters = [];
              this._blendMode = g.BlendMode.NORMAL;
              p(this._blendMode);
              this._accessibilityProperties = this._loaderInfo = this._scale9Grid = null;
              this._fillBounds = new e(0, 0, 0, 0);
              this._lineBounds = new e(0, 0, 0, 0);
              this._clipDepth = -1;
              this._concatenatedMatrix = new q.Matrix;
              this._invertedConcatenatedMatrix = new q.Matrix;
              this._matrix = new q.Matrix;
              this._invertedMatrix = new q.Matrix;
              this._matrix3D = null;
              this._colorTransform = new q.ColorTransform;
              this._concatenatedColorTransform = new q.ColorTransform;
              this._depth = -1;
              this._ratio = 0;
              this._index = -1;
              this._maskedObject = null;
              this._mouseDown = this._mouseOver = !1;
              this._children = this._graphics = this._symbol = null;
              this._referenceCount = 0;
              a && (a.scale9Grid && (this._scale9Grid = a.scale9Grid), this._symbol = a);
            };
            r.classSymbols = null;
            r.instanceSymbols = null;
            r._runScripts = !0;
            r._path = [];
            return r;
          }(f.events.EventDispatcher);
          g.DisplayObject = u;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.AVM2.Runtime.asCoerceString, m = b.Debug.assert, d = b.AVM2.Runtime.throwError, a = function(a) {
            function n(a, b, c) {
              "undefined" === typeof a && (a = null);
              "undefined" === typeof b && (b = "auto");
              "undefined" === typeof c && (c = !1);
              g.DisplayObject.instanceConstructorNoInitialize.call(this);
              this._symbol ? this._bitmapData.class.instanceConstructorNoInitialize.call(this._bitmapData) : this.bitmapData = a;
              this._pixelSnapping = s(b);
              this._smoothing = !!c;
            }
            __extends(n, a);
            Object.defineProperty(n.prototype, "pixelSnapping", {get:function() {
              return this._pixelSnapping;
            }, set:function(a) {
              0 > g.PixelSnapping.toNumber(a) && d("ArgumentError", k.Errors.InvalidEnumError, "pixelSnapping");
              this._pixelSnapping = s(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(n.prototype, "smoothing", {get:function() {
              return this._smoothing;
            }, set:function(a) {
              this._smoothing = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(n.prototype, "bitmapData", {get:function() {
              return this._bitmapData;
            }, set:function(a) {
              this._bitmapData !== a && (this._bitmapData && this._bitmapData._removeBitmapReferrer(this), a && a._addBitmapReferrer(this));
              (this._bitmapData = a) && this._setFillAndLineBoundsFromWidthAndHeight(20 * a.width | 0, 20 * a.height | 0);
              this._invalidateParentFillAndLineBounds(!0, !0);
              this._setDirtyFlags(16777216);
            }, enumerable:!0, configurable:!0});
            n.prototype._getContentBounds = function(a) {
              return this._bitmapData ? this._bitmapData._getContentBounds() : new b.Bounds(0, 0, 0, 0);
            };
            n.prototype._containsPointDirectly = function(a, b) {
              m(this._getContentBounds().contains(a, b));
              return!0;
            };
            n.classInitializer = null;
            n.initializer = function(a) {
              this._smoothing = this._pixelSnapping = this._bitmapData = null;
              if (a) {
                var b = a.symbolClass;
                b.isSubtypeOf(f.display.Bitmap) && (b = f.display.BitmapData);
                this._bitmapData = b.initializeFrom(a);
                this._setFillAndLineBoundsFromWidthAndHeight(20 * a.width | 0, 20 * a.height | 0);
              }
            };
            n.classSymbols = null;
            n.instanceSymbols = null;
            return n;
          }(f.display.DisplayObject);
          g.Bitmap = a;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        (function(g) {
          var k = function(b) {
            function d() {
              g.DisplayObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(d, b);
            d.prototype._canHaveGraphics = function() {
              return!0;
            };
            d.prototype._getGraphics = function() {
              return this._graphics;
            };
            Object.defineProperty(d.prototype, "graphics", {get:function() {
              return this._ensureGraphics();
            }, enumerable:!0, configurable:!0});
            d.prototype._containsPointDirectly = function(a, b) {
              var d = this._getGraphics();
              return!!d && d._containsPoint(a, b, !0);
            };
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.classInitializer = null;
            d.initializer = function(a) {
              this._graphics = null;
              a && this._setStaticContentFromSymbol(a);
            };
            return d;
          }(b.display.DisplayObject);
          g.Shape = k;
        })(b.display || (b.display = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.Debug.somewhatImplemented, d = f.display.DisplayObject, a = f.events, c = function(b) {
            function c() {
              d.instanceConstructorNoInitialize.call(this);
            }
            __extends(c, b);
            Object.defineProperty(c.prototype, "tabEnabled", {get:function() {
              return this._tabEnabled;
            }, set:function(b) {
              b = !!b;
              var c = this._tabEnabled;
              this._tabEnabled = b;
              c !== b && this.dispatchEvent(a.Event.getInstance(a.Event.TAB_ENABLED_CHANGE, !0));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "tabIndex", {get:function() {
              return this._tabIndex;
            }, set:function(b) {
              b |= 0;
              var c = this._tabIndex;
              this._tabIndex = b;
              c !== b && this.dispatchEvent(a.Event.getInstance(a.Event.TAB_INDEX_CHANGE, !0));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "focusRect", {get:function() {
              return this._focusRect;
            }, set:function(a) {
              m("public flash.display.InteractiveObject::set focusRect");
              this._focusRect = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "mouseEnabled", {get:function() {
              return this._mouseEnabled;
            }, set:function(a) {
              this._mouseEnabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "doubleClickEnabled", {get:function() {
              return this._doubleClickEnabled;
            }, set:function(a) {
              this._doubleClickEnabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "accessibilityImplementation", {get:function() {
              return this._accessibilityImplementation;
            }, set:function(a) {
              k("public flash.display.InteractiveObject::set accessibilityImplementation");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "softKeyboardInputAreaOfInterest", {get:function() {
              return this._softKeyboardInputAreaOfInterest;
            }, set:function(a) {
              k("public flash.display.InteractiveObject::set softKeyboardInputAreaOfInterest");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "needsSoftKeyboard", {get:function() {
              return this._needsSoftKeyboard;
            }, set:function(a) {
              k("public flash.display.InteractiveObject::set needsSoftKeyboard");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "contextMenu", {get:function() {
              return this._contextMenu;
            }, set:function(a) {
              m("public flash.display.InteractiveObject::set contextMenu");
              this._contextMenu = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.requestSoftKeyboard = function() {
              k("public flash.display.InteractiveObject::requestSoftKeyboard");
            };
            c.classInitializer = null;
            c.initializer = function() {
              this._tabEnabled = !1;
              this._tabIndex = -1;
              this._focusRect = null;
              this._mouseEnabled = !0;
              this._doubleClickEnabled = !1;
              this._softKeyboardInputAreaOfInterest = this._accessibilityImplementation = null;
              this._needsSoftKeyboard = !1;
              this._contextMenu = null;
            };
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(f.display.DisplayObject);
          g.InteractiveObject = c;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.Debug.assert, d = function(a) {
            function b(a, c, d, f) {
              k("Dummy Constructor: public flash.display.SimpleButton");
            }
            __extends(b, a);
            b.prototype._initFrame = function(a) {
              a && this._updateButton();
            };
            b.prototype._constructFrame = function() {
            };
            Object.defineProperty(b.prototype, "useHandCursor", {get:function() {
              return this._useHandCursor;
            }, set:function(a) {
              this._useHandCursor = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "enabled", {get:function() {
              return this._enabled;
            }, set:function(a) {
              this._enabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "trackAsMenu", {get:function() {
              return this._trackAsMenu;
            }, set:function(a) {
              k("public flash.display.SimpleButton::set trackAsMenu");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "upState", {get:function() {
              return this._upState;
            }, set:function(a) {
              var b = this._upState;
              a._parent && a._parent.removeChild(a);
              this._upState = a;
              this._currentState === b && this._updateButton();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "overState", {get:function() {
              return this._overState;
            }, set:function(a) {
              var b = this._overState;
              a._parent && a._parent.removeChild(a);
              this._overState = a;
              this._currentState === b && this._updateButton();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "downState", {get:function() {
              return this._downState;
            }, set:function(a) {
              var b = this._downState;
              a._parent && a._parent.removeChild(a);
              this._downState = a;
              this._currentState === b && this._updateButton();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "hitTestState", {get:function() {
              return this._hitTestState;
            }, set:function(a) {
              this._hitTestState = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "soundTransform", {get:function() {
              k("public flash.display.SimpleButton::get soundTransform");
            }, set:function(a) {
              k("public flash.display.SimpleButton::set soundTransform");
            }, enumerable:!0, configurable:!0});
            b.prototype._containsPoint = function(a, b, c, d, f, g) {
              var k = this.hitTestState;
              if (!k) {
                return 0;
              }
              if (!this._symbol) {
                var r = k._getInvertedMatrix(), h = r.transformX(c, d);
                d = r.transformY(c, d);
                c = h;
              }
              a = k._containsPoint(a, b, c, d, f, g);
              0 !== a && 3 === f && g && this._mouseEnabled && (g[0] = this, m(1 === g.length));
              return a;
            };
            b.prototype._getChildBounds = function(a, b) {
              var c = this.hitTestState;
              if (c) {
                var d = c._getContentBounds(b).clone();
                this._getConcatenatedMatrix().transformBounds(d);
                this._symbol || c._getMatrix().transformBounds(a);
                a.unionInPlace(d);
              }
            };
            b.prototype._updateButton = function() {
              var a;
              a = this._mouseOver ? this._mouseDown ? this._downState : this._overState : this._upState;
              a !== this._currentState && ((this._currentState = a) ? this._children[0] = a : this._children.length = 0, this._setDirtyFlags(2097152), this._invalidateFillAndLineBounds(!0, !0));
            };
            b.classInitializer = null;
            b.initializer = function(a) {
              g.DisplayObject._advancableInstances.push(this);
              this._enabled = this._useHandCursor = !0;
              this._trackAsMenu = !1;
              this._currentState = this._hitTestState = this._downState = this._overState = this._upState = null;
              this._children = [];
              if (this._symbol = a) {
                a.upState && (this._upState = g.DisplayObject.createAnimatedDisplayObject(a.upState, !0)), a.overState && (this._overState = g.DisplayObject.createAnimatedDisplayObject(a.overState, !0)), a.downState && (this._downState = g.DisplayObject.createAnimatedDisplayObject(a.downState, !0)), a.hitTestState && (this._hitTestState = g.DisplayObject.createAnimatedDisplayObject(a.hitTestState, !0));
              }
            };
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.display.InteractiveObject);
          g.SimpleButton = d;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.Debug.assert, m = b.Debug.notImplemented, d = b.AVM2.Runtime.asCoerceString, a = b.AVM2.Runtime.throwError, c = b.AVM2.Runtime.checkParameterType, n = b.NumberUtilities.clamp, p = b.AVM2.ABC.Multiname, e = f.events, q = function(b) {
            function q() {
              g.InteractiveObject.instanceConstructorNoInitialize.call(this);
              this._setDirtyFlags(2097152);
            }
            __extends(q, b);
            q.prototype._invalidateChildren = function() {
              this._setDirtyFlags(2097152);
              this._invalidateFillAndLineBounds(!0, !0);
            };
            q.prototype._propagateFlagsDown = function(a) {
              if (!this._hasFlags(a)) {
                this._setFlags(a);
                for (var b = this._children, c = 0;c < b.length;c++) {
                  b[c]._propagateFlagsDown(a);
                }
              }
            };
            q.prototype._constructChildren = function() {
              k.counter.count("DisplayObjectContainer::_constructChildren");
              for (var a = this._children, b = 0;b < a.length;b++) {
                var c = a[b];
                c._hasFlags(256) || (c.class.instanceConstructorNoInitialize.call(c), c._removeReference(), c._name && (this[p.getPublicQualifiedName(c._name)] = c), c._setFlags(256), c._symbol && c._symbol.isAVM1Object && (c.dispatchEvent(e.Event.getInstance(e.Event.AVM1_INIT)), c.dispatchEvent(e.Event.getInstance(e.Event.AVM1_CONSTRUCT))), c.dispatchEvent(e.Event.getInstance(e.Event.ADDED, !0)), c.stage && c.dispatchEvent(e.Event.getInstance(e.Event.ADDED_TO_STAGE)));
              }
            };
            q.prototype._enqueueFrameScripts = function() {
              if (this._hasFlags(8192)) {
                this._removeFlags(8192);
                for (var a = this._children, b = 0;b < a.length;b++) {
                  var c = a[b];
                  (q.isType(c) || g.AVM1Movie.isType(c)) && c._enqueueFrameScripts();
                }
              }
            };
            Object.defineProperty(q.prototype, "numChildren", {get:function() {
              return this._children.length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "textSnapshot", {get:function() {
              m("public DisplayObjectContainer::get textSnapshot");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "tabChildren", {get:function() {
              return this._tabChildren;
            }, set:function(a) {
              a = !!a;
              var b = this._tabChildren;
              this._tabChildren = a;
              b !== a && this.dispatchEvent(e.Event.getInstance(e.Event.TAB_CHILDREN_CHANGE, !0));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "mouseChildren", {get:function() {
              return this._mouseChildren;
            }, set:function(a) {
              this._mouseChildren = !!a;
            }, enumerable:!0, configurable:!0});
            q.prototype.addChild = function(a) {
              c(a, "child", f.display.DisplayObject);
              return this.addChildAt(a, this._children.length);
            };
            q.prototype.addChildAt = function(b, d) {
              c(b, "child", f.display.DisplayObject);
              k.counter.count("DisplayObjectContainer::addChildAt");
              d |= 0;
              s(b._hasFlags(256), "Child is not fully constructed.");
              b === this && a("ArgumentError", k.Errors.CantAddSelfError);
              q.isType(b) && b.contains(this) && a("ArgumentError", k.Errors.CantAddParentError);
              var h = this._children;
              (0 > d || d > h.length) && a("RangeError", k.Errors.ParamRangeError);
              if (b._parent === this) {
                return this.setChildIndex(b, n(d, 0, h.length - 1)), b;
              }
              b._parent && (b._parent.removeChild(b), d = n(d, 0, h.length));
              for (var l = h.length - 1;l >= d;l--) {
                h[l]._index++;
              }
              h.splice(d, 0, b);
              b._setParent(this, -1);
              b._index = d;
              b._invalidatePosition();
              b.dispatchEvent(e.Event.getInstance(e.Event.ADDED, !0));
              b.stage && b._propagateEvent(e.Event.getInstance(e.Event.ADDED_TO_STAGE));
              this._invalidateChildren();
              b._addReference();
              return b;
            };
            q.prototype.addTimelineObjectAtDepth = function(a, b) {
              k.counter.count("DisplayObjectContainer::addTimelineObjectAtDepth");
              b |= 0;
              for (var c = this._children, d = c.length - 1, e = d + 1, f = d;0 <= f;f--) {
                var l = c[f];
                if (l._depth) {
                  if (l._depth < b) {
                    e = f + 1;
                    break;
                  }
                  e = f;
                }
              }
              if (e > d) {
                c.push(a), a._index = e;
              } else {
                for (c.splice(e, 0, a), f = e;f < c.length;f++) {
                  c[f]._index = f;
                }
              }
              a._setParent(this, b);
              a._invalidatePosition();
              this._invalidateChildren();
            };
            q.prototype.removeChild = function(a) {
              c(a, "child", f.display.DisplayObject);
              return this.removeChildAt(this.getChildIndex(a));
            };
            q.prototype.removeChildAt = function(b) {
              k.counter.count("DisplayObjectContainer::removeChildAt");
              b |= 0;
              var c = this._children;
              (0 > b || b >= c.length) && a("RangeError", k.Errors.ParamRangeError);
              var d = c[b];
              d._hasFlags(256) && (d.dispatchEvent(e.Event.getInstance(e.Event.REMOVED, !0)), this.stage && d._propagateEvent(e.Event.getInstance(e.Event.REMOVED_FROM_STAGE)), b = this.getChildIndex(d));
              c.splice(b, 1);
              for (var f = c.length - 1;f >= b;f--) {
                c[f]._index--;
              }
              d._setParent(null, -1);
              d._index = -1;
              d._invalidatePosition();
              this._invalidateChildren();
              return d;
            };
            q.prototype.getChildIndex = function(b) {
              c(b, "child", f.display.DisplayObject);
              b._parent !== this && a("ArgumentError", k.Errors.NotAChildError);
              return b._index;
            };
            q.prototype.setChildIndex = function(b, d) {
              d |= 0;
              c(b, "child", f.display.DisplayObject);
              var h = this._children;
              (0 > d || d >= h.length) && a("RangeError", k.Errors.ParamRangeError);
              b._parent !== this && a("ArgumentError", k.Errors.NotAChildError);
              b._depth = -1;
              var e = this.getChildIndex(b);
              if (1 !== h.length && e !== d) {
                if (d === e + 1 || d === e - 1) {
                  this._swapChildrenAt(e, d);
                } else {
                  for (h.splice(e, 1), h.splice(d, 0, b), e = e < d ? e : d;e < h.length;) {
                    h[e]._index = e++;
                  }
                }
                this._invalidateChildren();
              }
            };
            q.prototype.getChildAt = function(b) {
              b |= 0;
              var c = this._children;
              (0 > b || b >= c.length) && a("RangeError", k.Errors.ParamRangeError);
              b = c[b];
              if (!b._hasFlags(256)) {
                return null;
              }
              b._addReference();
              return b;
            };
            q.prototype.getTimelineObjectAtDepth = function(a) {
              a |= 0;
              for (var b = this._children, c = 0;c < b.length;c++) {
                var d = b[c];
                if (d._depth > a) {
                  break;
                }
                if (d._depth === a) {
                  return d;
                }
              }
              return null;
            };
            q.prototype.getClipDepthIndex = function(a) {
              a |= 0;
              for (var b = this._children, c = this._children.length - 1, d = !0, e = c;0 <= e;e--) {
                var f = b[e];
                if (!(0 > f._depth)) {
                  if (f._depth <= a) {
                    return d ? c : e;
                  }
                  d = !1;
                }
              }
              return 0;
            };
            q.prototype.getChildByName = function(a) {
              a = d(a);
              for (var b = this._children, c = 0;c < b.length;c++) {
                var e = b[c];
                if (e._hasFlags(256) && e.name === a) {
                  return e._addReference(), e;
                }
              }
              return null;
            };
            q.prototype._containsPoint = function(a, b, c, d, e, f) {
              var l = Math.min(e, 1), n = this._boundsAndMaskContainPoint(a, b, c, d, l);
              if (0 === n || 2 > e) {
                return n;
              }
              for (var l = !1, m = this._getUnclippedChildren(e, a, b), p = m ? m.length : 0;p--;) {
                if (n = m[p]._containsGlobalPoint(a, b, e, f), 2 === n) {
                  if (3 > e) {
                    return n;
                  }
                  l = !0;
                  if (4 !== e) {
                    s(3 === e);
                    s(1 >= f.length);
                    if (!this._mouseEnabled) {
                      return f.length = 0, n;
                    }
                    this._mouseChildren || (f[0] = this);
                    if (0 !== f.length) {
                      return s(g.InteractiveObject.isType(f[0])), 2;
                    }
                  }
                }
              }
              if (l && 4 !== e) {
                return 3 === e && 0 === f.length && (f[0] = this), 2;
              }
              (a = this._containsPointDirectly(c, d)) && (4 === e || f && this._mouseEnabled) && f.push(this);
              return l || a ? 2 : 0;
            };
            q.prototype._getUnclippedChildren = function(a, b, c) {
              var d = this._children;
              if (!d) {
                return null;
              }
              for (var e, f = 0;d && f < d.length;f++) {
                var l = d[f];
                -1 !== l._clipDepth ? (e || (e = []), 2 !== a && (s(3 <= a), l._containsGlobalPoint(b, c, a, null) || (f = this.getClipDepthIndex(l._clipDepth)))) : e && e.push(l);
              }
              return e || d;
            };
            q.prototype._getChildBounds = function(a, b) {
              for (var c = this._children, d = 0;d < c.length;d++) {
                a.unionInPlace(c[d]._getTransformedBounds(this, b));
              }
            };
            q.prototype.getObjectsUnderPoint = function(a) {
              k.counter.count("DisplayObjectContainer::getObjectsUnderPoint");
              var b = [];
              this._containsGlobalPoint(20 * a.x | 0, 20 * a.y | 0, 4, b);
              return b.reverse();
            };
            q.prototype.areInaccessibleObjectsUnderPoint = function(a) {
              m("public DisplayObjectContainer::areInaccessibleObjectsUnderPoint");
            };
            q.prototype.contains = function(a) {
              c(a, "child", f.display.DisplayObject);
              return this._isAncestor(a);
            };
            q.prototype.swapChildrenAt = function(b, c) {
              b |= 0;
              c |= 0;
              var d = this._children;
              (0 > b || b >= d.length || 0 > c || c >= d.length) && a("RangeError", k.Errors.ParamRangeError);
              b !== c && (this._swapChildrenAt(b, c), this._invalidateChildren());
            };
            q.prototype._swapChildrenAt = function(a, b) {
              var c = this._children, d = c[a], e = c[b];
              c[b] = d;
              d._depth = -1;
              d._index = b;
              c[a] = e;
              e._depth = -1;
              e._index = a;
            };
            q.prototype.swapChildren = function(a, b) {
              c(a, "child", f.display.DisplayObject);
              c(b, "child", f.display.DisplayObject);
              this.swapChildrenAt(this.getChildIndex(a), this.getChildIndex(b));
            };
            q.prototype.removeChildren = function(b, c) {
              "undefined" === typeof b && (b = 0);
              "undefined" === typeof c && (c = 2147483647);
              b |= 0;
              c |= 0;
              (0 > b || 0 > c || c < b || c >= this._children.length) && a("RangeError", k.Errors.ParamRangeError);
              var d = c - b + 1;
              if (0 < d) {
                for (;d--;) {
                  this.removeChildAt(b);
                }
              }
            };
            q.bindings = null;
            q.classSymbols = null;
            q.classInitializer = null;
            q.initializer = function() {
              this._mouseChildren = this._tabChildren = !0;
              this._children = [];
            };
            return q;
          }(f.display.InteractiveObject);
          g.DisplayObjectContainer = q;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.JointStyle");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.ROUND;
                case 1:
                  return a.BEVEL;
                case 2:
                  return a.MITER;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.ROUND:
                  return 0;
                case a.BEVEL:
                  return 1;
                case a.MITER:
                  return 2;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.ROUND = "round";
            a.BEVEL = "bevel";
            a.MITER = "miter";
            return a;
          }(g.ASNative);
          f.JointStyle = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.CapsStyle");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.ROUND;
                case 1:
                  return a.NONE;
                case 2:
                  return a.SQUARE;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.ROUND:
                  return 0;
                case a.NONE:
                  return 1;
                case a.SQUARE:
                  return 2;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.ROUND = "round";
            a.NONE = "none";
            a.SQUARE = "square";
            return a;
          }(g.ASNative);
          f.CapsStyle = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.LineScaleMode");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.NONE;
                case 1:
                  return a.NORMAL;
                case 2:
                  return a.VERTICAL;
                case 3:
                  return a.HORIZONTAL;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.NONE:
                  return 0;
                case a.NORMAL:
                  return 1;
                case a.VERTICAL:
                  return 2;
                case a.HORIZONTAL:
                  return 3;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.NORMAL = "normal";
            a.VERTICAL = "vertical";
            a.HORIZONTAL = "horizontal";
            a.NONE = "none";
            return a;
          }(g.ASNative);
          f.LineScaleMode = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.GradientType");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 16:
                  return a.LINEAR;
                case 18:
                  return a.RADIAL;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.LINEAR:
                  return 16;
                case a.RADIAL:
                  return 18;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.LINEAR = "linear";
            a.RADIAL = "radial";
            return a;
          }(g.ASNative);
          f.GradientType = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.SpreadMethod");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.PAD;
                case 1:
                  return a.REFLECT;
                case 2:
                  return a.REPEAT;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.PAD:
                  return 0;
                case a.REFLECT:
                  return 1;
                case a.REPEAT:
                  return 2;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.PAD = "pad";
            a.REFLECT = "reflect";
            a.REPEAT = "repeat";
            return a;
          }(g.ASNative);
          f.SpreadMethod = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.InterpolationMethod");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.RGB;
                case 1:
                  return a.LINEAR_RGB;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.RGB:
                  return 0;
                case a.LINEAR_RGB:
                  return 1;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.RGB = "rgb";
            a.LINEAR_RGB = "linearRGB";
            return a;
          }(g.ASNative);
          f.InterpolationMethod = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d(a, b, d, f) {
              "undefined" === typeof a && (a = null);
              "undefined" === typeof b && (b = null);
              "undefined" === typeof d && (d = !0);
              "undefined" === typeof f && (f = !1);
              this.bitmapData = a;
              this.matrix = b;
              this.repeat = !!d;
              this.smooth = !!f;
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(b.ASNative);
          f.GraphicsBitmapFill = k;
        })(f.display || (f.display = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.GraphicsEndFill");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.GraphicsEndFill = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.AVM2.Runtime.asCoerceString, m = function(b) {
            function a(a, b, d, e, f, l, g, m) {
              "undefined" === typeof a && (a = "linear");
              "undefined" === typeof b && (b = null);
              "undefined" === typeof d && (d = null);
              "undefined" === typeof e && (e = null);
              "undefined" === typeof f && (f = null);
              "undefined" === typeof l && (l = "pad");
              "undefined" === typeof g && (g = "rgb");
              "undefined" === typeof m && (m = 0);
              this.type = k(a);
              this.colors = b;
              this.alphas = d;
              this.ratios = e;
              this.matrix = f;
              this.spreadMethod = l;
              this.interpolationMethod = k(g);
              this.focalPointRatio = +m;
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.GraphicsGradientFill = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.AVM2.Runtime.asCoerceString, m = function(b) {
            function a(a, b, d) {
              "undefined" === typeof a && (a = null);
              "undefined" === typeof b && (b = null);
              "undefined" === typeof d && (d = "evenOdd");
              this.commands = a;
              this.data = b;
              this.winding = k(d);
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.GraphicsPath = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.GraphicsPathCommand");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.NO_OP = void 0;
            a.MOVE_TO = 1;
            a.LINE_TO = 2;
            a.CURVE_TO = 3;
            a.WIDE_MOVE_TO = 4;
            a.WIDE_LINE_TO = 5;
            a.CUBIC_CURVE_TO = 6;
            return a;
          }(g.ASNative);
          f.GraphicsPathCommand = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.GraphicsPathWinding");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.EVEN_ODD = "evenOdd";
            a.NON_ZERO = "nonZero";
            return a;
          }(g.ASNative);
          f.GraphicsPathWinding = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d(a, b) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof b && (b = 1);
              this.color = a >>> 0;
              this.alpha = +b;
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(b.ASNative);
          f.GraphicsSolidFill = k;
        })(f.display || (f.display = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.AVM2.Runtime.asCoerceString, m = function(b) {
            function a(a, b, d, e, f, l, g) {
              "undefined" === typeof a && (a = NaN);
              "undefined" === typeof b && (b = !1);
              "undefined" === typeof d && (d = "normal");
              "undefined" === typeof e && (e = "none");
              "undefined" === typeof f && (f = "round");
              "undefined" === typeof l && (l = 3);
              "undefined" === typeof g && (g = null);
              this.thickness = +a;
              this.pixelHinting = !!b;
              this.scaleMode = k(d);
              this.caps = k(e);
              this.joints = k(f);
              this.miterLimit = +l;
              this.fill = g;
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.GraphicsStroke = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b(a, c, d, f) {
              "undefined" === typeof f && (f = "none");
              m(f);
              k("Dummy Constructor: public flash.display.GraphicsTrianglePath");
            }
            __extends(b, a);
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.GraphicsTrianglePath = d;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Shumway$$inline_555 = Shumway || (Shumway = {}), AVM2$$inline_556 = Shumway$$inline_555.AVM2 || (Shumway$$inline_555.AVM2 = {}), AS$$inline_557 = AVM2$$inline_556.AS || (AVM2$$inline_556.AS = {}), flash$$inline_558 = AS$$inline_557.flash || (AS$$inline_557.flash = {}), display$$inline_559 = flash$$inline_558.display || (flash$$inline_558.display = {}), display$$inline_560 = flash$$inline_558.display, flash$$inline_561 = AS$$inline_557.flash, AS$$inline_562 = AVM2$$inline_556.AS, AVM2$$inline_563 = 
Shumway$$inline_555.AVM2, Shumway$$inline_565 = Shumway || (Shumway = {}), AVM2$$inline_566 = Shumway$$inline_565.AVM2 || (Shumway$$inline_565.AVM2 = {}), AS$$inline_567 = AVM2$$inline_566.AS || (AVM2$$inline_566.AS = {}), flash$$inline_568 = AS$$inline_567.flash || (AS$$inline_567.flash = {}), display$$inline_569 = flash$$inline_568.display || (flash$$inline_568.display = {}), display$$inline_570 = flash$$inline_568.display, flash$$inline_571 = AS$$inline_567.flash, AS$$inline_572 = AVM2$$inline_566.AS, 
AVM2$$inline_573 = Shumway$$inline_565.AVM2, Shumway$$inline_575 = Shumway || (Shumway = {}), AVM2$$inline_576 = Shumway$$inline_575.AVM2 || (Shumway$$inline_575.AVM2 = {}), AS$$inline_577 = AVM2$$inline_576.AS || (AVM2$$inline_576.AS = {}), flash$$inline_578 = AS$$inline_577.flash || (AS$$inline_577.flash = {}), display$$inline_579 = flash$$inline_578.display || (flash$$inline_578.display = {}), display$$inline_580 = flash$$inline_578.display, flash$$inline_581 = AS$$inline_577.flash, AS$$inline_582 = 
AVM2$$inline_576.AS, AVM2$$inline_583 = Shumway$$inline_575.AVM2, Shumway$$inline_585 = Shumway || (Shumway = {}), AVM2$$inline_586 = Shumway$$inline_585.AVM2 || (Shumway$$inline_585.AVM2 = {}), AS$$inline_587 = AVM2$$inline_586.AS || (AVM2$$inline_586.AS = {}), flash$$inline_588 = AS$$inline_587.flash || (AS$$inline_587.flash = {}), display$$inline_589 = flash$$inline_588.display || (flash$$inline_588.display = {}), display$$inline_590 = flash$$inline_588.display, flash$$inline_591 = AS$$inline_587.flash, 
AS$$inline_592 = AVM2$$inline_586.AS, AVM2$$inline_593 = Shumway$$inline_585.AVM2, Shumway$$inline_595 = Shumway || (Shumway = {}), AVM2$$inline_596 = Shumway$$inline_595.AVM2 || (Shumway$$inline_595.AVM2 = {}), AS$$inline_597 = AVM2$$inline_596.AS || (AVM2$$inline_596.AS = {}), flash$$inline_598 = AS$$inline_597.flash || (AS$$inline_597.flash = {}), display$$inline_599 = flash$$inline_598.display || (flash$$inline_598.display = {}), display$$inline_600 = flash$$inline_598.display, flash$$inline_601 = 
AS$$inline_597.flash, AS$$inline_602 = AVM2$$inline_596.AS, AVM2$$inline_603 = Shumway$$inline_595.AVM2;
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          function s(a, b, c, d) {
            a = c - a;
            b = d - b;
            return a * a + b * b;
          }
          function m(a, b, c, d) {
            var h = 1 - d;
            return a * h * h + 2 * b * h * d + c * d * d;
          }
          function d(a, b, c) {
            var d = (a - b) / (a - 2 * b + c);
            return 0 > d ? a : 1 < d ? c : m(a, b, c, d);
          }
          function a(a, b, c, d, h) {
            var e = h * h, f = 1 - h, l = f * f;
            return a * f * l + 3 * b * h * l + 3 * c * f * e + d * h * e;
          }
          function c(b, c, d, h) {
            var e = c - b, f;
            f = 2 * (d - c);
            var l = h - d;
            e + l === f && (l *= 1.0001);
            var g = 2 * e - f, n = f - 2 * e, n = Math.sqrt(n * n - 4 * e * (e - f + l));
            f = 2 * (e - f + l);
            e = (g + n) / f;
            g = (g - n) / f;
            n = [];
            0 <= e && 1 >= e && n.push(Math.round(a(b, c, d, h, e)));
            0 <= g && 1 >= g && n.push(Math.round(a(b, c, d, h, g)));
            return n;
          }
          function n(a, b, c, d, h, e, f, l, g) {
            function n(a) {
              return a * (q + a * (u + a * w)) + b - g;
            }
            function m(b) {
              0 > b ? b = 0 : 1 < b && (b = 1);
              return a + b * (r + b * (s + b * x));
            }
            function k(a, b, c, d) {
              if (!(Math.abs(c - b) <= d)) {
                var h = .5 * (b + c);
                0 >= a(b) * a(c) ? (t = b, y = c) : (k(a, b, h, d), k(a, h, c, d));
              }
            }
            var r = 3 * (c - a), q = 3 * (d - b), s = 3 * (h - c) - r, u = 3 * (e - d) - q, x = f - a - r - s, w = l - b - q - u, t = 0, y = 1;
            k(n, 0, 1, .05);
            e = p(t, y, n);
            if (1E-5 < Math.abs(n(e))) {
              return[];
            }
            c = [];
            1 >= e && c.push(m(e));
            d = w;
            h = e * d + u;
            f = h * h - 4 * d * (e * h + q);
            if (0 > f) {
              return c;
            }
            f = Math.sqrt(f);
            d = 1 / (d + d);
            e = (f - h) * d;
            d *= -h - f;
            0 <= e && 1 >= e && c.push(m(e));
            0 <= d && 1 >= d && c.push(m(d));
            return c;
          }
          function p(a, b, c) {
            var d, h, e, f, l, g, n = a;
            h = c(a);
            if (0 === h) {
              return a;
            }
            f = c(b);
            if (0 === f) {
              return b;
            }
            if (0 < f * h) {
              return a;
            }
            for (var m = 0, p = 0;50 > p;++p) {
              m++;
              d = .5 * (b + a);
              e = c(d);
              if (0 === e) {
                break;
              }
              if (1E-6 > Math.abs(d - a)) {
                break;
              }
              0 < e * h && (a = b, b = h, h = f, f = b);
              b = e - h;
              g = f - e;
              l = f - h;
              if (f * l < 2 * e * b) {
                b = d, f = e;
              } else {
                f = (d - a) / b;
                b = (b - g) / (g * l);
                b = a - f * h * (1 - b * e);
                f = c(b);
                if (0 === f || 1E-6 > Math.abs(b - n)) {
                  return b;
                }
                n = b;
                0 > f * h || (a = b, h = f, b = d, f = e);
              }
            }
            return d;
          }
          function e(a, b, c, d, h, e) {
            return e > b !== d > b && a < (c - h) * (b - e) / (d - e) + h;
          }
          var q = b.Debug.notImplemented, l = b.AVM2.Runtime.asCoerceString, u = b.AVM2.Runtime.throwError, w = b.NumberUtilities.clamp, r = b.Bounds, h = b.Debug.assert, x = b.Debug.assertUnreachable, y = f.display.GradientType, G = f.display.SpreadMethod, I = f.display.InterpolationMethod, C = f.display.LineScaleMode, E = f.display.CapsStyle, O = f.display.JointStyle, K = b.ShapeData, F = function(g) {
            function p() {
              this._id = f.display.DisplayObject.getNextSyncID();
              this._graphicsData = new K;
              this._textures = [];
              this._fillBounds = new r(134217728, 134217728, 134217728, 134217728);
              this._lineBounds = new r(134217728, 134217728, 134217728, 134217728);
              this._lastX = this._lastY = 0;
              this._boundsIncludeLastCoordinates = !1;
              this._parent = null;
              this._topLeftStrokeWidth = this._bottomRightStrokeWidth = 0;
              this._isDirty = !0;
            }
            __extends(p, g);
            p.FromData = function(a) {
              var b = new f.display.Graphics;
              b._graphicsData = K.FromPlainObject(a.shape);
              a.lineBounds && (b._lineBounds.copyFrom(a.lineBounds), b._fillBounds.copyFrom(a.fillBounds || a.lineBounds));
              return b;
            };
            p.prototype.getGraphicsData = function() {
              return this._graphicsData;
            };
            p.prototype.getUsedTextures = function() {
              return this._textures;
            };
            p.prototype._setStrokeWidth = function(a) {
              switch(a) {
                case 1:
                  this._topLeftStrokeWidth = 0;
                  this._bottomRightStrokeWidth = 1;
                  break;
                case 3:
                  this._topLeftStrokeWidth = 1;
                  this._bottomRightStrokeWidth = 2;
                  break;
                default:
                  this._bottomRightStrokeWidth = this._topLeftStrokeWidth = a = Math.ceil(.5 * a) | 0;
              }
            };
            p.prototype._setParent = function(a) {
              h(!this._parent);
              this._parent = a;
            };
            p.prototype._invalidateParent = function() {
              h(this._parent, "Graphics instances must have a parent.");
              this._parent._invalidateFillAndLineBounds(!0, !0);
              this._parent._setDirtyFlags(4194304);
            };
            p.prototype._invalidate = function() {
              this._invalidateParent();
              this._isDirty = !0;
            };
            p.prototype._getContentBounds = function(a) {
              "undefined" === typeof a && (a = !0);
              return a ? this._lineBounds : this._fillBounds;
            };
            p.prototype.clear = function() {
              this._graphicsData.isEmpty() || (this._graphicsData.clear(), this._textures.length = 0, this._fillBounds.setToSentinels(), this._lineBounds.setToSentinels(), this._lastX = this._lastY = 0, this._boundsIncludeLastCoordinates = !1, this._invalidate());
            };
            p.prototype.beginFill = function(a, b) {
              "undefined" === typeof b && (b = 1);
              a = a >>> 0 & 16777215;
              b = Math.round(255 * w(+b, -1, 1)) | 0;
              this._graphicsData.beginFill(a << 8 | b);
            };
            p.prototype.beginGradientFill = function(a, b, c, d, h, e, f, l) {
              "undefined" === typeof h && (h = null);
              "undefined" === typeof e && (e = "pad");
              "undefined" === typeof f && (f = "rgb");
              "undefined" === typeof l && (l = 0);
              this._writeGradientStyle(2, a, b, c, d, h, e, f, l, !1);
            };
            p.prototype.beginBitmapFill = function(a, b, c, d) {
              "undefined" === typeof b && (b = null);
              "undefined" === typeof c && (c = !0);
              "undefined" === typeof d && (d = !1);
              this._writeBitmapStyle(3, a, b, c, d, !1);
            };
            p.prototype.endFill = function() {
              this._graphicsData.endFill();
            };
            p.prototype.lineStyle = function(a, b, c, d, h, e, f, g) {
              "undefined" === typeof b && (b = 0);
              "undefined" === typeof c && (c = 1);
              "undefined" === typeof d && (d = !1);
              "undefined" === typeof h && (h = "normal");
              "undefined" === typeof e && (e = null);
              "undefined" === typeof f && (f = null);
              "undefined" === typeof g && (g = 3);
              a = +a;
              b = b >>> 0 & 16777215;
              c = Math.round(255 * w(+c, -1, 1));
              d = !!d;
              h = l(h);
              e = l(e);
              f = l(f);
              g = w(+g | 0, 0, 255);
              isNaN(a) ? (this._setStrokeWidth(0), this._graphicsData.endLine()) : (a = 20 * w(+a, 0, 255) | 0, this._setStrokeWidth(a), h = C.toNumber(l(h)), 0 > h && (h = C.toNumber(C.NORMAL)), e = E.toNumber(l(e)), 0 > e && (e = E.toNumber(E.ROUND)), f = O.toNumber(l(f)), 0 > f && (f = O.toNumber(O.ROUND)), this._graphicsData.lineStyle(a, b << 8 | c, d, h, e, f, g));
            };
            p.prototype.lineGradientStyle = function(a, b, c, d, h, e, f, l) {
              "undefined" === typeof h && (h = null);
              "undefined" === typeof e && (e = "pad");
              "undefined" === typeof f && (f = "rgb");
              "undefined" === typeof l && (l = 0);
              this._writeGradientStyle(6, a, b, c, d, h, e, f, l, !this._graphicsData.hasLines);
            };
            p.prototype.lineBitmapStyle = function(a, b, c, d) {
              "undefined" === typeof b && (b = null);
              "undefined" === typeof c && (c = !0);
              "undefined" === typeof d && (d = !1);
              this._writeBitmapStyle(7, a, b, c, d, !this._graphicsData.hasLines);
            };
            p.prototype.drawRect = function(a, b, c, d) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              c = a + (20 * c | 0);
              d = b + (20 * d | 0);
              a === this._lastX && b === this._lastY || this._graphicsData.moveTo(a, b);
              this._graphicsData.lineTo(c, b);
              this._graphicsData.lineTo(c, d);
              this._graphicsData.lineTo(a, d);
              this._graphicsData.lineTo(a, b);
              this._extendBoundsByPoint(c, d);
              this._applyLastCoordinates(a, b);
              this._invalidate();
            };
            p.prototype.drawRoundRect = function(a, b, c, d, h, e) {
              a = +a;
              b = +b;
              c = +c;
              d = +d;
              h = +h;
              if ((e = +e) && h) {
                h = h / 2 | 0;
                e = e / 2 | 0;
                var f = c / 2, l = d / 2;
                h > f && (h = f);
                e > l && (e = l);
                f === h && l === e ? h === e ? this.drawCircle(a + h, b + e, h) : this.drawEllipse(a, b, 2 * h, 2 * e) : (c = a + c, d = b + d, f = a + h, h = c - h, l = b + e, e = d - e, this.moveTo(c, e), this.curveTo(c, d, h, d), this.lineTo(f, d), this.curveTo(a, d, a, e), this.lineTo(a, l), this.curveTo(a, b, f, b), this.lineTo(h, b), this.curveTo(c, b, c, l), this.lineTo(c, e));
              } else {
                this.drawRect(a, b, c, d);
              }
            };
            p.prototype.drawRoundRectComplex = function(a, b, c, d, h, e, f, l) {
              a = +a;
              b = +b;
              c = +c;
              d = +d;
              h = +h;
              e = +e;
              f = +f;
              l = +l;
              if (h | e | f | l) {
                c = a + c;
                d = b + d;
                var g = a + h;
                this.moveTo(c, d - l);
                this.curveTo(c, d, c - l, d);
                this.lineTo(a + f, d);
                this.curveTo(a, d, a, d - f);
                this.lineTo(a, b + h);
                this.curveTo(a, b, g, b);
                this.lineTo(c - e, b);
                this.curveTo(c, b, c, b + e);
                this.lineTo(c, d - l);
              } else {
                this.drawRect(a, b, c, d);
              }
            };
            p.prototype.drawCircle = function(a, b, c) {
              c = +c;
              this.drawEllipse(+a - c, +b - c, 2 * c, 2 * c);
            };
            p.prototype.drawEllipse = function(a, b, c, d) {
              c = +c / 2;
              d = +d / 2;
              a = +a + c;
              b = +b + d;
              var h = a + c, e = b;
              this.moveTo(h, e);
              for (var f = 0, l = 1, g = 0, n = 0;4 > n;n++) {
                var m = f + Math.PI / 2, f = 4 / 3 * Math.tan((m - f) / 4), p = h - g * f * c, k = e + l * f * d, l = Math.cos(m), g = Math.sin(m), h = a + l * c, e = b + g * d;
                this.cubicCurveTo(p, k, h + g * f * c, e - l * f * d, h, e);
                f = m;
              }
            };
            p.prototype.moveTo = function(a, b) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              this._graphicsData.moveTo(a, b);
              this._lastX = a;
              this._lastY = b;
              this._boundsIncludeLastCoordinates = !1;
            };
            p.prototype.lineTo = function(a, b) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              this._graphicsData.lineTo(a, b);
              this._applyLastCoordinates(a, b);
              this._invalidate();
            };
            p.prototype.curveTo = function(a, b, c, h) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              c = 20 * c | 0;
              h = 20 * h | 0;
              this._graphicsData.curveTo(a, b, c, h);
              (a < this._lastX || a > c) && this._extendBoundsByX(d(this._lastX, a, c) | 0);
              (b < this._lastY || b > h) && this._extendBoundsByY(d(this._lastY, b, h) | 0);
              this._applyLastCoordinates(c, h);
              this._invalidate();
            };
            p.prototype.cubicCurveTo = function(a, b, d, h, e, f) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              d = 20 * d | 0;
              h = 20 * h | 0;
              e = 20 * e | 0;
              f = 20 * f | 0;
              this._graphicsData.cubicCurveTo(a, b, d, h, e, f);
              var l = this._lastX, g = this._lastY;
              if (a < l || d < l || a > e || d > e) {
                for (a = c(l, a, d, e), d = a.length;d--;) {
                  this._extendBoundsByX(a[d] | 0);
                }
              }
              if (b < g || h < g || b > f || h > f) {
                for (a = c(g, b, h, f), d = a.length;d--;) {
                  this._extendBoundsByY(a[d] | 0);
                }
              }
              this._applyLastCoordinates(e, f);
              this._invalidate();
            };
            p.prototype.copyFrom = function(a) {
              this._graphicsData = a._graphicsData.clone();
              this._fillBounds = a._fillBounds.clone();
              this._lineBounds = a._lineBounds.clone();
              this._textures = a._textures.concat();
              this._lastX = a._lastX;
              this._lastY = a._lastY;
              this._boundsIncludeLastCoordinates = a._boundsIncludeLastCoordinates;
              this._invalidate();
            };
            p.prototype.drawPath = function(a, b, c) {
              "undefined" === typeof c && (c = "evenOdd");
              l(c);
              q("public flash.display.Graphics::drawPath");
            };
            p.prototype.drawTriangles = function(a, b, c, d) {
              "undefined" === typeof d && (d = "none");
              l(d);
              q("public flash.display.Graphics::drawTriangles");
            };
            p.prototype.drawGraphicsData = function(a) {
              q("public flash.display.Graphics::drawGraphicsData");
            };
            p.prototype._containsPoint = function(a, b, c) {
              var d = this._graphicsData.hasLines;
              if (!(c && d ? this._lineBounds : this._fillBounds).contains(a, b)) {
                return!1;
              }
              var e = !1;
              this._graphicsData.hasFills ? e = this._fillContainsPoint(a, b) : h(d, "Can't have non-empty bounds without line or fill set.");
              !e && c && (e = this._linesContainsPoint(a, b));
              return e;
            };
            p.prototype._fillContainsPoint = function(a, b) {
              for (var c = this._graphicsData, d = c.commands, f = c.commandsPosition, l = c.coordinates, g = 0, p = 0, k = 0, r = 0, q = 0, s, u, w = !1, t = !1, y = 0, G = 0, C = !1, I = 0;I < f;I++) {
                s = d[I];
                switch(s) {
                  case 9:
                    h(g <= c.coordinatesPosition - 2);
                    w && t && e(a, b, p, k, y, G) && (C = !C);
                    w = !0;
                    p = y = l[g++];
                    k = G = l[g++];
                    continue;
                  case 10:
                    h(g <= c.coordinatesPosition - 2);
                    r = l[g++];
                    q = l[g++];
                    t && e(a, b, p, k, r, q) && (C = !C);
                    break;
                  case 11:
                    h(g <= c.coordinatesPosition - 4);
                    s = l[g++];
                    u = l[g++];
                    var r = l[g++], q = l[g++], E;
                    if (E = t) {
                      if (u > b === k > b && q > b === k > b) {
                        E = !1;
                      } else {
                        if (p >= a && s >= a && r >= a) {
                          E = !0;
                        } else {
                          E = k - 2 * u + q;
                          u = 2 * (u - k);
                          var O = u * u - 4 * E * (k - b);
                          0 > O ? E = !1 : (O = Math.sqrt(O), E = 1 / (E + E), k = (O - u) * E, u = (-u - O) * E, E = !1, 0 <= k && 1 >= k && m(p, s, r, k) > a && (E = !E), 0 <= u && 1 >= u && m(p, s, r, u) > a && (E = !E));
                        }
                      }
                    }
                    E && (C = !C);
                    break;
                  case 12:
                    h(g <= c.coordinatesPosition - 6);
                    s = l[g++];
                    u = l[g++];
                    var O = l[g++], K = l[g++], r = l[g++], q = l[g++];
                    if (E = t) {
                      E = a;
                      var F = k > b;
                      if (u > b === F && K > b === F && q > b === F) {
                        E = !1;
                      } else {
                        if (p < E && s < E && O < E && r < E) {
                          E = !1;
                        } else {
                          F = !1;
                          p = n(p, k, s, u, O, K, r, q, b);
                          for (s = p.length;s;s--) {
                            p[s] >= E && (F = !F);
                          }
                          E = F;
                        }
                      }
                    }
                    E && (C = !C);
                    break;
                  case 1:
                  ;
                  case 2:
                  ;
                  case 3:
                  ;
                  case 4:
                    w && t && e(a, b, p, k, y, G) && (C = !C);
                    if (C) {
                      return!0;
                    }
                    w = !1;
                    t = 4 !== s;
                    break;
                  case 5:
                    g++;
                    break;
                  case 6:
                  ;
                  case 7:
                  ;
                  case 8:
                    break;
                  default:
                    x("Invalid command " + s + " encountered at index" + (I - 1) + " of " + f);
                }
                p = r;
                k = q;
              }
              h(I === f);
              h(g === c.coordinatesPosition);
              w && t && e(a, b, p, k, y, G) && (C = !C);
              return C;
            };
            p.prototype._linesContainsPoint = function(b, e) {
              for (var f = this._graphicsData, l = f.commands, g = f.commandsPosition, n = f.coordinates, p = 0, k = 0, r = 0, q = 0, u = 0, w, t, y, G, C, I = 0, E = 0, O = 0, K = 0, F = 0, J = 0, A = E = 0;A < g;A++) {
                w = l[A];
                switch(w) {
                  case 9:
                    h(p <= f.coordinatesPosition - 2);
                    k = n[p++];
                    r = n[p++];
                    continue;
                  case 10:
                    h(p <= f.coordinatesPosition - 2);
                    if (0 === I) {
                      p++;
                      k = n[p++];
                      continue;
                    }
                    q = n[p++];
                    u = n[p++];
                    if (k === q && r === u) {
                      break;
                    }
                    if (F < k && F < q || K > k && K > q || E < r && E < u || J > r && J > u) {
                      break;
                    }
                    if (q === k || u === r) {
                      return!0;
                    }
                    C = ((b - k) * (q - k) + (e - r) * (u - r)) / s(k, r, q, u);
                    if (0 > C) {
                      if (s(b, e, k, r) <= O) {
                        return!0;
                      }
                      break;
                    }
                    if (1 < C) {
                      if (s(b, e, q, u) <= O) {
                        return!0;
                      }
                      break;
                    }
                    if (s(b, e, k + C * (q - k), r + C * (u - r)) <= O) {
                      return!0;
                    }
                    break;
                  case 11:
                    h(p <= f.coordinatesPosition - 4);
                    if (0 === I) {
                      p += 2;
                      p++;
                      k = n[p++];
                      continue;
                    }
                    w = n[p++];
                    t = n[p++];
                    var q = n[p++], u = n[p++], W = d(k, w, q);
                    if (F < k && F < W && F < q || K > k && K > W && K > q) {
                      break;
                    }
                    W = d(r, t, u);
                    if (E < r && E < W && E < u || J > r && J > W && J > u) {
                      break;
                    }
                    for (C = 0;1 > C;C += .02) {
                      if (y = m(k, w, q, C), !(y < K || y > F) && (G = m(r, t, u, C), !(G < J || G > E) && (b - y) * (b - y) + (e - G) * (e - G) < O)) {
                        return!0;
                      }
                    }
                    break;
                  case 12:
                    h(p <= f.coordinatesPosition - 6);
                    if (0 === I) {
                      p += 4;
                      p++;
                      k = n[p++];
                      continue;
                    }
                    w = n[p++];
                    t = n[p++];
                    var W = n[p++], ha = n[p++], q = n[p++], u = n[p++];
                    for (y = c(k, w, W, q);2 > y.length;) {
                      y.push(q);
                    }
                    if (F < k && F < q && F < y[0] && F < y[1] || K > k && K > q && K > y[0] && K > y[1]) {
                      break;
                    }
                    for (y = c(r, t, ha, u);2 > y.length;) {
                      y.push(u);
                    }
                    if (E < r && E < u && E < y[0] && E < y[1] || J > r && J > u && J > y[0] && J > y[1]) {
                      break;
                    }
                    for (C = 0;1 > C;C += .02) {
                      if (y = a(k, w, W, q, C), !(y < K || y > F) && (G = a(r, t, ha, u, C), !(G < J || G > E) && (b - y) * (b - y) + (e - G) * (e - G) < O)) {
                        return!0;
                      }
                    }
                    break;
                  case 5:
                    I = n[p++];
                    E = I >> 2;
                    O = E * E;
                    K = b - E;
                    F = b + E;
                    J = e - E;
                    E = e + E;
                    break;
                  case 1:
                  ;
                  case 2:
                  ;
                  case 3:
                  ;
                  case 4:
                  ;
                  case 6:
                  ;
                  case 7:
                  ;
                  case 8:
                    break;
                  default:
                    x("Invalid command " + w + " encountered at index" + (A - 1) + " of " + g);
                }
                k = q;
                r = u;
              }
              h(A === g);
              h(p === f.coordinatesPosition);
              return!1;
            };
            p.prototype._writeBitmapStyle = function(a, c, d, h, e, l) {
              b.isNullOrUndefined(c) ? u("TypeError", k.Errors.NullPointerError, "bitmap") : f.display.BitmapData.isType(c) || u("TypeError", k.Errors.CheckTypeFailedError, "bitmap", "flash.display.BitmapData");
              b.isNullOrUndefined(d) ? d = f.geom.Matrix.FROZEN_IDENTITY_MATRIX : f.geom.Matrix.isType(d) || u("TypeError", k.Errors.CheckTypeFailedError, "matrix", "flash.geom.Matrix");
              h = !!h;
              e = !!e;
              l || (l = this._textures.length, this._textures.push(c), this._graphicsData.beginBitmap(a, l, d, h, e));
            };
            p.prototype._writeGradientStyle = function(a, c, d, h, e, g, n, m, p, r) {
              b.isNullOrUndefined(c) && u("TypeError", k.Errors.NullPointerError, "type");
              c = y.toNumber(l(c));
              0 > c && u("ArgumentError", k.Errors.InvalidEnumError, "type");
              b.isNullOrUndefined(d) && u("TypeError", k.Errors.NullPointerError, "colors");
              d instanceof Array || u("TypeError", k.Errors.CheckTypeFailedError, "colors", "Array");
              h instanceof Array || u("TypeError", k.Errors.CheckTypeFailedError, "alphas", "Array");
              b.isNullOrUndefined(h) && u("TypeError", k.Errors.NullPointerError, "alphas");
              e instanceof Array || u("TypeError", k.Errors.CheckTypeFailedError, "ratios", "Array");
              b.isNullOrUndefined(e) && u("TypeError", k.Errors.NullPointerError, "ratios");
              var q = [], s = [], x = d.length, t = x === h.length && x === e.length;
              if (t) {
                for (var C = 0;C < x;C++) {
                  var E = +e[C];
                  if (255 < E || 0 > E) {
                    t = !1;
                    break;
                  }
                  q[C] = d[C] << 8 & 4294967040 | 255 * w(+h[C], 0, 1);
                  s[C] = E;
                }
              }
              t && (b.isNullOrUndefined(g) ? g = f.geom.Matrix.FROZEN_IDENTITY_MATRIX : f.geom.Matrix.isType(g) || u("TypeError", k.Errors.CheckTypeFailedError, "matrix", "flash.geom.Matrix"), r || (d = G.toNumber(l(n)), 0 > d && (d = G.toNumber(G.PAD)), m = I.toNumber(l(m)), 0 > m && (m = I.toNumber(I.RGB)), p = w(+p, -1, 1) / 2 * 255 | 0, this._graphicsData.beginGradient(a, q, s, c, g, d, m, p)));
            };
            p.prototype._extendBoundsByPoint = function(a, b) {
              this._extendBoundsByX(a);
              this._extendBoundsByY(b);
            };
            p.prototype._extendBoundsByX = function(a) {
              this._fillBounds.extendByX(a);
              var b = this._lineBounds;
              134217728 === b.xMin ? (b.xMin = a - this._topLeftStrokeWidth, b.xMax = a + this._bottomRightStrokeWidth) : (b.xMin = Math.min(a - this._topLeftStrokeWidth, b.xMin), b.xMax = Math.max(a + this._bottomRightStrokeWidth, b.xMax));
            };
            p.prototype._extendBoundsByY = function(a) {
              this._fillBounds.extendByY(a);
              var b = this._lineBounds;
              134217728 === b.yMin ? (b.yMin = a - this._topLeftStrokeWidth, b.yMax = a + this._bottomRightStrokeWidth) : (b.yMin = Math.min(a - this._topLeftStrokeWidth, b.yMin), b.yMax = Math.max(a + this._bottomRightStrokeWidth, b.yMax));
            };
            p.prototype._applyLastCoordinates = function(a, b) {
              this._boundsIncludeLastCoordinates || this._extendBoundsByPoint(this._lastX, this._lastY);
              this._boundsIncludeLastCoordinates = !0;
              this._lastX = a;
              this._lastY = b;
              this._extendBoundsByPoint(a, b);
            };
            p.classInitializer = null;
            p.initializer = null;
            p.classSymbols = null;
            p.instanceSymbols = null;
            return p;
          }(g.ASNative);
          t.Graphics = F;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          var s = b.Debug.assert, m = b.Debug.notImplemented, d = function(a) {
            function b() {
              k.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._constructChildren();
            }
            __extends(b, a);
            b.prototype._initializeChildren = function(a) {
              for (var b in a.stateAtDepth) {
                var c = a.stateAtDepth[b];
                if (c) {
                  var d = k.DisplayObject.createAnimatedDisplayObject(c, !1);
                  this.addTimelineObjectAtDepth(d, c.depth);
                  c.symbol.isAVM1Object && this._initAvm1Bindings(d, c);
                }
              }
            };
            b.prototype._initAvm1Bindings = function(a, b) {
              var c = g.avm1lib.getAVM1Object(a);
              s(c);
              b.variableName && c.asSetPublicProperty("variable", b.variableName);
              var d = b.events;
              if (d) {
                for (var f = [], m = 0;m < d.length;m++) {
                  for (var k = d[m], r = k.eventNames, k = k.handler.bind(a), h = 0;h < r.length;h++) {
                    var x = r[h], t = a;
                    if ("mouseDown" === x || "mouseUp" === x || "mouseMove" === x) {
                      t = a.stage;
                    }
                    t.addEventListener(x, k, !1);
                    f.push({eventName:x, fn:k, target:t});
                  }
                }
                0 < f.length && a.addEventListener("removed", function(a) {
                  for (var b = 0;b < a.length;b++) {
                    a[b].target.removeEventListener(a[b].eventName, a[b].fn, !1);
                  }
                }.bind(a, f), !1);
              }
              b.name && (d = g.avm1lib.getAVM1Object(this), void 0 === d.asGetPublicProperty(b.name) && d.asSetPublicProperty(b.name, c));
            };
            b.prototype._canHaveGraphics = function() {
              return!0;
            };
            b.prototype._getGraphics = function() {
              return this._graphics;
            };
            Object.defineProperty(b.prototype, "graphics", {get:function() {
              return this._ensureGraphics();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "buttonMode", {get:function() {
              return this._buttonMode;
            }, set:function(a) {
              this._buttonMode = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "dropTarget", {get:function() {
              m("public flash.display.Sprite::get dropTarget");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "hitArea", {get:function() {
              return this._hitArea;
            }, set:function(a) {
              this._hitArea !== a && (a && a._hitTarget && (a._hitTarget._hitArea = null), this._hitArea = a) && (a._hitTarget = this);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "useHandCursor", {get:function() {
              return this._useHandCursor;
            }, set:function(a) {
              this._useHandCursor = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "soundTransform", {get:function() {
              m("public flash.display.Sprite::get soundTransform");
            }, set:function(a) {
              m("public flash.display.Sprite::set soundTransform");
            }, enumerable:!0, configurable:!0});
            b.prototype.startDrag = function(a, b) {
              m("public flash.display.Sprite::startDrag");
            };
            b.prototype.stopDrag = function() {
              m("public flash.display.Sprite::stopDrag");
            };
            b.prototype.startTouchDrag = function(a, b, c) {
              m("public flash.display.Sprite::startTouchDrag");
            };
            b.prototype.stopTouchDrag = function(a) {
              m("public flash.display.Sprite::stopTouchDrag");
            };
            b.prototype._containsPoint = function(b, c, d, f, l, g) {
              return 3 === l && this._hitArea && this._mouseEnabled ? (b = this._hitArea._containsGlobalPoint(b, c, 2, g), 2 === b && (s(0 === g.length), g.push(this)), b) : a.prototype._containsPoint.call(this, b, c, d, f, l, g);
            };
            b.prototype._containsPointDirectly = function(a, b) {
              var c = this._getGraphics();
              return!!c && c._containsPoint(a, b, !0);
            };
            b.classInitializer = null;
            b.initializer = function(a) {
              this._graphics = null;
              this._buttonMode = !1;
              this._hitArea = this._dropTarget = null;
              this._useHandCursor = !0;
              this._hitTarget = null;
              a && (a.isRoot && (this._root = this), a.numFrames && (s(1 <= a.frames.length, "Sprites have at least one frame."), a = a.frames[0], s(a, "Initial frame is not defined."), this._initializeChildren(a)));
            };
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.display.DisplayObjectContainer);
          k.Sprite = d;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          var s = b.Debug.assert, m = b.Debug.assertUnreachable, d = b.AVM2.Runtime.asCoerceString, a = b.AVM2.Runtime.throwError, c = b.Telemetry, n = b.AVM2.ABC.Multiname;
          (function(a) {
            a[a.SWF1 = 1] = "SWF1";
            a[a.SWF9 = 2] = "SWF9";
            a[a.SWF10 = 3] = "SWF10";
          })(t.FrameNavigationModel || (t.FrameNavigationModel = {}));
          var p = function() {
            function a(b) {
              this._mc = b;
              this._soundStream = this._startSoundRegistrations = null;
            }
            a.prototype.registerStartSounds = function(a, b) {
              null === this._startSoundRegistrations && (this._startSoundRegistrations = {});
              this._startSoundRegistrations[a] = b;
            };
            a.prototype.initSoundStream = function(a) {
              this._soundStream = new t.MovieClipSoundStream(a, this._mc);
            };
            a.prototype.addSoundStreamBlock = function(a, b) {
              this._soundStream.appendBlock(a, b);
            };
            a.prototype._startSounds = function(a) {
              if (a = this._startSoundRegistrations[a]) {
                for (var b = this._soundClips || (this._soundClips = {}), c = this._mc.loaderInfo, d = 0;d < a.length;d++) {
                  var h = a[d], e = h.soundId, h = h.soundInfo, f = b[e];
                  if (!f) {
                    var g = c.getSymbolById(e);
                    if (!g) {
                      continue;
                    }
                    f = g.symbolClass;
                    g = f.initializeFrom(g);
                    f.instanceConstructorNoInitialize.call(g);
                    b[e] = f = {object:g};
                  }
                  f.channel && (f.channel.stop(), f.channel = null);
                  h.stop || (f.channel = f.object.play(0, h.hasLoops ? h.loopCount : 0));
                }
              }
            };
            a.prototype.syncSounds = function(a) {
              null !== this._startSoundRegistrations && this._startSounds(a);
              this._soundStream && this._soundStream.playFrame(a);
            };
            return a;
          }(), e = function(b) {
            function e() {
              t.Sprite.instanceConstructorNoInitialize.call(this);
            }
            __extends(e, b);
            e.reset = function() {
              e.frameNavigationModel = 3;
              e._callQueue = [];
            };
            e.runFrameScripts = function() {
              k.enterTimeline("MovieClip.executeFrame");
              var a = e._callQueue;
              e._callQueue = [];
              for (var b = 0;b < a.length;b++) {
                var c = a[b];
                c._allowFrameNavigation = 1 === e.frameNavigationModel;
                c.callFrame(c._currentFrame);
                c._allowFrameNavigation = !0;
                c._nextFrame !== c._currentFrame && (2 === e.frameNavigationModel ? (c._advanceFrame(), c._constructFrame(), c._removeFlags(4096), c.callFrame(c._currentFrame)) : t.DisplayObject.performFrameNavigation(!1, !0));
              }
              k.leaveTimeline();
            };
            e.prototype._initFrame = function(a) {
              if (a) {
                if (this.buttonMode && (a = null, this._mouseOver ? a = this._mouseDown ? "_down" : "_over" : null !== this._currentButtonState && (a = "_up"), a !== this._currentButtonState && this._buttonFrames[a])) {
                  this.stop();
                  this._gotoFrame(a, null);
                  this._currentButtonState = a;
                  this._advanceFrame();
                  return;
                }
                1 < this._totalFrames && !this._stopped && this._hasFlags(256) && this._nextFrame++;
              }
              this._advanceFrame();
            };
            e.prototype._constructFrame = function() {
              this._constructChildren();
            };
            e.prototype._enqueueFrameScripts = function() {
              this._hasFlags(4096) && (this._removeFlags(4096), e._callQueue.push(this));
              b.prototype._enqueueFrameScripts.call(this);
            };
            Object.defineProperty(e.prototype, "currentFrame", {get:function() {
              return this._currentFrame - this._sceneForFrameIndex(this._currentFrame).offset;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "framesLoaded", {get:function() {
              return this._frames.length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "totalFrames", {get:function() {
              return this._totalFrames;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "trackAsMenu", {get:function() {
              return this._trackAsMenu;
            }, set:function(a) {
              this._trackAsMenu = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "scenes", {get:function() {
              return this._scenes.map(function(a) {
                return a.clone();
              });
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "currentScene", {get:function() {
              return this._sceneForFrameIndex(this._currentFrame).clone();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "currentLabel", {get:function() {
              var a = this._labelForFrame(this._currentFrame);
              return a ? a.name : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "currentFrameLabel", {get:function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              return(a = a.getLabelByFrame(this._currentFrame - a.offset)) && a.name;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "enabled", {get:function() {
              return this._enabled;
            }, set:function(a) {
              this._enabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "isPlaying", {get:function() {
              return this._isPlaying;
            }, enumerable:!0, configurable:!0});
            e.prototype.play = function() {
              1 < this._totalFrames && (this._isPlaying = !0);
              this._stopped = !1;
            };
            e.prototype.stop = function() {
              this._isPlaying = !1;
              this._stopped = !0;
            };
            e.prototype._gotoFrame = function(b, c) {
              var e;
              if (null !== c) {
                c = d(c);
                var h = this._scenes;
                s(h.length, "There should be at least one scene defined.");
                for (var f = 0;f < h.length && (e = h[f], e.name !== c);f++) {
                }
                f === h.length && a("ArgumentError", k.Errors.SceneNotFoundError, c);
              } else {
                e = this._sceneForFrameIndex(this._currentFrame);
              }
              h = parseInt(b, 10);
              h != b && ((h = e.getLabelByName(b)) || a("ArgumentError", k.Errors.FrameLabelNotFoundError, b, c), h = h.frame);
              this._gotoFrameAbs(e.offset + h);
            };
            e.prototype._gotoFrameAbs = function(a) {
              1 > a ? a = 1 : a > this._totalFrames && (a = this._totalFrames);
              a !== this._nextFrame && (this._nextFrame = a, this._allowFrameNavigation && (2 === e.frameNavigationModel ? (this._advanceFrame(), this._constructFrame()) : t.DisplayObject.performFrameNavigation(!1, !0)));
            };
            e.prototype._advanceFrame = function() {
              var a = this._currentFrame, b = this._nextFrame;
              b > this._totalFrames && (b = 1);
              if (a === b) {
                this._nextFrame = b;
              } else {
                if (b > this.framesLoaded) {
                  this._nextFrame = b;
                } else {
                  var c = this._frames, d = a, e = c[a - 1];
                  if (b < a) {
                    var f = c[0];
                    s(f, "FrameDelta is not defined.");
                    if (f !== e) {
                      for (d = f.stateAtDepth, f = this._children.slice(), a = 0;a < f.length;a++) {
                        var l = f[a];
                        if (l._depth) {
                          var g = d[l._depth];
                          g && g.canBeAnimated(l) || this._removeAnimatedChild(l);
                        }
                      }
                    }
                    d = 0;
                  }
                  for (a = d;a < b;a++) {
                    if (f = c[a], s(f, "FrameDelta is not defined."), f !== e) {
                      var e = f, d = f.stateAtDepth, n;
                      for (n in d) {
                        l = this.getTimelineObjectAtDepth(n | 0);
                        g = d[n];
                        if (l) {
                          if (g && g.canBeAnimated(l)) {
                            g.symbol && !g.symbol.dynamic && l._setStaticContentFromSymbol(g.symbol);
                            l._animate(g);
                            continue;
                          }
                          this._removeAnimatedChild(l);
                        }
                        g && g.symbol && (l = t.DisplayObject.createAnimatedDisplayObject(g, !1), this.addTimelineObjectAtDepth(l, g.depth), g.symbol.isAVM1Object && this._initAvm1Bindings(l, g));
                      }
                      (d = f.soundStarts) && this._registerStartSounds(a + 1, d);
                    }
                  }
                  this._frameScripts[b] && (this._setFlags(4096), this._parent && this._propagateFlagsUp(8192));
                  this._currentFrame = this._nextFrame = b;
                  this._syncSounds(b);
                }
              }
            };
            e.prototype._sceneForFrameIndex = function(a) {
              var b = this._scenes;
              if (0 === a) {
                return b[0];
              }
              for (var c = 0;c < b.length;c++) {
                var d = b[c];
                if (d.offset < a && d.offset + d.numFrames >= a) {
                  return d;
                }
              }
              m("Must have at least one scene covering all frames.");
            };
            e.prototype._labelForFrame = function(a) {
              for (var b = this._scenes, c = null, d = 0;d < b.length;d++) {
                var e = b[d];
                if (e.offset > a) {
                  break;
                }
                for (var f = e.labels, l = 0;l < f.length;l++) {
                  var g = f[l];
                  if (g.frame > a - e.offset) {
                    return c;
                  }
                  c = g;
                }
              }
              return c;
            };
            e.prototype._removeAnimatedChild = function(a) {
              this.removeChild(a);
              if (a._name) {
                var b = n.getPublicQualifiedName(a._name);
                this[b] === a && (this[b] = null);
              }
            };
            e.prototype.callFrame = function(a) {
              if (a = this._frameScripts[a | 0]) {
                try {
                  a.call(this);
                } catch (b) {
                  throw c.instance.reportTelemetry({topic:"error", error:2}), this.stop(), b;
                }
              }
            };
            e.prototype.nextFrame = function() {
              this.gotoAndStop(this._currentFrame + 1);
            };
            e.prototype.prevFrame = function() {
              this.gotoAndStop(this._currentFrame - 1);
            };
            e.prototype.gotoAndPlay = function(b, c) {
              "undefined" === typeof c && (c = null);
              (0 === arguments.length || 2 < arguments.length) && a("ArgumentError", k.Errors.WrongArgumentCountError, "flash.display::MovieClip/gotoAndPlay()", 1, arguments.length);
              c = d(c);
              b = d(b) + "";
              this.play();
              this._gotoFrame(b, c);
            };
            e.prototype.gotoAndStop = function(b, c) {
              "undefined" === typeof c && (c = null);
              (0 === arguments.length || 2 < arguments.length) && a("ArgumentError", k.Errors.WrongArgumentCountError, "flash.display::MovieClip/gotoAndPlay()", 1, arguments.length);
              c = d(c);
              b = d(b) + "";
              this.stop();
              this._gotoFrame(b, c);
            };
            e.prototype.addFrameScript = function(b, c) {
              if (this._currentFrame) {
                var d = arguments.length;
                d & 1 && a("ArgumentError", k.Errors.TooFewArgumentsError, d, d + 1);
                for (var h = this._frameScripts, e = this._totalFrames, f = 0;f < d;f += 2) {
                  var l = (arguments[f] | 0) + 1;
                  1 > l || l > e || (h[l] = arguments[f + 1], l === this._currentFrame && (this._setFlags(4096), this._parent && this._propagateFlagsUp(8192)));
                }
              }
            };
            Object.defineProperty(e.prototype, "_avm1SymbolClass", {get:function() {
              return this._symbol && this._symbol.avm1SymbolClass || null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "_isFullyLoaded", {get:function() {
              return this.framesLoaded >= this.totalFrames;
            }, enumerable:!0, configurable:!0});
            e.prototype._registerStartSounds = function(a, b) {
              null === this._sounds && (this._sounds = new p(this));
              this._sounds.registerStartSounds(a, b);
            };
            e.prototype._initSoundStream = function(a) {
              null === this._sounds && (this._sounds = new p(this));
              this._sounds.initSoundStream(a);
            };
            e.prototype._addSoundStreamBlock = function(a, b) {
              this._sounds.addSoundStreamBlock(a, b);
            };
            e.prototype._syncSounds = function(a) {
              null !== this._sounds && this._sounds.syncSounds(a);
            };
            e.prototype.addScene = function(a, b, c, d) {
              this._scenes.push(new t.Scene(a, b, c, d));
            };
            e.prototype.addFrameLabel = function(a, b) {
              var c = this._sceneForFrameIndex(b);
              c.getLabelByName(a) || c.labels.push(new f.display.FrameLabel(a, b - c.offset));
            };
            e.prototype.prevScene = function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              0 !== a.offset && this._gotoFrameAbs(this._sceneForFrameIndex(a.offset).offset + 1);
            };
            e.prototype.nextScene = function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              a.offset + a.numFrames !== this._totalFrames && this._gotoFrameAbs(a.offset + a.numFrames + 1);
            };
            e.classInitializer = function() {
              e.reset();
            };
            e.initializer = function(a) {
              t.DisplayObject._advancableInstances.push(this);
              this._currentFrame = 0;
              this._totalFrames = 1;
              this._trackAsMenu = !1;
              this._scenes = [];
              this._enabled = !0;
              this._isPlaying = !1;
              this._frames = [];
              this._frameScripts = [];
              this._nextFrame = 1;
              this._stopped = !1;
              this._allowFrameNavigation = !0;
              this._sounds = null;
              this._buttonFrames = Object.create(null);
              this._currentButtonState = null;
              if (a) {
                if (this._totalFrames = a.numFrames, this._currentFrame = 1, a.isRoot || this.addScene("", a.labels, 0, a.numFrames), this._frames = a.frames, a.isAVM1Object) {
                  this._mouseEnabled = !1;
                  if (a.frameScripts) {
                    var b = g.avm1lib.getAVM1Object(this);
                    b.context = a.avm1Context;
                    for (var c = a.frameScripts, d = 0;d < c.length;d += 2) {
                      b.addFrameScript(c[d], c[d + 1]);
                    }
                  }
                  a.avm1Name && (this.name = a.avm1Name);
                }
              } else {
                this.addScene("", [], 0, this._totalFrames);
              }
            };
            e.classSymbols = null;
            e.instanceSymbols = null;
            return e;
          }(f.display.Sprite);
          t.MovieClip = e;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        (function(g) {
          function k(a, b) {
            var d;
            try {
              d = b.addSourceBuffer("audio/mpeg");
              a.mediaSource = b;
              a.sourceBuffer = d;
              var f = 0;
              a.rawFrames.forEach(function(a) {
                f += a.length;
              });
              if (0 !== f) {
                var e = new Uint8Array(f), g = 0;
                a.rawFrames.forEach(function(a) {
                  e.set(a, g);
                  g += a.length;
                });
                d.appendBuffer(e);
              }
              a.rawFrames = null;
            } catch (l) {
              console.error("MediaSource mp3 playback is not supported: " + l);
            }
          }
          function m(a, b) {
            var d = !1, f;
            a.addEventListener("timeupdate", function(a) {
              d ? performance.now() : (f = performance.now(), d = !0);
            });
            a.addEventListener("pause", function(a) {
              d = !1;
            });
            a.addEventListener("seeking", function(a) {
              d = !1;
            });
          }
          var d = function() {
            function a(a, b) {
              this.movieClip = b;
              this.data = {sampleRate:a.sampleRate, channels:a.channels};
              this.seekIndex = [];
              this.position = 0;
              var d = "mp3" === a.format;
              if (d) {
                var e = document.createElement("audio");
                e.preload = "metadata";
                e.loop = !1;
                m(e, b);
                if (e.canPlayType("audio/mpeg")) {
                  this.element = e;
                  "undefined" !== typeof MediaSource ? (d = new MediaSource, d.addEventListener("sourceopen", k.bind(null, this, d)), e.src = URL.createObjectURL(d)) : console.warn("MediaSource is not supported");
                  this.rawFrames = [];
                  return;
                }
              }
              this.data.pcm = new Float32Array(a.samplesCount * a.channels);
              if (d) {
                var f = this;
                f.decoderPosition = 0;
                f.decoderSession = new MP3DecoderSession;
                f.decoderSession.onframedata = function(a) {
                  var b = f.decoderPosition;
                  f.data.pcm.set(a, b);
                  f.decoderPosition = b + a.length;
                }.bind(this);
                f.decoderSession.onerror = function(a) {
                  console.error("ERROR: MP3DecoderSession: " + a);
                };
              }
            }
            a.prototype.appendBlock = function(a, b) {
              var d = this.position;
              this.seekIndex[a] = d + b.seek * this.data.channels;
              this.position = d + b.samplesCount * this.data.channels;
              if (this.sourceBuffer) {
                this.sourceBuffer.appendBuffer(b.data);
              } else {
                if (this.rawFrames) {
                  this.rawFrames.push(b.data);
                } else {
                  var e = this.decoderSession;
                  e ? e.pushAsync(b.data) : this.data.pcm.set(b.pcm, d);
                }
              }
            };
            a.prototype.playFrame = function(a) {
              if (!isNaN(this.seekIndex[a])) {
                var d = this.element;
                if (d) {
                  var g = this.data, e = this.seekIndex[a] / g.sampleRate / g.channels;
                  if (!this.channel && (this.movieClip._isFullyLoaded || this.sourceBuffer)) {
                    this.sourceBuffer || (d.src = URL.createObjectURL(new Blob(this.rawFrames))), this.channel = a = b.media.SoundChannel.initializeFrom({element:d}), this.waitFor = this.expectedFrame = 0;
                  } else {
                    if (this.sourceBuffer || !isNaN(d.duration)) {
                      this.mediaSource && this.movieClip._isFullyLoaded && (this.mediaSource.endOfStream(), this.mediaSource = null), g = d.currentTime, this.expectedFrame !== a ? d.paused ? (d.play(), d.addEventListener("playing", function l(a) {
                        d.removeEventListener("playing", l);
                        d.currentTime = e;
                      })) : d.currentTime = e : 0 < this.waitFor ? this.waitFor <= e && (d.paused && d.play(), this.waitFor = 0) : 1 < g - e ? (console.warn("Sound is faster than frames by " + (g - e)), this.waitFor = g - .25, d.pause()) : 1 < e - g && (console.warn("Sound is slower than frames by " + (e - g)), d.currentTime = e + .25), this.expectedFrame = a + 1;
                    }
                  }
                } else {
                  this.sound || (g = b.media.Sound.initializeFrom(this.data), a = g.play(), this.sound = g, this.channel = a);
                }
              }
            };
            return a;
          }();
          g.MovieClipSoundStream = d;
        })(b.display || (b.display = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          var s = b.Debug.notImplemented, m = b.Debug.assert, d = b.Debug.somewhatImplemented, a = b.AVM2.Runtime.asCoerceString, c = b.AVM2.Runtime.throwError, n = function(b) {
            function e() {
              t.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._root = this;
              this._stage = this;
              this._frameRate = 24;
              this._scaleMode = t.StageScaleMode.SHOW_ALL;
              this._align = "";
              this._stageHeight = this._stageWidth = 0;
              this._showDefaultContextMenu = !0;
              this._focus = null;
              this._colorCorrection = t.ColorCorrection.DEFAULT;
              this._colorCorrectionSupport = t.ColorCorrectionSupport.DEFAULT_OFF;
              this._stageFocusRect = !0;
              this._quality = t.StageQuality.HIGH;
              this._fullScreenSourceRect = this._displayState = null;
              this._mouseLock = !1;
              this._stageVideos = new g.GenericVector(0, !0, g.ASObject);
              this._stage3Ds = null;
              this._colorARGB = 4294967295;
              this._fullScreenHeight = this._fullScreenWidth = 0;
              this._wmodeGPU = !1;
              this._softKeyboardRect = new f.geom.Rectangle;
              this._allowsFullScreenInteractive = this._allowsFullScreen = !1;
              this._contentsScaleFactor = 1;
              this._displayContextInfo = null;
              this._timeout = -1;
              this._invalidated = !1;
            }
            __extends(e, b);
            Object.defineProperty(e.prototype, "frameRate", {get:function() {
              return this._frameRate;
            }, set:function(a) {
              this._frameRate = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "scaleMode", {get:function() {
              return this._scaleMode;
            }, set:function(b) {
              b = a(b);
              0 > f.display.StageScaleMode.toNumber(b) && c("ArgumentError", k.Errors.InvalidEnumError, "scaleMode");
              this._scaleMode = b;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "align", {get:function() {
              return this._align;
            }, set:function(b) {
              b = a(b);
              b = f.display.StageAlign.toNumber(b);
              m(0 <= b);
              this._align = f.display.StageAlign.fromNumber(b);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "stageWidth", {get:function() {
              return this._stageWidth / 20 | 0;
            }, set:function(a) {
            }, enumerable:!0, configurable:!0});
            e.prototype._setInitialName = function() {
              this._name = null;
            };
            e.prototype.setStageWidth = function(a) {
              m((a | 0) === a);
              this._stageWidth = 20 * a | 0;
            };
            Object.defineProperty(e.prototype, "stageHeight", {get:function() {
              return this._stageHeight / 20 | 0;
            }, set:function(a) {
            }, enumerable:!0, configurable:!0});
            e.prototype.setStageHeight = function(a) {
              m((a | 0) === a);
              this._stageHeight = 20 * a | 0;
            };
            e.prototype.setStageColor = function(a) {
              this._colorARGB = a;
            };
            Object.defineProperty(e.prototype, "showDefaultContextMenu", {get:function() {
              return this._showDefaultContextMenu;
            }, set:function(a) {
              this._showDefaultContextMenu = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "focus", {get:function() {
              return this._focus;
            }, set:function(a) {
              this._focus = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "colorCorrection", {get:function() {
              return this._colorCorrection;
            }, set:function(a) {
              s("public flash.display.Stage::set colorCorrection");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "colorCorrectionSupport", {get:function() {
              return this._colorCorrectionSupport;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "stageFocusRect", {get:function() {
              return this._stageFocusRect;
            }, set:function(a) {
              this._stageFocusRect = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "quality", {get:function() {
              return this._quality.toUpperCase();
            }, set:function(b) {
              b = (a(b) || "").toLowerCase();
              0 > f.display.StageQuality.toNumber(b) && (b = f.display.StageQuality.HIGH);
              this._quality = b;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "displayState", {get:function() {
              return this._displayState;
            }, set:function(b) {
              d("public flash.display.Stage::set displayState");
              this._displayState = a(b);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "fullScreenSourceRect", {get:function() {
              return this._fullScreenSourceRect;
            }, set:function(a) {
              s("public flash.display.Stage::set fullScreenSourceRect");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "mouseLock", {get:function() {
              return this._mouseLock;
            }, set:function(a) {
              d("public flash.display.Stage::set mouseLock");
              this._mouseLock = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "stageVideos", {get:function() {
              d("public flash.display.Stage::get stageVideos");
              return this._stageVideos;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "stage3Ds", {get:function() {
              s("public flash.display.Stage::get stage3Ds");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "color", {get:function() {
              return this._colorARGB;
            }, set:function(a) {
              this._colorARGB = a | 4278190080;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "alpha", {get:function() {
              return this._colorTransform.alphaMultiplier;
            }, set:function(a) {
              c("Error", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "fullScreenWidth", {get:function() {
              return this._fullScreenWidth;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "fullScreenHeight", {get:function() {
              return this._fullScreenHeight;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "wmodeGPU", {get:function() {
              return this._wmodeGPU;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "softKeyboardRect", {get:function() {
              return this._softKeyboardRect;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "allowsFullScreen", {get:function() {
              return this._allowsFullScreen;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "allowsFullScreenInteractive", {get:function() {
              return this._allowsFullScreenInteractive;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "contentsScaleFactor", {get:function() {
              return this._contentsScaleFactor;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "displayContextInfo", {get:function() {
              return this._displayContextInfo;
            }, enumerable:!0, configurable:!0});
            e.prototype.swapChildrenAt = function(a, b) {
              s("public flash.display.Stage::swapChildrenAt");
            };
            e.prototype.invalidate = function() {
              this._invalidated = !0;
            };
            e.prototype.isInvalidated = function() {
              return this._invalidated;
            };
            e.prototype.isFocusInaccessible = function() {
              s("public flash.display.Stage::isFocusInaccessible");
            };
            e.prototype.requireOwnerPermissions = function() {
              d("public flash.display.Stage::requireOwnerPermissions");
            };
            e.prototype.render = function() {
              this._invalidated && (t.DisplayObject._broadcastFrameEvent(f.events.Event.RENDER), this._invalidated = !1);
            };
            e.classInitializer = null;
            e.classSymbols = null;
            e.instanceSymbols = null;
            e.initializer = null;
            return e;
          }(f.display.DisplayObjectContainer);
          t.Stage = n;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.ActionScriptVersion");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.ACTIONSCRIPT2 = 2;
            a.ACTIONSCRIPT3 = 3;
            return a;
          }(g.ASNative);
          f.ActionScriptVersion = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.BlendMode");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                ;
                case 1:
                  return a.NORMAL;
                case 2:
                  return a.LAYER;
                case 3:
                  return a.MULTIPLY;
                case 4:
                  return a.SCREEN;
                case 5:
                  return a.LIGHTEN;
                case 6:
                  return a.DARKEN;
                case 7:
                  return a.DIFFERENCE;
                case 8:
                  return a.ADD;
                case 9:
                  return a.SUBTRACT;
                case 10:
                  return a.INVERT;
                case 11:
                  return a.ALPHA;
                case 12:
                  return a.ERASE;
                case 13:
                  return a.OVERLAY;
                case 14:
                  return a.HARDLIGHT;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.NORMAL:
                  return 1;
                case a.LAYER:
                  return 2;
                case a.MULTIPLY:
                  return 3;
                case a.SCREEN:
                  return 4;
                case a.LIGHTEN:
                  return 5;
                case a.DARKEN:
                  return 6;
                case a.DIFFERENCE:
                  return 7;
                case a.ADD:
                  return 8;
                case a.SUBTRACT:
                  return 9;
                case a.INVERT:
                  return 10;
                case a.ALPHA:
                  return 11;
                case a.ERASE:
                  return 12;
                case a.OVERLAY:
                  return 13;
                case a.HARDLIGHT:
                  return 14;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.NORMAL = "normal";
            a.LAYER = "layer";
            a.MULTIPLY = "multiply";
            a.SCREEN = "screen";
            a.LIGHTEN = "lighten";
            a.DARKEN = "darken";
            a.ADD = "add";
            a.SUBTRACT = "subtract";
            a.DIFFERENCE = "difference";
            a.INVERT = "invert";
            a.OVERLAY = "overlay";
            a.HARDLIGHT = "hardlight";
            a.ALPHA = "alpha";
            a.ERASE = "erase";
            a.SHADER = "shader";
            return a;
          }(g.ASNative);
          f.BlendMode = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.ColorCorrection");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.DEFAULT;
                case 1:
                  return a.ON;
                case 2:
                  return a.OFF;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.DEFAULT:
                  return 0;
                case a.ON:
                  return 1;
                case a.OFF:
                  return 2;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.DEFAULT = "default";
            a.ON = "on";
            a.OFF = "off";
            return a;
          }(g.ASNative);
          f.ColorCorrection = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.ColorCorrectionSupport");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.UNSUPPORTED;
                case 1:
                  return a.DEFAULT_ON;
                case 2:
                  return a.DEFAULT_OFF;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.UNSUPPORTED:
                  return 0;
                case a.DEFAULT_ON:
                  return 1;
                case a.DEFAULT_OFF:
                  return 2;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.UNSUPPORTED = "unsupported";
            a.DEFAULT_ON = "defaultOn";
            a.DEFAULT_OFF = "defaultOff";
            return a;
          }(g.ASNative);
          f.ColorCorrectionSupport = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.FocusDirection");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.TOP = "top";
            a.BOTTOM = "bottom";
            a.NONE = "none";
            return a;
          }(g.ASNative);
          f.FocusDirection = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.AVM2.Runtime.asCoerceString, m = function(b) {
            function a(a, b) {
              this._name = k(a);
              this._frame = b | 0;
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "name", {get:function() {
              return this._name;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "frame", {get:function() {
              return this._frame;
            }, enumerable:!0, configurable:!0});
            a.prototype.clone = function() {
              return new a(this._name, this._frame);
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.FrameLabel = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          var s = b.Debug.notImplemented, m = b.Debug.assert, d = b.Debug.somewhatImplemented, a = b.ArrayUtilities.DataBuffer, c = b.AVM2.Runtime.asCoerceString, n = b.AVM2.Runtime.throwError, p = b.AVM2.Runtime.AVM2, e = b.IntegerUtilities.swap32, q = b.ColorUtilities.premultiplyARGB, l = b.ColorUtilities.unpremultiplyARGB, u = b.ColorUtilities.RGBAToARGB, w = b.ArrayUtilities.indexOf, r = f.geom.Rectangle, h = function(h) {
            function t(b, c, d, h) {
              "undefined" === typeof d && (d = !0);
              "undefined" === typeof h && (h = 4294967295);
              b |= 0;
              c |= 0;
              h |= 0;
              this._id = f.display.DisplayObject.getNextSyncID();
              this._symbol && (b = this._symbol.width, c = this._symbol.height);
              (b > t.MAXIMUM_WIDTH || 0 >= b || c > t.MAXIMUM_HEIGHT || 0 >= c || b * c > t.MAXIMUM_DIMENSION) && n("ArgumentError", k.Errors.InvalidBitmapData);
              this._bitmapReferrers = [];
              this._transparent = !!d;
              this._rect = new r(0, 0, b, c);
              if (this._symbol) {
                this._data = new Uint8Array(this._symbol.data);
                this._type = this._symbol.type;
                if (1 === this._type || 2 === this._type || 3 === this._type) {
                  this._view = new Int32Array(this._data.buffer);
                }
                this._solidFillColorPBGRA = null;
              } else {
                this._data = new Uint8Array(b * c * 4), this._view = new Int32Array(this._data.buffer), this._type = 1, 0 === h >> 24 && d ? this._solidFillColorPBGRA = 0 : this.fillRect(this._rect, h);
              }
              this._dataBuffer = a.FromArrayBuffer(this._data.buffer);
              this._invalidate();
            }
            __extends(t, h);
            t.prototype._addBitmapReferrer = function(a) {
              w(this._bitmapReferrers, a);
              this._bitmapReferrers.push(a);
            };
            t.prototype._removeBitmapReferrer = function(a) {
              a = w(this._bitmapReferrers, a);
              this._bitmapReferrers[a] = null;
            };
            t.prototype._invalidate = function() {
              if (!this._isDirty) {
                this._isDirty = !0;
                this._isRemoteDirty = !1;
                for (var a = 0;a < this._bitmapReferrers.length;a++) {
                  var b = this._bitmapReferrers[a];
                  b && b._setDirtyFlags(16777216);
                }
              }
            };
            t.prototype._getTemporaryRectangleFrom = function(a, b) {
              "undefined" === typeof b && (b = 0);
              m(0 <= b && b < t._temporaryRectangles.length);
              var c = t._temporaryRectangles[b];
              a && c.copyFrom(a);
              return c;
            };
            t.prototype.getDataBuffer = function() {
              return this._dataBuffer;
            };
            t.prototype._getContentBounds = function() {
              return b.Bounds.FromRectangle(this._rect);
            };
            t.prototype._getPixelData = function(a) {
              var b = this._getTemporaryRectangleFrom(this._rect).intersectInPlace(a);
              if (!b.isEmpty()) {
                a = b.x;
                for (var c = b.x + b.width, d = b.y, h = b.y + b.height, e = this._view, f = this._rect.width, b = new Int32Array(b.area), l = 0;d < h;d++) {
                  for (var g = d * f, n = a;n < c;n++) {
                    var m = e[g + n], p = m & 255, m = 255 * (m >>> 8) / p << 8 | p;
                    b[l++] = m;
                  }
                }
                return b;
              }
            };
            t.prototype._putPixelData = function(a, b) {
              var c = this._getTemporaryRectangleFrom(this._rect).intersectInPlace(a);
              if (!c.isEmpty()) {
                for (var d = c.x, h = c.x + c.width, e = c.y + c.height, f = this._view, l = this._rect.width, g = a.width * a.height - c.height + (d - a.x), n = a.width - c.width, m = this._transparent ? 0 : 255, c = c.y;c < e;c++) {
                  for (var p = c * l, k = d;k < h;k++) {
                    var r = b[g++], q = r & m;
                    f[p + k] = (((r >>> 8) * q + 254) / 255 & 16777215) << 8 | q;
                  }
                  g += n;
                }
                this._invalidate();
              }
            };
            Object.defineProperty(t.prototype, "width", {get:function() {
              return this._rect.width;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "height", {get:function() {
              return this._rect.height;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "rect", {get:function() {
              return this._rect.clone();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "transparent", {get:function() {
              return this._transparent;
            }, enumerable:!0, configurable:!0});
            t.prototype.clone = function() {
              d("public flash.display.BitmapData::clone");
              var a = new t(this._rect.width, this._rect.height, this._transparent, this._solidFillColorPBGRA);
              a._view.set(this._view);
              return a;
            };
            t.prototype.getPixel = function(a, b) {
              return this.getPixel32(a | 0, b | 0) & 16777215;
            };
            t.prototype.getPixel32 = function(a, c) {
              a |= 0;
              c |= 0;
              if (!this._rect.contains(a, c)) {
                return 0;
              }
              this._ensureBitmapData();
              var d = this._view[c * this._rect.width + a];
              switch(this._type) {
                case 1:
                  return d = e(d), l(d) >>> 0;
                case 3:
                  return u(e(d));
                default:
                  return b.Debug.notImplemented(b.ImageType[this._type]), 0;
              }
            };
            t.prototype.setPixel = function(a, b, c) {
              a |= 0;
              b |= 0;
              c |= 0;
              this._rect.contains(a, b) && (this._ensureBitmapData(), a = b * this._rect.width + a, c = c & 16777215 | (this._view[a] & 255) << 24, c = q(c), this._view[a] = e(c), this._invalidate(), this._solidFillColorPBGRA = null);
            };
            t.prototype.setPixel32 = function(a, b, c) {
              a |= 0;
              b |= 0;
              if (this._rect.contains(a, b)) {
                this._ensureBitmapData();
                var d = c >>> 24;
                c &= 16777215;
                d = this._transparent ? q(c | d << 24) : c | 4278190080;
                this._view[b * this._rect.width + a] = e(d);
                this._invalidate();
                this._solidFillColorPBGRA = null;
              }
            };
            t.prototype.applyFilter = function(a, b, c, h) {
              d("public flash.display.BitmapData::applyFilter " + h);
            };
            t.prototype.colorTransform = function(a, b) {
              d("public flash.display.BitmapData::colorTransform");
            };
            t.prototype.compare = function(a) {
              s("public flash.display.BitmapData::compare");
            };
            t.prototype.copyChannel = function(a, b, c, d, h) {
              s("public flash.display.BitmapData::copyChannel");
            };
            t.prototype.copyPixels = function(a, b, c, h, e, f) {
              "undefined" === typeof h && (h = null);
              "undefined" === typeof e && (e = null);
              "undefined" === typeof f && (f = !1);
              f = !!f;
              if (h || e) {
                s("public flash.display.BitmapData::copyPixels - Alpha");
              } else {
                var l = this._getTemporaryRectangleFrom(b, 0).roundInPlace();
                b = this._rect;
                e = a._rect;
                var g = Math.max(l.x, 0);
                h = Math.max(l.y, 0);
                var n = Math.min(l.x + l.width, e.width), m = Math.min(l.y + l.height, e.height);
                e = c.x | 0 + (g - l.x);
                l = c.y | 0 + (h - l.y);
                0 > e && (g -= e, e = 0);
                0 > l && (h -= l, l = 0);
                c = Math.min(n - g, b.width - e);
                b = Math.min(m - h, b.height - l);
                if (!(0 >= c || 0 >= b)) {
                  var n = g, m = h, p = e, k = l;
                  h = a._rect.width;
                  e = this._rect.width;
                  this._ensureBitmapData();
                  a._ensureBitmapData();
                  g = a._view;
                  l = this._view;
                  a._type !== this._type && d("public flash.display.BitmapData::copyPixels - Color Format Conversion");
                  if (f && 1 !== this._type) {
                    s("public flash.display.BitmapData::copyPixels - Merge Alpha");
                  } else {
                    if (null === this._solidFillColorPBGRA || this._solidFillColorPBGRA !== a._solidFillColorPBGRA) {
                      null !== a._solidFillColorPBGRA && 255 === (a._solidFillColorPBGRA & 255) && (f = !1);
                      if (f) {
                        this._copyPixelsAndMergeAlpha(g, n, m, h, l, p, k, e, c, b);
                      } else {
                        if (a = m * h + n | 0, f = k * e + p | 0, 0 === (c & 3)) {
                          for (n = 0;n < b;n = n + 1 | 0) {
                            for (m = 0;m < c;m = m + 4 | 0) {
                              l[f + m + 0 | 0] = g[a + m + 0 | 0], l[f + m + 1 | 0] = g[a + m + 1 | 0], l[f + m + 2 | 0] = g[a + m + 2 | 0], l[f + m + 3 | 0] = g[a + m + 3 | 0];
                            }
                            a = a + h | 0;
                            f = f + e | 0;
                          }
                        } else {
                          for (n = 0;n < b;n = n + 1 | 0) {
                            for (m = 0;m < c;m = m + 1 | 0) {
                              l[f + m | 0] = g[a + m | 0];
                            }
                            a = a + h | 0;
                            f = f + e | 0;
                          }
                        }
                      }
                      this._solidFillColorPBGRA = null;
                      this._invalidate();
                    }
                  }
                }
              }
            };
            t.prototype._copyPixelsAndMergeAlpha = function(a, b, c, d, h, e, f, l, g, n) {
              b = c * d + b | 0;
              e = f * l + e | 0;
              for (f = 0;f < n;f = f + 1 | 0) {
                for (c = 0;c < g;c = c + 1 | 0) {
                  var m = a[b + c | 0], p = m & 255;
                  if (255 === p) {
                    h[e + c | 0] = m;
                  } else {
                    if (0 !== p) {
                      var k = m & 16711935, m = m >> 8 & 16711935, r = h[e + c | 0], q = r & 16711935, r = r >> 8 & 16711935, p = 256 - p, q = Math.imul(q, p) >> 8, r = Math.imul(r, p) >> 8;
                      h[e + c | 0] = (m + r & 16711935) << 8 | k + q & 16711935;
                    }
                  }
                }
                b = b + d | 0;
                e = e + l | 0;
              }
            };
            t.prototype.dispose = function() {
              this._rect.setEmpty();
              this._view = null;
              this._invalidate();
            };
            t.prototype.draw = function(a, b, c, h, e, f) {
              "undefined" === typeof b && (b = null);
              "undefined" === typeof c && (c = null);
              "undefined" === typeof h && (h = null);
              "undefined" === typeof e && (e = null);
              "undefined" === typeof f && (f = !1);
              d("public flash.display.BitmapData::draw");
              var l = p.instance.globals["Shumway.Player.Utils"];
              b && (b = b.clone().toTwipsInPlace());
              l.drawToBitmap(this, a, b, c, h, e, f);
              this._isRemoteDirty = !0;
            };
            t.prototype.drawWithQuality = function(a, b, d, h, e, f, l) {
              "undefined" === typeof h && (h = null);
              "undefined" === typeof l && (l = null);
              c(h);
              c(l);
              s("public flash.display.BitmapData::drawWithQuality");
            };
            t.prototype.fillRect = function(a, b) {
              var c = this._transparent ? q(b) : b | 4278190080;
              m(1 === this._type);
              var c = e(c), d = this._getTemporaryRectangleFrom(this._rect).intersectInPlace(a);
              if (!d.isEmpty() && (this._ensureBitmapData(), this._solidFillColorPBGRA !== c)) {
                var h = this._view;
                if (d.equals(this._rect)) {
                  var f = h.length;
                  if (0 === (f & 3)) {
                    for (var l = 0;l < f;l = l + 4 | 0) {
                      h[l + 0 | 0] = c, h[l + 1 | 0] = c, h[l + 2 | 0] = c, h[l + 3 | 0] = c;
                    }
                  } else {
                    for (l = 0;l < f;l = l + 1 | 0) {
                      h[l] = c;
                    }
                  }
                  this._solidFillColorPBGRA = c;
                } else {
                  for (var f = d.x, l = d.x + d.width, g = d.y + d.height, n = this._rect.width, d = d.y;d < g;d = d + 1 | 0) {
                    for (var p = d * n | 0, k = f;k < l;k = k + 1 | 0) {
                      h[p + k | 0] = c;
                    }
                  }
                  this._solidFillColorPBGRA = null;
                }
                this._invalidate();
              }
            };
            t.prototype.floodFill = function(a, b, c) {
              s("public flash.display.BitmapData::floodFill");
            };
            t.prototype.generateFilterRect = function(a, b) {
              s("public flash.display.BitmapData::generateFilterRect");
            };
            t.prototype.getColorBoundsRect = function(a, b, c) {
              s("public flash.display.BitmapData::getColorBoundsRect");
            };
            t.prototype.getPixels = function(a) {
              var b = new f.utils.ByteArray;
              this.copyPixelsToByteArray(a, b);
              return b;
            };
            t.prototype.copyPixelsToByteArray = function(a, b) {
              var c = this._getPixelData(a);
              c && b.writeRawBytes(new Uint8Array(c));
            };
            t.prototype.getVector = function(a) {
              var b = new g.Uint32Vector(c.length), c = this._getPixelData(a);
              if (!c) {
                return b;
              }
              b.length = c.length;
              b._view().set(c);
              return b;
            };
            t.prototype.hitTest = function(a, b, c, d, h) {
              s("public flash.display.BitmapData::hitTest");
            };
            t.prototype.merge = function(a, b, c, h, e, f, l) {
              d("public flash.display.BitmapData::merge");
            };
            t.prototype.noise = function(a, b, c, h, e) {
              d("public flash.display.BitmapData::noise");
            };
            t.prototype.paletteMap = function(a, b, c, h, e, f, l) {
              d("public flash.display.BitmapData::paletteMap");
            };
            t.prototype.perlinNoise = function(a, b, c, h, e, f, l, g, n) {
              d("public flash.display.BitmapData::perlinNoise");
            };
            t.prototype.pixelDissolve = function(a, b, c, d, h, e) {
              s("public flash.display.BitmapData::pixelDissolve");
            };
            t.prototype.scroll = function(a, b) {
              s("public flash.display.BitmapData::scroll");
            };
            t.prototype.setPixels = function(a, b) {
              this._putPixelData(a, new Int32Array(b.readRawBytes()));
            };
            t.prototype.setVector = function(a, b) {
              this._putPixelData(a, b._view());
            };
            t.prototype.threshold = function(a, b, d, h, e, f, l, g) {
              c(h);
              s("public flash.display.BitmapData::threshold");
            };
            t.prototype.lock = function() {
              this._locked = !0;
            };
            t.prototype.unlock = function(a) {
              this._locked = !1;
            };
            t.prototype.histogram = function(a) {
              s("public flash.display.BitmapData::histogram");
            };
            t.prototype.encode = function(a, b, c) {
              s("public flash.display.BitmapData::encode");
            };
            t.prototype._ensureBitmapData = function() {
              var c = this._data;
              if (this._isRemoteDirty) {
                var d = b.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestBitmapData(this);
                this._data = new Uint8Array(d.getBytes());
                this._type = 3;
                this._view = new Int32Array(this._data.buffer);
                this._isDirty = this._isRemoteDirty = !1;
                this._solidFillColorPBGRA = null;
              }
              switch(this._type) {
                case 5:
                ;
                case 4:
                ;
                case 6:
                  b.Debug.somewhatImplemented("Image conversion " + b.ImageType[this._type] + " -> " + b.ImageType[1]);
                  break;
                default:
                  if (1 !== this._type) {
                    var d = new Uint8Array(this._rect.width * this._rect.height * 4), h = new Int32Array(d.buffer);
                    b.ColorUtilities.convertImage(this._type, 1, this._view, h);
                    this._data = d;
                    this._view = h;
                    this._type = 1;
                    this._solidFillColorPBGRA = null;
                  }
                ;
              }
              1 !== this._type && (this._data = new Uint8Array(this._rect.width * this._rect.height * 4), this._view = new Int32Array(this._data.buffer), this._type = 1, this._fillWithDebugData(), this._solidFillColorPBGRA = null);
              c !== this._data && (this._dataBuffer = a.FromArrayBuffer(this._data.buffer));
            };
            t.prototype._fillWithDebugData = function() {
              var a = this._view;
              e(4294928820);
              for (var b = this._rect.width, c = this._rect.height, d = 0, h = 0;h < c;h++) {
                for (var f = 0;f < b;f++) {
                  a[d++] = e(q(-1442840576 | (h & 255) << 16 | (f & 255) << 8 | 255));
                }
              }
            };
            t.classInitializer = function() {
            };
            t.initializer = function(a) {
              this._symbol = a;
            };
            t.classSymbols = null;
            t.instanceSymbols = null;
            t.MAXIMUM_WIDTH = 8191;
            t.MAXIMUM_HEIGHT = 8191;
            t.MAXIMUM_DIMENSION = 16777215;
            t._temporaryRectangles = [new f.geom.Rectangle, new f.geom.Rectangle, new f.geom.Rectangle];
            return t;
          }(g.ASNative);
          t.BitmapData = h;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.BitmapDataChannel");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.RED = 1;
            a.GREEN = 2;
            a.BLUE = 4;
            a.ALPHA = 8;
            return a;
          }(g.ASNative);
          f.BitmapDataChannel = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.BitmapEncodingColorSpace");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.COLORSPACE_AUTO = "auto";
            a.COLORSPACE_4_4_4 = "4:4:4";
            a.COLORSPACE_4_2_2 = "4:2:2";
            a.COLORSPACE_4_2_0 = "4:2:0";
            return a;
          }(g.ASNative);
          f.BitmapEncodingColorSpace = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Shumway$$inline_605 = Shumway || (Shumway = {}), AVM2$$inline_606 = Shumway$$inline_605.AVM2 || (Shumway$$inline_605.AVM2 = {}), AS$$inline_607 = AVM2$$inline_606.AS || (AVM2$$inline_606.AS = {}), flash$$inline_608 = AS$$inline_607.flash || (AS$$inline_607.flash = {}), display$$inline_609 = flash$$inline_608.display || (flash$$inline_608.display = {}), display$$inline_610 = flash$$inline_608.display, flash$$inline_611 = AS$$inline_607.flash, AS$$inline_612 = AVM2$$inline_606.AS, AVM2$$inline_613 = 
Shumway$$inline_605.AVM2;
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a) {
              k("Dummy Constructor: public flash.display.JPEGEncoderOptions");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.JPEGEncoderOptions = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          function s() {
            return q.instance.globals["Shumway.Player.Utils"];
          }
          var m = b.Debug.assert, d = b.Debug.warning, a = b.Debug.assertUnreachable, c = b.Debug.notImplemented, n = b.AVM2.Runtime.throwError, p = b.FileLoadingService, e = b.Telemetry, q = b.AVM2.Runtime.AVM2, l = b.AVM2.ABC.AbcFile, u = f.events, w = f.display.ActionScriptVersion, r = f.system.ApplicationDomain, h = b.Bounds, x;
          (function(a) {
            a[a.Unloaded = 0] = "Unloaded";
            a[a.Opened = 1] = "Opened";
            a[a.Initialized = 2] = "Initialized";
            a[a.Complete = 3] = "Complete";
          })(x || (x = {}));
          var y;
          (function(a) {
            a[a.External = 0] = "External";
            a[a.Bytes = 1] = "Bytes";
          })(y || (y = {}));
          x = function(x) {
            function y() {
              t.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._writer = new b.IndentingWriter;
              this._content = null;
              this._contentLoaderInfo = new f.display.LoaderInfo;
              this._worker = null;
              this._loadStatus = 0;
              this._contentLoaderInfo._loader = this;
              this._initialDataLoaded = new b.PromiseWrapper;
              this._waitForInitialData = !0;
              this._commitDataQueue = this._initialDataLoaded.promise;
              this._codeExecutionPromise = new b.PromiseWrapper;
              this._progressPromise = new b.PromiseWrapper;
              this._startPromise = Promise.all([this._codeExecutionPromise.promise, this._progressPromise.promise]);
            }
            __extends(y, x);
            y.getRootLoader = function() {
              if (y._rootLoader) {
                return y._rootLoader;
              }
              var a = new f.display.Loader;
              f.display.DisplayObject._instanceID--;
              a._contentLoaderInfo._loader = null;
              a._loadStatus = 1;
              return y._rootLoader = a;
            };
            y.reset = function() {
              y._rootLoader = null;
            };
            y.progress = function() {
              y.FlushCommittedFrames();
              for (var b = y._loadQueue, c = 0;c < b.length;c++) {
                var d = b[c], h = d._contentLoaderInfo, e = h._bytesLoaded, f = h._bytesTotal;
                switch(d._loadStatus) {
                  case 0:
                    if (!f) {
                      break;
                    }
                    0 === d._loadingType && h.dispatchEvent(u.Event.getInstance(u.Event.OPEN));
                    h.dispatchEvent(new u.ProgressEvent(u.ProgressEvent.PROGRESS, !1, !1, 0, f));
                    d._loadStatus = 1;
                  case 1:
                    h._bytesLoadedChanged && (h._bytesLoadedChanged = !1, h.dispatchEvent(new u.ProgressEvent(u.ProgressEvent.PROGRESS, !1, !1, e, f)));
                    if (!d._content || !d._content._hasFlags(256)) {
                      break;
                    }
                    d._loadStatus = 2;
                    h.dispatchEvent(u.Event.getInstance(u.Event.INIT));
                    h._actionScriptVersion === w.ACTIONSCRIPT2 && u.EventDispatcher.broadcastEventDispatchQueue.dispatchEvent(u.Event.getBroadcastInstance(u.Event.AVM1_LOAD));
                  case 2:
                    e === f && (d._loadStatus = 3, h.dispatchEvent(u.Event.getInstance(u.Event.COMPLETE)));
                    break;
                  case 3:
                    b.splice(c--, 1);
                    break;
                  default:
                    a("Mustn't encounter unhandled status in Loader queue.");
                }
              }
            };
            y.FlushCommittedFrames = function() {
              for (var a = y._commitFrameQueue, b = 0;b < a.length;b++) {
                a[b].loader._commitFrame(a[b].data);
              }
              a.length = 0;
            };
            y.prototype._initFrame = function(a) {
            };
            y.prototype._constructFrame = function() {
              this._constructChildren();
            };
            y.prototype._describeData = function(a) {
              var c = [], d;
              for (d in a) {
                c.push(d + ":" + b.StringUtilities.toSafeString(a[d]));
              }
              return "{" + c.join(", ") + "}";
            };
            y.prototype._commitData = function(a) {
              !this._waitForInitialData || "progress" !== a.command && "image" !== a.command && "error" !== a.command || (this._waitForInitialData = !1, this._initialDataLoaded.resolve(void 0));
              var b = this._commitDataQueue.then(this._commitQueuedData.bind(this, a));
              g.traceLoaderOption.value && this._writer.writeTimeLn("Making for: " + this._describeData(a));
              this._commitDataQueue = b;
            };
            y.prototype._commitQueuedData = function(a) {
              var c = this._contentLoaderInfo, d = a.command, h = null;
              g.traceLoaderOption.value && this._writer.writeTimeLn("Executing Promise: " + this._describeData(a));
              switch(d) {
                case "init":
                  d = a.result;
                  c.bytesLoaded = d.bytesLoaded;
                  c._bytesTotal = d.bytesTotal;
                  c._swfVersion = d.swfVersion;
                  c._frameRate = d.frameRate;
                  var f = d.bbox;
                  c._width = f.xMax - f.xMin;
                  c._height = f.yMax - f.yMin;
                  f = new b.Timeline.SpriteSymbol(0, !0);
                  f.numFrames = d.frameCount;
                  c.registerSymbol(f);
                  d.fileAttributes && d.fileAttributes.doAbc || (c._actionScriptVersion = w.ACTIONSCRIPT2, h = this._initAvm1(), g.traceLoaderOption.value && this._writer.writeTimeLn("Suspending until AVM1 is initialized."));
                  break;
                case "progress":
                  var d = a.result, f = d.bytesLoaded, n = d.bytesTotal;
                  m(f <= n, "Loaded bytes should not exceed total bytes.");
                  c.bytesLoaded = f;
                  c._bytesTotal ? m(c._bytesTotal === n, "Total bytes should not change.") : c._bytesTotal = n;
                  d.open && 0 === this._loadStatus && (this._loadStatus = 1);
                  0 !== this._loadStatus && (c.dispatchEvent(new u.ProgressEvent(u.ProgressEvent.PROGRESS, !1, !1, f, n)), this._progressPromise.resolve(void 0), g.traceLoaderOption.value && this._writer.writeTimeLn("Resolving progress promise."));
                  break;
                case "complete":
                  a.stats && e.instance.reportTelemetry(a.stats);
                  this._worker && this._worker.terminate();
                  break;
                case "error":
                  this._contentLoaderInfo.dispatchEvent(new u.IOErrorEvent(u.IOErrorEvent.IO_ERROR));
                  break;
                default:
                  if (0 === a.id) {
                    break;
                  }
                  if (a.isSymbol) {
                    this._commitAsset(a);
                  } else {
                    if ("frame" === a.type) {
                      if (this._frameAssetsQueue) {
                        g.traceLoaderOption.value && this._writer.writeTimeLn("Suspending frame execution until all of its assets are resolved.");
                        var k = this, h = Promise.all(this._frameAssetsQueue).then(function() {
                          k._enqueueFrame(a);
                          k._frameAssetsQueue = null;
                        }.bind(this));
                      } else {
                        this._enqueueFrame(a);
                      }
                    } else {
                      "image" === a.type ? this._commitImage(a) : "abc" === a.type && (d = q.instance.applicationDomain, f = new l(a.data, a.name), a.flags ? d.loadAbc(f) : c._allowCodeExecution && d.executeAbc(f));
                    }
                  }
                ;
              }
              return h;
            };
            y.prototype._initAvm1 = function() {
              var a = this._contentLoaderInfo;
              return this._loaderInfo && this._loaderInfo._avm1Context ? (a._avm1Context = this._loaderInfo._avm1Context, null) : q.instance.loadAVM1().then(function() {
                a._avm1Context = b.AVM1.AVM1Context.create(a.swfVersion);
              });
            };
            y.prototype._commitAsset = function(a) {
              var c = this._contentLoaderInfo, d = a.id, e;
              if (a.updates) {
                a = a.updates, e = c.getSymbolById(d), a.scale9Grid && (e.scale9Grid = h.FromUntyped(a.scale9Grid));
              } else {
                switch(a.type) {
                  case "shape":
                    e = b.Timeline.ShapeSymbol.FromData(a, c);
                    break;
                  case "morphshape":
                    e = b.Timeline.MorphShapeSymbol.FromData(a, c);
                    break;
                  case "image":
                    var l = e = b.Timeline.BitmapSymbol.FromData(a);
                    if (5 === l.type || 6 === l.type || 4 === l.type) {
                      this._frameAssetsQueue || (this._frameAssetsQueue = []), this._frameAssetsQueue.push(new Promise(function(a) {
                        s().decodeImage(l, a);
                      }));
                    }
                    break;
                  case "label":
                  ;
                  case "text":
                    e = b.Timeline.TextSymbol.FromTextData(a);
                    break;
                  case "button":
                    e = b.Timeline.ButtonSymbol.FromData(a, c);
                    break;
                  case "sprite":
                    e = b.Timeline.SpriteSymbol.FromData(a, c);
                    break;
                  case "font":
                    e = b.Timeline.FontSymbol.FromData(a);
                    d = f.text.Font.initializeFrom(e);
                    f.text.Font.instanceConstructorNoInitialize.call(d);
                    s().registerFont(d);
                    "undefined" !== typeof navigator && 0 > navigator.userAgent.indexOf("Firefox") && (this._frameAssetsQueue || (this._frameAssetsQueue = []), this._frameAssetsQueue.push(new Promise(function(a) {
                      setTimeout(a, 400);
                    })));
                    break;
                  case "sound":
                    e = b.Timeline.SoundSymbol.FromData(a);
                    break;
                  case "binary":
                    e = b.Timeline.BinarySymbol.FromData(a);
                }
                m(e, "Unknown symbol type.");
                c.registerSymbol(e);
              }
            };
            y.prototype._enqueueFrame = function(a) {
              this === y.getRootLoader() ? (y.runtimeStartTime = Date.now(), this._commitFrame(a), this._codeExecutionPromise.resolve(void 0)) : y._commitFrameQueue.push({loader:this, data:a});
            };
            y.prototype._commitFrame = function(a) {
              var c = this._contentLoaderInfo;
              void 0 !== a.bgcolor && (c._colorRGBA = a.bgcolor);
              if (a.symbolClasses) {
                for (var h = a.symbolClasses, e = q.instance.applicationDomain, l = 0;l < h.length;l++) {
                  var n = h[l];
                  if (c._allowCodeExecution) {
                    var m = c.getSymbolById(n.symbolId);
                    m ? (n = e.getClass(n.className), n.defaultInitializerArgument = m, m.symbolClass = n) : d("Symbol " + n.symbolId + " is not defined.");
                  }
                }
              }
              if (a.exports && c._actionScriptVersion === w.ACTIONSCRIPT2) {
                for (h = a.exports, l = 0;l < h.length;l++) {
                  n = h[l], (m = c.getSymbolById(n.symbolId)) ? c._avm1Context.addAsset(n.className, n.symbolId, m) : d("Symbol " + n.symbolId + " is not defined.");
                }
              }
              for (var h = c.getSymbolById(0), l = h.symbolClass, e = h.frames, m = e.length, n = new b.Timeline.FrameDelta(c, a.commands), k = a.repeat;k--;) {
                e.push(n);
              }
              e = this._content;
              if (!e) {
                e = l.initializeFrom(h);
                f.display.DisplayObject._instanceID--;
                e._name = "root1";
                if (t.MovieClip.isType(e)) {
                  if (n = e, a.sceneData) {
                    for (var k = a.sceneData.scenes, l = 0, p = k.length;l < p;l++) {
                      var r = k[l], s = r.offset;
                      n.addScene(r.name, [], s, (l < p - 1 ? k[l + 1].offset : h.numFrames) - s);
                    }
                    h = a.sceneData.labels;
                    for (l = 0;l < h.length;l++) {
                      k = h[l], n.addFrameLabel(k.name, k.frame + 1);
                    }
                  } else {
                    n.addScene("Scene 1", [], 0, h.numFrames);
                  }
                }
                e._loaderInfo = c;
                c._actionScriptVersion === w.ACTIONSCRIPT2 ? e = this._content = this._initAvm1Root(e) : this._content = e;
                this.addTimelineObjectAtDepth(this._content, 0);
              }
              t.AVM1Movie.isType(e) && (e = e._children[0]);
              t.MovieClip.isType(e) && (l = e, a.labelName && l.addFrameLabel(a.labelName, m + 1), c._actionScriptVersion === w.ACTIONSCRIPT2 && g.avm1lib.getAVM1Object(e).addFrameActionBlocks(m, a), a.soundStream && l._initSoundStream(a.soundStream), a.soundStreamBlock && l._addSoundStreamBlock(m + 1, a.soundStreamBlock));
            };
            y.prototype._initAvm1Root = function(a) {
              if (this._loaderInfo && this._loaderInfo._avm1Context) {
                return a;
              }
              var b = g.avm1lib.getAVM1Object(a), c = this._contentLoaderInfo._avm1Context;
              c.root = b;
              b.context = c;
              a.addEventListener("frameConstructed", c.flushPendingScripts.bind(c), !1, Number.MAX_VALUE);
              c.globals.asSetPublicProperty("_root", b);
              c.globals.asSetPublicProperty("_level0", b);
              c = new f.display.AVM1Movie;
              c.initializeContent(a);
              this._content = c;
              a = this._contentLoaderInfo._parameters;
              for (var d in a) {
                d in b || (b[d] = a[d]);
              }
              return c;
            };
            y.prototype._commitImage = function(a) {
              a = b.Timeline.BitmapSymbol.FromData(a.props);
              var c = f.display.BitmapData.initializeFrom(a);
              f.display.BitmapData.instanceConstructorNoInitialize.call(c);
              this._content = new f.display.Bitmap(c);
              this.addTimelineObjectAtDepth(this._content, 0);
              c = this._contentLoaderInfo;
              c._width = a.width;
              c._height = a.height;
              c.dispatchEvent(u.Event.getInstance(u.Event.INIT));
              c.dispatchEvent(u.Event.getInstance(u.Event.COMPLETE));
              this._loadStatus = 3;
            };
            Object.defineProperty(y.prototype, "content", {get:function() {
              return 0 === this._loadStatus ? null : this._content;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(y.prototype, "contentLoaderInfo", {get:function() {
              return this._contentLoaderInfo;
            }, enumerable:!0, configurable:!0});
            y.prototype._close = function() {
              this._worker && 0 === this._loadStatus && (this._worker.terminate(), this._worker = null);
            };
            y.prototype._unload = function(a, b) {
              2 > this._loadStatus || (this._content = null, this._worker = this._contentLoaderInfo._loader = null, this._loadStatus = 0, this.dispatchEvent(u.Event.getInstance(u.Event.UNLOAD)));
            };
            y.prototype._getJPEGLoaderContextdeblockingfilter = function(a) {
              return f.system.JPEGLoaderContext.isType(a) ? a.deblockingFilter : 0;
            };
            y.prototype._getUncaughtErrorEvents = function() {
              c("public flash.display.Loader::_getUncaughtErrorEvents");
            };
            y.prototype._setUncaughtErrorEvents = function(a) {
              c("public flash.display.Loader::_setUncaughtErrorEvents");
            };
            y.prototype.load = function(a, b) {
              this._contentLoaderInfo._url = a.url;
              this._applyLoaderContext(b, a);
              this._loadingType = 0;
              var c = this._createParsingWorker(), d = this, h = p.instance.createSession();
              h.onprogress = function(a, b) {
                c.postMessage({data:a, progress:b});
              };
              h.onerror = function(a) {
                d._commitData({command:"error", error:a});
              };
              h.onopen = function() {
                c.postMessage("pipe:");
              };
              h.onclose = function() {
                c.postMessage({data:null});
              };
              h.open(a._toFileRequest());
              y._loadQueue.push(this);
            };
            y.prototype.loadBytes = function(a) {
              this._contentLoaderInfo._url = (this.loaderInfo ? this.loaderInfo._url : "") + "/[[DYNAMIC]]/" + ++y._embeddedContentLoadCount;
              this._applyLoaderContext(void 0, null);
              this._loadingType = 1;
              var b = this._createParsingWorker();
              y._loadQueue.push(this);
              b.postMessage("pipe:");
              a = a.bytes;
              b.postMessage({data:a, progress:{bytesLoaded:a.byteLength, bytesTotal:a.byteLength}});
              b.postMessage({data:null});
            };
            y.prototype._applyLoaderContext = function(a, c) {
              var d = {};
              if (a && a.parameters) {
                var h = a.parameters, e;
                for (e in h) {
                  var f = h[e];
                  b.isString(f) || n("IllegalOperationError", k.Errors.ObjectWithStringsParamError, "LoaderContext.parameters");
                  d[e] = f;
                }
              }
              a && a.applicationDomain && (this._contentLoaderInfo._applicationDomain = new r(r.currentDomain));
              this._contentLoaderInfo._parameters = d;
            };
            y.prototype._createParsingWorker = function() {
              var a = this._contentLoaderInfo, c;
              c = !y.WORKERS_AVAILABLE || b.useParsingWorkerOption && !b.useParsingWorkerOption.value ? new b.SWF.ResourceLoader(window, !1) : new Worker("undefined" !== typeof LOADER_WORKER_PATH ? LOADER_WORKER_PATH : SHUMWAY_ROOT + y.LOADER_PATH);
              a._allowCodeExecution || this._codeExecutionPromise.reject("Disabled by _allowCodeExecution");
              this._waitForInitialData || this._initialDataLoaded.resolve(void 0);
              var d = this;
              c.onmessage = function(a) {
                "exception" === a.data.type ? (console.log("error in parser: \n" + a.data.stack), q.instance.exceptions.push({source:"parser", message:a.data.message, stack:a.data.stack})) : d._commitData(a.data);
              };
              return c;
            };
            y._embeddedContentLoadCount = 0;
            y.classInitializer = function() {
              y._rootLoader = null;
              y._loadQueue = [];
            };
            y.initializer = function() {
              t.DisplayObject._advancableInstances.push(this);
            };
            y.classSymbols = null;
            y.instanceSymbols = null;
            y.WORKERS_AVAILABLE = "undefined" !== typeof Worker;
            y.LOADER_PATH = "swf/worker.js";
            y.runtimeStartTime = 0;
            y._commitFrameQueue = [];
            return y;
          }(f.display.DisplayObjectContainer);
          t.Loader = x;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.assert, m = b.Debug.notImplemented, d = b.Debug.somewhatImplemented, a = f.display.ActionScriptVersion, c = function(c) {
            function g() {
              f.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._url = this._loaderURL = "";
              this._isURLInaccessible = !1;
              this._bytesLoaded = 0;
              this._bytesLoadedChanged = !1;
              this._bytesTotal = 0;
              this._applicationDomain = null;
              this._swfVersion = 9;
              this._actionScriptVersion = a.ACTIONSCRIPT3;
              k(this._actionScriptVersion);
              this._frameRate = 24;
              this._parameters = null;
              this._height = this._width = 0;
              this._contentType = "";
              this._childSandboxBridge = this._parentSandboxBridge = this._sharedEvents = null;
              this._parentAllowsChild = this._childAllowsParent = this._sameDomain = !1;
              this._uncaughtErrorEvents = this._bytes = this._content = this._loader = null;
              this._allowCodeExecution = !0;
              this._dictionary = [];
              this._avm1Context = null;
              this._colorRGBA = 4294967295;
            }
            __extends(g, c);
            g.getLoaderInfoByDefinition = function(a) {
              m("public flash.display.LoaderInfo::static getLoaderInfoByDefinition");
            };
            Object.defineProperty(g.prototype, "loaderURL", {get:function() {
              return this._loaderURL;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "url", {get:function() {
              return this._url;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "isURLInaccessible", {get:function() {
              return this._isURLInaccessible;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, set:function(a) {
              a !== this._bytesLoaded && (this._bytesLoaded = a, this._bytesLoadedChanged = !0);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "applicationDomain", {get:function() {
              d("public flash.display.LoaderInfo::get applicationDomain");
              return f.system.ApplicationDomain.currentDomain;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "swfVersion", {get:function() {
              return this._swfVersion;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "actionScriptVersion", {get:function() {
              return this._actionScriptVersion;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "frameRate", {get:function() {
              return this._frameRate;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "width", {get:function() {
              return this._width / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "height", {get:function() {
              return this._height / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "contentType", {get:function() {
              return this._contentType;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "sharedEvents", {get:function() {
              m("public flash.display.LoaderInfo::get sharedEvents");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "parentSandboxBridge", {get:function() {
              m("public flash.display.LoaderInfo::get parentSandboxBridge");
            }, set:function(a) {
              m("public flash.display.LoaderInfo::set parentSandboxBridge");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "childSandboxBridge", {get:function() {
              m("public flash.display.LoaderInfo::get childSandboxBridge");
            }, set:function(a) {
              m("public flash.display.LoaderInfo::set childSandboxBridge");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "sameDomain", {get:function() {
              m("public flash.display.LoaderInfo::get sameDomain");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "childAllowsParent", {get:function() {
              m("public flash.display.LoaderInfo::get childAllowsParent");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "parentAllowsChild", {get:function() {
              m("public flash.display.LoaderInfo::get parentAllowsChild");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "loader", {get:function() {
              return this._loader;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "content", {get:function() {
              return this._loader && this._loader.content;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "bytes", {get:function() {
              m("public flash.display.LoaderInfo::get bytes");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "parameters", {get:function() {
              d("public flash.display.LoaderInfo::get parameters");
              return this._parameters ? b.ObjectUtilities.cloneObject(this._parameters) : {};
            }, enumerable:!0, configurable:!0});
            g.prototype._getUncaughtErrorEvents = function() {
              m("public flash.display.LoaderInfo::_getUncaughtErrorEvents");
            };
            g.prototype._setUncaughtErrorEvents = function(a) {
              m("public flash.display.LoaderInfo::_setUncaughtErrorEvents");
            };
            g.prototype.registerSymbol = function(a) {
              this._dictionary[a.id] = a;
            };
            g.prototype.getSymbolById = function(a) {
              return this._dictionary[a] || null;
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            return g;
          }(f.events.EventDispatcher);
          g.LoaderInfo = c;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        (function(g) {
          var k = function(m) {
            function d() {
              g.DisplayObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(d, m);
            d.prototype._canHaveGraphics = function() {
              return!0;
            };
            d.prototype._getGraphics = function() {
              return this._graphics;
            };
            Object.defineProperty(d.prototype, "graphics", {get:function() {
              return this._ensureGraphics();
            }, enumerable:!0, configurable:!0});
            d.classInitializer = null;
            d.initializer = function(a) {
              a ? (this._graphics = a.graphics, this.morphFillBounds = a.morphFillBounds, this.morphLineBounds = a.morphLineBounds) : (this._graphics = new b.display.Graphics, this.morphLineBounds = this.morphFillBounds = null);
            };
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(b.display.DisplayObject);
          g.MorphShape = k;
        })(b.display || (b.display = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.NativeMenu");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.NativeMenu = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.somewhatImplemented, m = function(b) {
            function a() {
              f.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._enabled = !0;
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "enabled", {get:function() {
              k("public flash.display.NativeMenuItem::get enabled");
              return this._enabled;
            }, set:function(a) {
              a = !!a;
              k("public flash.display.NativeMenuItem::set enabled");
              this._enabled = a;
            }, enumerable:!0, configurable:!0});
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.NativeMenuItem = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a) {
              k("Dummy Constructor: public flash.display.PNGEncoderOptions");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.PNGEncoderOptions = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.PixelSnapping");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.NEVER;
                case 1:
                  return a.ALWAYS;
                case 2:
                  return a.AUTO;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.NEVER:
                  return 0;
                case a.ALWAYS:
                  return 1;
                case a.AUTO:
                  return 2;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.NEVER = "never";
            a.ALWAYS = "always";
            a.AUTO = "auto";
            return a;
          }(g.ASNative);
          f.PixelSnapping = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.SWFVersion");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.FLASH1 = 1;
            a.FLASH2 = 2;
            a.FLASH3 = 3;
            a.FLASH4 = 4;
            a.FLASH5 = 5;
            a.FLASH6 = 6;
            a.FLASH7 = 7;
            a.FLASH8 = 8;
            a.FLASH9 = 9;
            a.FLASH10 = 10;
            a.FLASH11 = 11;
            a.FLASH12 = 12;
            return a;
          }(g.ASNative);
          f.SWFVersion = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.AVM2.Runtime.asCoerceString, m = function(b) {
            function a(a, b, d, e) {
              this._name = k(a);
              this._labels = b;
              this.offset = d;
              this._numFrames = e | 0;
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "name", {get:function() {
              return this._name;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "labels", {get:function() {
              return this._labels;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "numFrames", {get:function() {
              return this._numFrames;
            }, enumerable:!0, configurable:!0});
            a.prototype.clone = function() {
              var b = this._labels.map(function(a) {
                return a.clone();
              });
              return new a(this._name, b, this.offset, this._numFrames);
            };
            a.prototype.getLabelByName = function(a) {
              for (var b = this._labels, d = 0;d < b.length;d++) {
                var e = b[d];
                if (e.name === a) {
                  return e;
                }
              }
              return null;
            };
            a.prototype.getLabelByFrame = function(a) {
              for (var b = this._labels, d = 0;d < b.length;d++) {
                var e = b[d];
                if (e.frame === a) {
                  return e;
                }
              }
              return null;
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.Scene = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m;
          (function(b) {
            b[b.None = 0] = "None";
            b[b.Top = 1] = "Top";
            b[b.Bottom = 2] = "Bottom";
            b[b.Left = 4] = "Left";
            b[b.Right = 8] = "Right";
          })(m || (m = {}));
          m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.StageAlign");
            }
            __extends(a, b);
            a.fromNumber = function(a) {
              if (0 === a) {
                return "";
              }
              var b = "";
              a & 1 && (b += "T");
              a & 2 && (b += "B");
              a & 4 && (b += "L");
              a & 8 && (b += "R");
              return b;
            };
            a.toNumber = function(a) {
              var b = 0;
              a = a.toUpperCase();
              0 <= a.indexOf("T") && (b |= 1);
              0 <= a.indexOf("B") && (b |= 2);
              0 <= a.indexOf("L") && (b |= 4);
              0 <= a.indexOf("R") && (b |= 8);
              return b;
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.TOP = "T";
            a.LEFT = "L";
            a.BOTTOM = "B";
            a.RIGHT = "R";
            a.TOP_LEFT = "TL";
            a.TOP_RIGHT = "TR";
            a.BOTTOM_LEFT = "BL";
            a.BOTTOM_RIGHT = "BR";
            return a;
          }(g.ASNative);
          f.StageAlign = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.StageDisplayState");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.FULL_SCREEN;
                case 1:
                  return a.FULL_SCREEN_INTERACTIVE;
                case 2:
                  return a.NORMAL;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.FULL_SCREEN:
                  return 0;
                case a.FULL_SCREEN_INTERACTIVE:
                  return 1;
                case a.NORMAL:
                  return 2;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.FULL_SCREEN = "fullScreen";
            a.FULL_SCREEN_INTERACTIVE = "fullScreenInteractive";
            a.NORMAL = "normal";
            return a;
          }(g.ASNative);
          f.StageDisplayState = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.StageQuality");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.LOW;
                case 1:
                  return a.MEDIUM;
                case 2:
                  return a.HIGH;
                case 3:
                  return a.BEST;
                case 4:
                  return a.HIGH_8X8;
                case 5:
                  return a.HIGH_8X8_LINEAR;
                case 6:
                  return a.HIGH_16X16;
                case 7:
                  return a.HIGH_16X16_LINEAR;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.LOW:
                  return 0;
                case a.MEDIUM:
                  return 1;
                case a.HIGH:
                  return 2;
                case a.BEST:
                  return 3;
                case a.HIGH_8X8:
                  return 4;
                case a.HIGH_8X8_LINEAR:
                  return 5;
                case a.HIGH_16X16:
                  return 6;
                case a.HIGH_16X16_LINEAR:
                  return 7;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.LOW = "low";
            a.MEDIUM = "medium";
            a.HIGH = "high";
            a.BEST = "best";
            a.HIGH_8X8 = "8x8";
            a.HIGH_8X8_LINEAR = "8x8linear";
            a.HIGH_16X16 = "16x16";
            a.HIGH_16X16_LINEAR = "16x16linear";
            return a;
          }(g.ASNative);
          f.StageQuality = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.StageScaleMode");
            }
            __extends(a, b);
            a.fromNumber = function(b) {
              switch(b) {
                case 0:
                  return a.SHOW_ALL;
                case 1:
                  return a.EXACT_FIT;
                case 2:
                  return a.NO_BORDER;
                case 4:
                  return a.NO_SCALE;
                default:
                  return null;
              }
            };
            a.toNumber = function(b) {
              switch(b) {
                case a.SHOW_ALL:
                  return 0;
                case a.EXACT_FIT:
                  return 1;
                case a.NO_BORDER:
                  return 2;
                case a.NO_SCALE:
                  return 3;
                default:
                  return-1;
              }
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.SHOW_ALL = "showAll";
            a.EXACT_FIT = "exactFit";
            a.NO_BORDER = "noBorder";
            a.NO_SCALE = "noScale";
            return a;
          }(g.ASNative);
          f.StageScaleMode = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.display.TriangleCulling");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.NONE = "none";
            a.POSITIVE = "positive";
            a.NEGATIVE = "negative";
            return a;
          }(g.ASNative);
          f.TriangleCulling = m;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.Debug.assert, d = function(a) {
            function b() {
              f.display.DisplayObject.instanceConstructorNoInitialize.call(this);
              this._children = [];
              this._constructed = !1;
            }
            __extends(b, a);
            b.prototype.initializeContent = function(a) {
              m(0 === this._children.length);
              m(!this._parent, "Must have content initialized before being added to stage");
              this._children[0] = this._content = a;
              a._setParent(this, 0);
              this._setDirtyFlags(2097152);
              this._invalidateFillAndLineBounds(!0, !0);
              g.DisplayObject._advancableInstances.push(this);
            };
            b.prototype.call = function(a) {
              k("AVM1Movie#call");
            };
            b.prototype.addCallback = function(a, b) {
              k("AVM1Movie#call");
            };
            b.prototype._initFrame = function(a) {
            };
            b.prototype._constructFrame = function() {
              this._constructed || (this._constructed = !0, g.DisplayObjectContainer.prototype._constructChildren.call(this));
              this._content._constructFrame();
            };
            b.prototype._enqueueFrameScripts = function() {
              this._removeFlags(8192);
              this._content._enqueueFrameScripts();
            };
            b.prototype._propagateFlagsDown = function(a) {
              this._hasFlags(a) || (this._setFlags(a), this._content._propagateFlagsDown(a));
            };
            b.prototype._containsPoint = function(a, b, c, d, f, g) {
              return 3 === f ? this._content._containsPoint(a, b, c, d, f, g) : 0 === f && this._getContentBounds().contains(c, d) ? 1 : 0;
            };
            b.prototype._getChildBounds = function(a, b) {
              var c = this._content._getContentBounds(b).clone();
              this._getConcatenatedMatrix().transformBounds(c);
              a.unionInPlace(c);
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.display.DisplayObject);
          g.AVM1Movie = d;
        })(f.display || (f.display = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.ObjectUtilities.createEmptyObject, a = b.Telemetry, c = b.AVM2.Runtime.forEachPublicProperty, n = b.ExternalInterfaceService, p = function(b) {
            function f() {
              k("Dummy Constructor: public flash.external.ExternalInterface");
            }
            __extends(f, b);
            f._getAvailable = function() {
              return n.instance.enabled;
            };
            f._initJS = function() {
              f.initialized || (a.instance.reportTelemetry({topic:"feature", feature:1}), f.initialized = !0, n.instance.initJS(f._callIn));
            };
            f._callIn = function(a, b) {
              var c = f.registeredCallbacks[a];
              if (c) {
                return c(a, b);
              }
            };
            f._getPropNames = function(a) {
              var b = [];
              c(a, function(a) {
                b.push(a);
              }, null);
              return b;
            };
            f._addCallback = function(a, b, c) {
              c ? (n.instance.unregisterCallback(a), delete f.registeredCallbacks[a]) : (n.instance.registerCallback(a), f.registeredCallbacks[a] = b);
            };
            f._evalJS = function(a) {
              a = m(a);
              return n.instance.eval(a);
            };
            f._callOut = function(a) {
              a = m(a);
              return n.instance.call(a);
            };
            Object.defineProperty(f, "available", {get:function() {
              return f._getAvailable();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f, "objectID", {get:function() {
              return n.instance.getId();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f, "activeX", {get:function() {
              return!1;
            }, enumerable:!0, configurable:!0});
            f.classInitializer = null;
            f.initializer = null;
            f.classSymbols = null;
            f.instanceSymbols = null;
            f.initialized = !1;
            f.registeredCallbacks = d();
            return f;
          }(g.ASNative);
          f.ExternalInterface = p;
        })(f.external || (f.external = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.LOW = 1;
            d.MEDIUM = 2;
            d.HIGH = 3;
            return d;
          }(b.ASNative);
          f.BitmapFilterQuality = k;
        })(f.filters || (f.filters = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.INNER = "inner";
            d.OUTER = "outer";
            d.FULL = "full";
            return d;
          }(b.ASNative);
          f.BitmapFilterType = k;
        })(f.filters || (f.filters = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
            }
            __extends(d, b);
            d._updateBlurBounds = function(a, b, f, g, e) {
              "undefined" === typeof e && (e = !1);
              g = d.blurFilterStepWidths[g - 1];
              e && (e = g / 4, b -= e, f -= e);
              a.inflate(Math.ceil((1 > b ? 1 : b) * g), Math.ceil((1 > f ? 1 : f) * g));
            };
            d.prototype._updateFilterBounds = function(a) {
            };
            d.prototype._serialize = function(a) {
              a.writeInt(-1);
            };
            d.prototype.clone = function() {
              return null;
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.EPS = 1E-9;
            d.blurFilterStepWidths = [.5, 1.05, 1.35, 1.55, 1.75, 1.9, 2, 2.1, 2.2, 2.3, 2.5, 3, 3, 3.5, 3.5];
            return d;
          }(g.ASNative);
          f.BitmapFilter = k;
          k = function() {
            function f() {
            }
            f.sanitize = function(d, a, c) {
              if (b.isNullOrUndefined(d) || 0 === d.length) {
                this.colors = [], this.alphas = [], this.ratios = [];
              } else {
                var f;
                b.isNullOrUndefined(c) ? (this.colors = this.sanitizeColors(d), f = this.colors.length, this.ratios = this.initArray(f), b.isNullOrUndefined(a) ? this.alphas = this.initArray(f) : this.alphas = this.sanitizeAlphas(a, f, f, 1)) : 0 === c.length ? (this.colors = [], this.alphas = [], this.ratios = []) : (f = Math.min(d.length, c.length, 16), this.colors = this.sanitizeColors(d, f), this.ratios = this.sanitizeRatios(c, f), b.isNullOrUndefined(a) ? this.alphas = this.initArray(f) : this.alphas = 
                this.sanitizeAlphas(a, f, f, 1));
              }
            };
            f.sanitizeColors = function(b, a) {
              "undefined" === typeof a && (a = 16);
              for (var c = [], f = 0, g = Math.min(b.length, a);f < g;f++) {
                c[f] = b[f] >>> 0 & 16777215;
              }
              return c;
            };
            f.sanitizeAlphas = function(d, a, c, f) {
              "undefined" === typeof a && (a = 16);
              "undefined" === typeof c && (c = 0);
              "undefined" === typeof f && (f = 0);
              var g = [], e = 0;
              for (a = Math.min(d.length, a);e < a;e++) {
                g[e] = b.NumberUtilities.clamp(+d[e], 0, 1);
              }
              for (;e < c;) {
                g[e++] = f;
              }
              return g;
            };
            f.sanitizeRatios = function(d, a, c) {
              var f;
              "undefined" === typeof a && (a = 16);
              "undefined" === typeof c && (c = 0);
              "undefined" === typeof f && (f = 0);
              var g = [], e = 0;
              for (a = Math.min(d.length, a);e < a;e++) {
                g[e] = b.NumberUtilities.clamp(+d[e], 0, 255);
              }
              for (;e < c;) {
                g[e++] = f;
              }
              return g;
            };
            f.initArray = function(b) {
              var a;
              "undefined" === typeof a && (a = 0);
              for (var c = Array(b), f = 0;f < b;f++) {
                c[f] = a;
              }
              return c;
            };
            return f;
          }();
          f.GradientArrays = k;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.AVM2.Runtime.asCoerceString, m = b.Debug.assert, d = function(a) {
            function c(a, b, c, d, f, g, m, k, h, s, t, G) {
              "undefined" === typeof a && (a = 4);
              "undefined" === typeof b && (b = 45);
              "undefined" === typeof c && (c = 16777215);
              "undefined" === typeof d && (d = 1);
              "undefined" === typeof f && (f = 0);
              "undefined" === typeof g && (g = 1);
              "undefined" === typeof m && (m = 4);
              "undefined" === typeof k && (k = 4);
              "undefined" === typeof h && (h = 1);
              "undefined" === typeof s && (s = 1);
              "undefined" === typeof t && (t = "inner");
              "undefined" === typeof G && (G = !1);
              this.distance = a;
              this.angle = b;
              this.highlightColor = c;
              this.highlightAlpha = d;
              this.shadowColor = f;
              this.shadowAlpha = g;
              this.blurX = m;
              this.blurY = k;
              this.strength = h;
              this.quality = s;
              this.type = t;
              this.knockout = G;
            }
            __extends(c, a);
            c.FromUntyped = function(a) {
              var b = a.highlightColor >>> 8, d = (a.highlightColor & 255) / 255;
              m(a.colors && 1 === a.colors.length, "colors must be Array of length 1");
              var g = a.colors[0] >>> 8, l = (a.colors[0] & 255) / 255, k = f.filters.BitmapFilterType.OUTER;
              a.onTop ? k = f.filters.BitmapFilterType.FULL : a.inner && (k = f.filters.BitmapFilterType.INNER);
              return new c(a.distance, 180 * a.angle / Math.PI, b, d, g, l, a.blurX, a.blurY, a.strength, a.quality, k, a.knockout);
            };
            c.prototype._updateFilterBounds = function(a) {
              if (this.type !== g.BitmapFilterType.INNER && (g.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var b = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(b) * this._distance);
                a.y += Math.floor(Math.sin(b) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            Object.defineProperty(c.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "highlightColor", {get:function() {
              return this._highlightColor;
            }, set:function(a) {
              this._highlightColor = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "highlightAlpha", {get:function() {
              return this._highlightAlpha;
            }, set:function(a) {
              this._highlightAlpha = b.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "shadowColor", {get:function() {
              return this._shadowColor;
            }, set:function(a) {
              this._shadowColor = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "shadowAlpha", {get:function() {
              return this._shadowAlpha;
            }, set:function(a) {
              this._shadowAlpha = b.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = b.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              a = s(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === g.BitmapFilterType.INNER || a === g.BitmapFilterType.OUTER ? a : g.BitmapFilterType.FULL;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new c(this._distance, this._angle, this._highlightColor, this._highlightAlpha, this._shadowColor, this._shadowAlpha, this._blurX, this._blurY, this._strength, this._quality, this._type, this._knockout);
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(f.filters.BitmapFilter);
          g.BevelFilter = d;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = function(f) {
            function d(a, b, d) {
              "undefined" === typeof a && (a = 4);
              "undefined" === typeof b && (b = 4);
              "undefined" === typeof d && (d = 1);
              this.blurX = a;
              this.blurY = b;
              this.quality = d;
            }
            __extends(d, f);
            d.FromUntyped = function(a) {
              return new d(a.blurX, a.blurY, a.quality);
            };
            d.prototype._updateFilterBounds = function(a) {
              g.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality, !0);
            };
            d.prototype._serialize = function(a) {
              a.ensureAdditionalCapacity(16);
              a.writeIntUnsafe(1);
              a.writeFloatUnsafe(this._blurX);
              a.writeFloatUnsafe(this._blurY);
              a.writeIntUnsafe(this._quality);
            };
            Object.defineProperty(d.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = b.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new d(this._blurX, this._blurY, this._quality);
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(f.filters.BitmapFilter);
          g.BlurFilter = k;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = function(f) {
            function d(a) {
              "undefined" === typeof a && (a = null);
              a ? this.matrix = a : this._matrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
            }
            __extends(d, f);
            d.FromUntyped = function(a) {
              return new d(a.matrix);
            };
            d.prototype._serialize = function(a) {
              var b = this._matrix;
              a.ensureAdditionalCapacity(4 * (b.length + 1));
              a.writeIntUnsafe(6);
              for (var d = 0;d < b.length;d++) {
                a.writeFloatUnsafe(b[d]);
              }
            };
            Object.defineProperty(d.prototype, "matrix", {get:function() {
              return this._matrix.concat();
            }, set:function(a) {
              if (b.isNullOrUndefined(a)) {
                k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "matrix");
              } else {
                for (var c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], d = 0, f = Math.min(a.length, 20);d < f;d++) {
                  c[d] = b.toNumber(a[d]);
                }
                this._matrix = c;
              }
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new d(this.matrix);
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(f.filters.BitmapFilter);
          g.ColorMatrixFilter = s;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = function(f) {
            function d(a, b, d, f, e, g, l, m, k) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof b && (b = 0);
              "undefined" === typeof d && (d = null);
              "undefined" === typeof f && (f = 1);
              "undefined" === typeof e && (e = 0);
              "undefined" === typeof g && (g = !0);
              "undefined" === typeof l && (l = !0);
              "undefined" === typeof m && (m = 0);
              "undefined" === typeof k && (k = 0);
              this.matrixX = a;
              this.matrixY = b;
              d ? this.matrix = d : this._matrix = this._expandArray([], this._matrixX * this._matrixY);
              this.divisor = f;
              this.bias = e;
              this.preserveAlpha = g;
              this.clamp = l;
              this.color = m;
              this.alpha = k;
            }
            __extends(d, f);
            d.FromUntyped = function(a) {
              return new d(a.matrixX, a.matrixY, a.matrix, a.divisor, a.bias, a.preserveAlpha, a.clamp, a.color >>> 8, (a.color & 255) / 255);
            };
            d.prototype._expandArray = function(a, b) {
              if (a) {
                for (var d = a.length;d < b;) {
                  a[d++] = 0;
                }
              }
              return a;
            };
            Object.defineProperty(d.prototype, "matrix", {get:function() {
              return this._matrix.slice(0, this._matrixX * this._matrixY);
            }, set:function(a) {
              if (b.isNullOrUndefined(a)) {
                k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "matrix");
              } else {
                for (var c = this._matrixX * this._matrixY, d = Math.min(a.length, c), f = Array(d), e = 0;e < d;e++) {
                  f[e] = b.toNumber(a[e]);
                }
                this._expandArray(f, c);
                this._matrix = f;
              }
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "matrixX", {get:function() {
              return this._matrixX;
            }, set:function(a) {
              a = b.NumberUtilities.clamp(+a, 0, 15) | 0;
              this._matrixX !== a && (this._matrixX = a, this._expandArray(this._matrix, a * this._matrixY));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "matrixY", {get:function() {
              return this._matrixY;
            }, set:function(a) {
              a = b.NumberUtilities.clamp(+a, 0, 15) | 0;
              this._matrixY !== a && (this._matrixY = a, this._expandArray(this._matrix, a * this._matrixX));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "divisor", {get:function() {
              return this._divisor;
            }, set:function(a) {
              this._divisor = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "bias", {get:function() {
              return this._bias;
            }, set:function(a) {
              this._bias = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "preserveAlpha", {get:function() {
              return this._preserveAlpha;
            }, set:function(a) {
              this._preserveAlpha = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "clamp", {get:function() {
              return this._clamp;
            }, set:function(a) {
              this._clamp = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              this._alpha = b.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new d(this._matrixX, this._matrixY, this.matrix, this._divisor, this._bias, this._preserveAlpha, this._clamp, this._color, this._alpha);
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(f.filters.BitmapFilter);
          g.ConvolutionFilter = s;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.filters.DisplacementMapFilterMode");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.WRAP = "wrap";
            a.CLAMP = "clamp";
            a.IGNORE = "ignore";
            a.COLOR = "color";
            return a;
          }(g.ASNative);
          f.DisplacementMapFilterMode = m;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.somewhatImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b(a, c, d, f, l, g, m, k, h) {
              "undefined" === typeof a && (a = null);
              "undefined" === typeof c && (c = null);
              "undefined" === typeof d && (d = 0);
              "undefined" === typeof f && (f = 0);
              "undefined" === typeof l && (l = 0);
              "undefined" === typeof g && (g = 0);
              "undefined" === typeof m && (m = "wrap");
              "undefined" === typeof k && (k = 0);
              "undefined" === typeof h && (h = 0);
              this.mapBitmap = a;
              this.mapPoint = c;
              this.componentX = d;
              this.componentY = f;
              this.scaleX = l;
              this.scaleY = g;
              this.mode = m;
              this.color = k;
              this.alpha = h;
            }
            __extends(b, a);
            b.FromUntyped = function(a) {
              return new b(a.mapBitmap, a.mapPoint, a.componentX, a.componentY, a.scaleX, a.scaleY, a.mode, a.color, a.alpha);
            };
            Object.defineProperty(b.prototype, "mapBitmap", {get:function() {
              k("public flash.filters.DisplacementMapFilter::get mapBitmap");
              return this._mapBitmap;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set mapBitmap");
              this._mapBitmap = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "mapPoint", {get:function() {
              k("public flash.filters.DisplacementMapFilter::get mapPoint");
              return this._mapPoint;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set mapPoint");
              this._mapPoint = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "componentX", {get:function() {
              return this._componentX;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set componentX");
              this._componentX = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "componentY", {get:function() {
              return this._componentY;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set componentY");
              this._componentY = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "scaleX", {get:function() {
              return this._scaleX;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set scaleX");
              this._scaleX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "scaleY", {get:function() {
              return this._scaleY;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set scaleY");
              this._scaleY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "mode", {get:function() {
              return this._mode;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set mode");
              this._mode = m(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set color");
              this._color = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              k("public flash.filters.DisplacementMapFilter::set alpha");
              this._alpha = +a;
            }, enumerable:!0, configurable:!0});
            b.prototype.clone = function() {
              return new b(this._mapBitmap, this._mapPoint, this._componentX, this._componentY, this._scaleX, this._scaleY, this._mode, this._color, this._alpha);
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.filters.BitmapFilter);
          g.DisplacementMapFilter = d;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.assert, m = function(d) {
            function a(a, b, d, e, f, l, g, m, k, h, s) {
              "undefined" === typeof a && (a = 4);
              "undefined" === typeof b && (b = 45);
              "undefined" === typeof d && (d = 0);
              "undefined" === typeof e && (e = 1);
              "undefined" === typeof f && (f = 4);
              "undefined" === typeof l && (l = 4);
              "undefined" === typeof g && (g = 1);
              "undefined" === typeof m && (m = 1);
              "undefined" === typeof k && (k = !1);
              "undefined" === typeof h && (h = !1);
              "undefined" === typeof s && (s = !1);
              this.distance = a;
              this.angle = b;
              this.color = d;
              this.alpha = e;
              this.blurX = f;
              this.blurY = l;
              this.strength = g;
              this.quality = m;
              this.inner = k;
              this.knockout = h;
              this.hideObject = s;
            }
            __extends(a, d);
            a.FromUntyped = function(b) {
              k(b.colors && 1 === b.colors.length, "colors must be Array of length 1");
              return new a(b.distance, 180 * b.angle / Math.PI, b.colors[0] >>> 8, (b.colors[0] & 255) / 255, b.blurX, b.blurY, b.strength, b.quality, b.inner, b.knockout, !b.compositeSource);
            };
            a.prototype._updateFilterBounds = function(a) {
              if (!this.inner && (g.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var b = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(b) * this._distance);
                a.y += Math.floor(Math.sin(b) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            a.prototype._serialize = function(a) {
              a.ensureAdditionalCapacity(48);
              a.writeIntUnsafe(0);
              a.writeFloatUnsafe(this._alpha);
              a.writeFloatUnsafe(this._angle);
              a.writeFloatUnsafe(this._blurX);
              a.writeFloatUnsafe(this._blurY);
              a.writeIntUnsafe(this._color);
              a.writeFloatUnsafe(this._distance);
              a.writeIntUnsafe(this._hideObject);
              a.writeIntUnsafe(this._inner);
              a.writeIntUnsafe(this._knockout);
              a.writeIntUnsafe(this._quality);
              a.writeFloatUnsafe(this._strength);
            };
            Object.defineProperty(a.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              this._alpha = b.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "hideObject", {get:function() {
              return this._hideObject;
            }, set:function(a) {
              this._hideObject = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "inner", {get:function() {
              return this._inner;
            }, set:function(a) {
              this._inner = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = b.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            a.prototype.clone = function() {
              return new a(this._distance, this._angle, this._color, this._alpha, this._blurX, this._blurY, this._strength, this._quality, this._inner, this._knockout, this._hideObject);
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.filters.BitmapFilter);
          g.DropShadowFilter = m;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.assert, m = function(d) {
            function a(a, b, d, e, f, l, g, m) {
              "undefined" === typeof a && (a = 16711680);
              "undefined" === typeof b && (b = 1);
              "undefined" === typeof d && (d = 6);
              "undefined" === typeof e && (e = 6);
              "undefined" === typeof f && (f = 2);
              "undefined" === typeof l && (l = 1);
              "undefined" === typeof g && (g = !1);
              "undefined" === typeof m && (m = !1);
              this.color = a;
              this.alpha = b;
              this.blurX = d;
              this.blurY = e;
              this.strength = f;
              this.quality = l;
              this.inner = g;
              this.knockout = m;
            }
            __extends(a, d);
            a.FromUntyped = function(b) {
              k(b.colors && 1 === b.colors.length, "colors must be Array of length 1");
              return new a(b.colors[0] >>> 8, (b.colors[0] & 255) / 255, b.blurX, b.blurY, b.strength, b.quality, b.inner, b.knockout);
            };
            a.prototype._updateFilterBounds = function(a) {
              g.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality);
            };
            a.prototype._serialize = function(a) {
              a.ensureAdditionalCapacity(36);
              a.writeIntUnsafe(2);
              a.writeFloatUnsafe(this._alpha);
              a.writeFloatUnsafe(this._blurX);
              a.writeFloatUnsafe(this._blurY);
              a.writeIntUnsafe(this._color);
              a.writeIntUnsafe(this._inner);
              a.writeIntUnsafe(this._knockout);
              a.writeIntUnsafe(this._quality);
              a.writeFloatUnsafe(this._strength);
            };
            Object.defineProperty(a.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              this._alpha = b.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "inner", {get:function() {
              return this._inner;
            }, set:function(a) {
              this._inner = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = b.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            a.prototype.clone = function() {
              return new a(this._color, this._alpha, this._blurX, this._blurY, this._strength, this._quality, this._inner, this._knockout);
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.filters.BitmapFilter);
          g.GlowFilter = m;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.AVM2.Runtime.asCoerceString, m = function(d) {
            function a(a, b, d, e, f, l, m, k, r, h, s) {
              "undefined" === typeof a && (a = 4);
              "undefined" === typeof b && (b = 45);
              "undefined" === typeof d && (d = null);
              "undefined" === typeof e && (e = null);
              "undefined" === typeof f && (f = null);
              "undefined" === typeof l && (l = 4);
              "undefined" === typeof m && (m = 4);
              "undefined" === typeof k && (k = 1);
              "undefined" === typeof r && (r = 1);
              "undefined" === typeof h && (h = "inner");
              "undefined" === typeof s && (s = !1);
              this.distance = a;
              this.angle = b;
              g.GradientArrays.sanitize(d, e, f);
              this._colors = g.GradientArrays.colors;
              this._alphas = g.GradientArrays.alphas;
              this._ratios = g.GradientArrays.ratios;
              this.blurX = l;
              this.blurY = m;
              this.strength = k;
              this.quality = r;
              this.type = h;
              this.knockout = s;
            }
            __extends(a, d);
            a.FromUntyped = function(b) {
              for (var d = [], g = [], e = 0;e < b.colors.length;e++) {
                var m = b.colors[e];
                d.push(m >>> 8);
                g.push(m & 255) / 255;
              }
              e = f.filters.BitmapFilterType.OUTER;
              b.onTop ? e = f.filters.BitmapFilterType.FULL : b.inner && (e = f.filters.BitmapFilterType.INNER);
              return new a(b.distance, 180 * b.angle / Math.PI, d, g, b.ratios, b.blurX, b.blurY, b.strength, b.quality, e, b.knockout);
            };
            a.prototype._updateFilterBounds = function(a) {
              if (this.type !== g.BitmapFilterType.INNER && (g.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var b = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(b) * this._distance);
                a.y += Math.floor(Math.sin(b) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            Object.defineProperty(a.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "colors", {get:function() {
              return this._colors.concat();
            }, set:function(a) {
              b.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "colors") : (this._colors = g.GradientArrays.sanitizeColors(a), a = this._colors.length, this._alphas = g.GradientArrays.sanitizeAlphas(this._alphas, a, a), this._ratios = g.GradientArrays.sanitizeRatios(this._ratios, a, a));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "alphas", {get:function() {
              return this._alphas.concat();
            }, set:function(a) {
              b.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "alphas") : (g.GradientArrays.sanitize(this._colors, a, this._ratios), this._colors = g.GradientArrays.colors, this._alphas = g.GradientArrays.alphas, this._ratios = g.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "ratios", {get:function() {
              return this._ratios.concat();
            }, set:function(a) {
              b.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "ratios") : (g.GradientArrays.sanitize(this._colors, this._alphas, a), this._colors = g.GradientArrays.colors, this._alphas = g.GradientArrays.alphas, this._ratios = g.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = b.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              a = s(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === g.BitmapFilterType.INNER || a === g.BitmapFilterType.OUTER ? a : g.BitmapFilterType.FULL;
            }, enumerable:!0, configurable:!0});
            a.prototype.clone = function() {
              return new a(this._distance, this._angle, this._colors, this._alphas, this._ratios, this._blurX, this._blurY, this._strength, this._quality, this._type, this._knockout);
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.filters.BitmapFilter);
          g.GradientBevelFilter = m;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.AVM2.Runtime.asCoerceString, m = function(d) {
            function a(a, b, d, e, f, l, m, k, r, h, s) {
              "undefined" === typeof a && (a = 4);
              "undefined" === typeof b && (b = 45);
              "undefined" === typeof d && (d = null);
              "undefined" === typeof e && (e = null);
              "undefined" === typeof f && (f = null);
              "undefined" === typeof l && (l = 4);
              "undefined" === typeof m && (m = 4);
              "undefined" === typeof k && (k = 1);
              "undefined" === typeof r && (r = 1);
              "undefined" === typeof h && (h = "inner");
              "undefined" === typeof s && (s = !1);
              this.distance = a;
              this.angle = b;
              g.GradientArrays.sanitize(d, e, f);
              this._colors = g.GradientArrays.colors;
              this._alphas = g.GradientArrays.alphas;
              this._ratios = g.GradientArrays.ratios;
              this.blurX = l;
              this.blurY = m;
              this.strength = k;
              this.quality = r;
              this.type = h;
              this.knockout = s;
            }
            __extends(a, d);
            a.FromUntyped = function(b) {
              for (var d = [], g = [], e = 0;e < b.colors.length;e++) {
                var m = b.colors[e];
                d.push(m >>> 8);
                g.push(m & 255) / 255;
              }
              e = f.filters.BitmapFilterType.OUTER;
              b.onTop ? e = f.filters.BitmapFilterType.FULL : b.inner && (e = f.filters.BitmapFilterType.INNER);
              return new a(b.distance, 180 * b.angle / Math.PI, d, g, b.ratios, b.blurX, b.blurY, b.strength, b.quality, e, b.knockout);
            };
            a.prototype._updateFilterBounds = function(a) {
              if (this.type !== g.BitmapFilterType.INNER && (g.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var b = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(b) * this._distance);
                a.y += Math.floor(Math.sin(b) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            Object.defineProperty(a.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "colors", {get:function() {
              return this._colors.concat();
            }, set:function(a) {
              b.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "colors") : (this._colors = g.GradientArrays.sanitizeColors(a), a = this._colors.length, this._alphas = g.GradientArrays.sanitizeAlphas(this._alphas, a, a), this._ratios = g.GradientArrays.sanitizeRatios(this._ratios, a, a));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "alphas", {get:function() {
              return this._alphas.concat();
            }, set:function(a) {
              b.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "alphas") : (g.GradientArrays.sanitize(this._colors, a, this._ratios), this._colors = g.GradientArrays.colors, this._alphas = g.GradientArrays.alphas, this._ratios = g.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "ratios", {get:function() {
              return this._ratios.concat();
            }, set:function(a) {
              b.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "ratios") : (g.GradientArrays.sanitize(this._colors, this._alphas, a), this._colors = g.GradientArrays.colors, this._alphas = g.GradientArrays.alphas, this._ratios = g.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = b.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = b.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              a = s(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === g.BitmapFilterType.INNER || a === g.BitmapFilterType.OUTER ? a : g.BitmapFilterType.FULL;
            }, enumerable:!0, configurable:!0});
            a.prototype.clone = function() {
              return new a(this._distance, this._angle, this._colors, this._alphas, this._ratios, this._blurX, this._blurY, this._strength, this._quality, this._type, this._knockout);
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.filters.BitmapFilter);
          g.GradientGlowFilter = m;
        })(f.filters || (f.filters = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.IntegerUtilities.toS16, m = b.IntegerUtilities.clampS8U8, d = function(a) {
            function b(a, c, d, f, l, g, m, k) {
              "undefined" === typeof a && (a = 1);
              "undefined" === typeof c && (c = 1);
              "undefined" === typeof d && (d = 1);
              "undefined" === typeof f && (f = 1);
              "undefined" === typeof l && (l = 0);
              "undefined" === typeof g && (g = 0);
              "undefined" === typeof m && (m = 0);
              "undefined" === typeof k && (k = 0);
              this.redMultiplier = +a;
              this.greenMultiplier = +c;
              this.blueMultiplier = +d;
              this.alphaMultiplier = +f;
              this.redOffset = +l;
              this.greenOffset = +g;
              this.blueOffset = +m;
              this.alphaOffset = +k;
            }
            __extends(b, a);
            b.FromCXForm = function(a) {
              return new b(a.redMultiplier / 256, a.greenMultiplier / 256, a.blueMultiplier / 256, a.alphaMultiplier / 256, a.redOffset, a.greenOffset, a.blueOffset, a.alphaOffset);
            };
            Object.defineProperty(b.prototype, "native_redMultiplier", {get:function() {
              return this.redMultiplier;
            }, set:function(a) {
              this.redMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "native_greenMultiplier", {get:function() {
              return this.greenMultiplier;
            }, set:function(a) {
              this.greenMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "native_blueMultiplier", {get:function() {
              return this.blueMultiplier;
            }, set:function(a) {
              this.blueMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "native_alphaMultiplier", {get:function() {
              return this.alphaMultiplier;
            }, set:function(a) {
              this.alphaMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "native_redOffset", {get:function() {
              return this.redOffset;
            }, set:function(a) {
              this.redOffset = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "native_greenOffset", {get:function() {
              return this.greenOffset;
            }, set:function(a) {
              this.greenOffset = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "native_blueOffset", {get:function() {
              return this.blueOffset;
            }, set:function(a) {
              this.blueOffset = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "native_alphaOffset", {get:function() {
              return this.alphaOffset;
            }, set:function(a) {
              this.alphaOffset = +a;
            }, enumerable:!0, configurable:!0});
            b.prototype.ColorTransform = function(a, b, c, d, f, g, m, k) {
              "undefined" === typeof a && (a = 1);
              "undefined" === typeof b && (b = 1);
              "undefined" === typeof c && (c = 1);
              "undefined" === typeof d && (d = 1);
              "undefined" === typeof f && (f = 0);
              "undefined" === typeof g && (g = 0);
              "undefined" === typeof m && (m = 0);
              "undefined" === typeof k && (k = 0);
              this.redMultiplier = a;
              this.greenMultiplier = b;
              this.blueMultiplier = c;
              this.alphaMultiplier = d;
              this.redOffset = f;
              this.greenOffset = g;
              this.blueOffset = m;
              this.alphaOffset = k;
            };
            Object.defineProperty(b.prototype, "color", {get:function() {
              return this.redOffset << 16 | this.greenOffset << 8 | this.blueOffset;
            }, set:function(a) {
              this.redOffset = a >> 16 & 255;
              this.greenOffset = a >> 8 & 255;
              this.blueOffset = a & 255;
              this.redMultiplier = this.greenMultiplier = this.blueMultiplier = 1;
            }, enumerable:!0, configurable:!0});
            b.prototype.concat = function(a) {
              this.redMultiplier *= a.redMultiplier;
              this.greenMultiplier *= a.greenMultiplier;
              this.blueMultiplier *= a.blueMultiplier;
              this.alphaMultiplier *= a.alphaMultiplier;
              this.redOffset += a.redOffset;
              this.greenOffset += a.greenOffset;
              this.blueOffset += a.blueOffset;
              this.alphaOffset += a.alphaOffset;
            };
            b.prototype.preMultiply = function(a) {
              this.redOffset += a.redOffset * this.redMultiplier;
              this.greenOffset += a.greenOffset * this.greenMultiplier;
              this.blueOffset += a.blueOffset * this.blueMultiplier;
              this.alphaOffset += a.alphaOffset * this.alphaMultiplier;
              this.redMultiplier *= a.redMultiplier;
              this.greenMultiplier *= a.greenMultiplier;
              this.blueMultiplier *= a.blueMultiplier;
              this.alphaMultiplier *= a.alphaMultiplier;
            };
            b.prototype.copyFrom = function(a) {
              this.redMultiplier = a.redMultiplier;
              this.greenMultiplier = a.greenMultiplier;
              this.blueMultiplier = a.blueMultiplier;
              this.alphaMultiplier = a.alphaMultiplier;
              this.redOffset = a.redOffset;
              this.greenOffset = a.greenOffset;
              this.blueOffset = a.blueOffset;
              this.alphaOffset = a.alphaOffset;
            };
            b.prototype.setTo = function(a, b, c, d, f, g, m, k) {
              this.redMultiplier = a;
              this.greenMultiplier = b;
              this.blueMultiplier = c;
              this.alphaMultiplier = d;
              this.redOffset = f;
              this.greenOffset = g;
              this.blueOffset = m;
              this.alphaOffset = k;
            };
            b.prototype.clone = function() {
              return new b(this.redMultiplier, this.greenMultiplier, this.blueMultiplier, this.alphaMultiplier, this.redOffset, this.greenOffset, this.blueOffset, this.alphaOffset);
            };
            b.prototype.convertToFixedPoint = function() {
              this.redMultiplier = m(this.redMultiplier);
              this.greenMultiplier = m(this.greenMultiplier);
              this.blueMultiplier = m(this.blueMultiplier);
              this.alphaMultiplier = m(this.alphaMultiplier);
              this.redOffset = k(this.redOffset);
              this.greenOffset = k(this.greenOffset);
              this.blueOffset = k(this.blueOffset);
              this.alphaOffset = k(this.alphaOffset);
            };
            b.prototype.toString = function() {
              return "(redMultiplier=" + this.redMultiplier + ", greenMultiplier=" + this.greenMultiplier + ", blueMultiplier=" + this.blueMultiplier + ", alphaMultiplier=" + this.alphaMultiplier + ", redOffset=" + this.redOffset + ", greenOffset=" + this.greenOffset + ", blueOffset=" + this.blueOffset + ", alphaOffset=" + this.alphaOffset + ")";
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.ColorTransform = d;
        })(f.geom || (f.geom = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b() {
              k("Dummy Constructor: public flash.media.Camera");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "names", {get:function() {
              k("public flash.media.Camera::get names");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "isSupported", {get:function() {
              k("public flash.media.Camera::get isSupported");
            }, enumerable:!0, configurable:!0});
            b.getCamera = function(a) {
              "undefined" === typeof a && (a = null);
              m(a);
              k("public flash.media.Camera::static getCamera");
            };
            b._scanHardware = function() {
              k("public flash.media.Camera::static _scanHardware");
            };
            Object.defineProperty(b.prototype, "activityLevel", {get:function() {
              k("public flash.media.Camera::get activityLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "bandwidth", {get:function() {
              k("public flash.media.Camera::get bandwidth");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "currentFPS", {get:function() {
              k("public flash.media.Camera::get currentFPS");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "fps", {get:function() {
              k("public flash.media.Camera::get fps");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "height", {get:function() {
              k("public flash.media.Camera::get height");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "index", {get:function() {
              k("public flash.media.Camera::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "keyFrameInterval", {get:function() {
              k("public flash.media.Camera::get keyFrameInterval");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "loopback", {get:function() {
              k("public flash.media.Camera::get loopback");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "motionLevel", {get:function() {
              k("public flash.media.Camera::get motionLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "motionTimeout", {get:function() {
              k("public flash.media.Camera::get motionTimeout");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "muted", {get:function() {
              k("public flash.media.Camera::get muted");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "name", {get:function() {
              k("public flash.media.Camera::get name");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "position", {get:function() {
              k("public flash.media.Camera::get position");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "quality", {get:function() {
              k("public flash.media.Camera::get quality");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "width", {get:function() {
              k("public flash.media.Camera::get width");
            }, enumerable:!0, configurable:!0});
            b.prototype.setCursor = function(a) {
              k("public flash.media.Camera::setCursor");
            };
            b.prototype.setKeyFrameInterval = function(a) {
              k("public flash.media.Camera::setKeyFrameInterval");
            };
            b.prototype.setLoopback = function(a) {
              k("public flash.media.Camera::setLoopback");
            };
            b.prototype.setMode = function(a, b, c, d) {
              k("public flash.media.Camera::setMode");
            };
            b.prototype.setMotionLevel = function(a, b) {
              k("public flash.media.Camera::setMotionLevel");
            };
            b.prototype.setQuality = function(a, b) {
              k("public flash.media.Camera::setQuality");
            };
            b.prototype.drawToBitmapData = function(a) {
              k("public flash.media.Camera::drawToBitmapData");
            };
            b.prototype.copyToByteArray = function(a, b) {
              k("public flash.media.Camera::copyToByteArray");
            };
            b.prototype.copyToVector = function(a, b) {
              k("public flash.media.Camera::copyToVector");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.events.EventDispatcher);
          g.Camera = d;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.media.ID3Info");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = "songName artist album year comment genre track".split(" ");
            return a;
          }(g.ASNative);
          f.ID3Info = m;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b() {
              k("Dummy Constructor: public flash.media.Microphone");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "names", {get:function() {
              k("public flash.media.Microphone::get names");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "isSupported", {get:function() {
              k("public flash.media.Microphone::get isSupported");
            }, enumerable:!0, configurable:!0});
            b.getMicrophone = function(a) {
              k("public flash.media.Microphone::static getMicrophone");
            };
            b.getEnhancedMicrophone = function(a) {
              k("public flash.media.Microphone::static getEnhancedMicrophone");
            };
            Object.defineProperty(b.prototype, "rate", {get:function() {
              k("public flash.media.Microphone::get rate");
            }, set:function(a) {
              k("public flash.media.Microphone::set rate");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "codec", {get:function() {
              k("public flash.media.Microphone::get codec");
            }, set:function(a) {
              m(a);
              k("public flash.media.Microphone::set codec");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "framesPerPacket", {get:function() {
              k("public flash.media.Microphone::get framesPerPacket");
            }, set:function(a) {
              k("public flash.media.Microphone::set framesPerPacket");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "encodeQuality", {get:function() {
              k("public flash.media.Microphone::get encodeQuality");
            }, set:function(a) {
              k("public flash.media.Microphone::set encodeQuality");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "noiseSuppressionLevel", {get:function() {
              k("public flash.media.Microphone::get noiseSuppressionLevel");
            }, set:function(a) {
              k("public flash.media.Microphone::set noiseSuppressionLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "enableVAD", {get:function() {
              k("public flash.media.Microphone::get enableVAD");
            }, set:function(a) {
              k("public flash.media.Microphone::set enableVAD");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "activityLevel", {get:function() {
              k("public flash.media.Microphone::get activityLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "gain", {get:function() {
              k("public flash.media.Microphone::get gain");
            }, set:function(a) {
              k("public flash.media.Microphone::set gain");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "index", {get:function() {
              k("public flash.media.Microphone::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "muted", {get:function() {
              k("public flash.media.Microphone::get muted");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "name", {get:function() {
              k("public flash.media.Microphone::get name");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "silenceLevel", {get:function() {
              k("public flash.media.Microphone::get silenceLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "silenceTimeout", {get:function() {
              k("public flash.media.Microphone::get silenceTimeout");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "useEchoSuppression", {get:function() {
              k("public flash.media.Microphone::get useEchoSuppression");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "soundTransform", {get:function() {
              k("public flash.media.Microphone::get soundTransform");
            }, set:function(a) {
              k("public flash.media.Microphone::set soundTransform");
            }, enumerable:!0, configurable:!0});
            b.prototype.setSilenceLevel = function(a, b) {
              k("public flash.media.Microphone::setSilenceLevel");
            };
            b.prototype.setUseEchoSuppression = function(a) {
              k("public flash.media.Microphone::setUseEchoSuppression");
            };
            b.prototype.setLoopBack = function(a) {
              k("public flash.media.Microphone::setLoopBack");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.events.EventDispatcher);
          g.Microphone = d;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          function s(a, b) {
            var c = document.createElement("audio");
            c.canPlayType(a.mimeType) ? (c.preload = "metadata", c.src = URL.createObjectURL(new Blob([a.data], {type:a.mimeType})), c.load(), c.addEventListener("loadedmetadata", function() {
              b({duration:1E3 * this.duration});
            })) : b({duration:0});
          }
          var m = b.Debug.notImplemented, d = b.AVM2.Runtime.asCoerceString, a = b.Debug.somewhatImplemented, c = b.Telemetry, n = b.AVM2.ABC.Multiname, p = function() {
            return function() {
            };
          }(), e = function(e) {
            function l(a, b) {
              m("Dummy Constructor: public flash.media.Sound");
            }
            __extends(l, e);
            Object.defineProperty(l.prototype, "url", {get:function() {
              return this._url;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "isURLInaccessible", {get:function() {
              m("public flash.media.Sound::get isURLInaccessible");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "length", {get:function() {
              return this._length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "isBuffering", {get:function() {
              m("public flash.media.Sound::get isBuffering");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "id3", {get:function() {
              return this._id3;
            }, enumerable:!0, configurable:!0});
            l.prototype.loadCompressedDataFromByteArray = function(a, b) {
              m("public flash.media.Sound::loadCompressedDataFromByteArray");
            };
            l.prototype.loadPCMFromByteArray = function(a, b, c, h, e) {
              "undefined" === typeof c && (c = "float");
              d(c);
              m("public flash.media.Sound::loadPCMFromByteArray");
            };
            l.prototype.play = function(a, c, d) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof c && (c = 0);
              "undefined" === typeof d && (d = null);
              a = +a;
              c |= 0;
              var h = new f.media.SoundChannel;
              h._sound = this;
              h._soundTransform = b.isNullOrUndefined(d) ? new f.media.SoundTransform : d;
              this._playQueue.push({channel:h, startTime:a});
              if (g.disableAudioOption.value) {
                return h;
              }
              this._soundData && h._playSoundDataViaAudio(this._soundData, a, c);
              return h;
            };
            l.prototype.close = function() {
              a("public flash.media.Sound::close");
            };
            l.prototype.extract = function(a, b, c) {
              m("public flash.media.Sound::extract");
            };
            l.prototype._load = function(a, b, c) {
              if (a) {
                var d = this, e = this._stream = new f.net.URLStream, g = new f.utils.ByteArray, l = 0, k = new p;
                k.completed = !1;
                e.addEventListener("progress", function(a) {
                  d._bytesLoaded = a[n.getPublicQualifiedName("bytesLoaded")];
                  d._bytesTotal = a[n.getPublicQualifiedName("bytesTotal")];
                  var b = e.bytesAvailable;
                  e.readBytes(g, l, b);
                  l += b;
                  d.dispatchEvent(a);
                });
                e.addEventListener("complete", function(a) {
                  d.dispatchEvent(a);
                  k.data = g._buffer;
                  k.mimeType = "audio/mpeg";
                  k.completed = !0;
                  d._soundData = k;
                  s(k, function(a) {
                    d._length = a.duration;
                  });
                  d._playQueue.forEach(function(a) {
                    a.channel._playSoundDataViaAudio(k, a.startTime);
                  });
                });
                e.load(a);
              }
            };
            l.classInitializer = null;
            l.initializer = function(a) {
              this._playQueue = [];
              this._url = null;
              this._bytesLoaded = this._bytesTotal = this._length = 0;
              this._id3 = new f.media.ID3Info;
              c.instance.reportTelemetry({topic:"feature", feature:5});
              if (a) {
                var b = new p;
                a.pcm && (b.sampleRate = a.sampleRate, b.channels = a.channels, b.pcm = a.pcm, b.end = a.pcm.length);
                b.completed = !0;
                a.packaged && (b.data = a.packaged.data.buffer, b.mimeType = a.packaged.mimeType);
                var d = this;
                s(b, function(a) {
                  d._length = a.duration;
                });
                this._soundData = b;
              }
            };
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(f.events.EventDispatcher);
          k.Sound = e;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.assert, m = b.Debug.notImplemented, d = b.Debug.somewhatImplemented, a = b.Debug.error, c = function() {
            function a(b, c) {
              this._sourceRate = b;
              this._targetRate = c;
              this._tail = [];
              this._sourceOffset = 0;
            }
            a.prototype.getData = function(a, b) {
              for (var c = this._sourceRate / this._targetRate, d = this._sourceOffset, e = Math.ceil((b - 1) * c + d) + 1, h = [], f = 0;f < a.length;f++) {
                h.push(new Float32Array(e));
              }
              this.ondatarequested({data:h, count:e});
              for (f = 0;f < a.length;f++) {
                for (var g = a[f], k = h[f], m = 0;m < b;m++) {
                  var n = m * c + d, p = n | 0, s = Math.ceil(n) | 0, t = 0 > p ? this._tail[f] : k[p];
                  p === s ? g[m] = t : (n -= p, g[m] = t * (1 - n) + k[s] * n);
                }
                this._tail[f] = k[e - 1];
              }
              this._sourceOffset = (b - 1) * c + d - (e - 1);
            };
            return a;
          }(), n = function() {
            function a(b, d) {
              var f = a._cachedContext;
              f || (f = new AudioContext, a._cachedContext = f);
              this._context = f;
              this._contextSampleRate = f.sampleRate || 44100;
              this._channels = d;
              this._sampleRate = b;
              this._contextSampleRate !== b && (this._resampler = new c(b, this._contextSampleRate), this._resampler.ondatarequested = function(a) {
                this.requestData(a.data, a.count);
              }.bind(this));
            }
            a.prototype.start = function() {
              var a = this._context.createScriptProcessor(2048, 0, this._channels), b = this;
              a.onaudioprocess = function(a) {
                for (var c = [], d = 0;d < b._channels;d++) {
                  c.push(a.outputBuffer.getChannelData(d));
                }
                a = c[0].length;
                b._resampler ? b._resampler.getData(c, a) : b.requestData(c, a);
              };
              a.connect(this._context.destination);
              this._source = a;
            };
            a.prototype.stop = function() {
              this._source.disconnect(this._context.destination);
            };
            a.prototype.requestData = function(a, b) {
              var c = this._channels, d = new Float32Array(b * c);
              this.ondatarequested({data:d, count:d.length});
              for (var e = 0, h = 0;e < b;e++) {
                for (var f = 0;f < c;f++) {
                  a[f][e] = d[h++];
                }
              }
            };
            a.isSupported = function() {
              return "undefined" !== typeof AudioContext;
            };
            return a;
          }(), p = function(c) {
            function p() {
              m("Dummy Constructor: public flash.media.SoundChannel");
            }
            __extends(p, c);
            Object.defineProperty(p.prototype, "position", {get:function() {
              return this._position;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "soundTransform", {get:function() {
              return this._soundTransform;
            }, set:function(a) {
              d("public flash.media.SoundChannel::set soundTransform");
              this._soundTransform = b.isNullOrUndefined(a) ? new f.media.SoundTransform : a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "leftPeak", {get:function() {
              return this._leftPeak;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "rightPeak", {get:function() {
              return this._rightPeak;
            }, enumerable:!0, configurable:!0});
            p.prototype.stop = function() {
              this._element && (this._unregisterWithSoundMixer(), this._element.pause());
              this._audioChannel && (this._unregisterWithSoundMixer(), this._audioChannel.stop());
            };
            p.prototype._playSoundDataViaAudio = function(a, b, c) {
              if (a.mimeType) {
                this._registerWithSoundMixer();
                this._position = b;
                var d = this, h = 0, e = document.createElement("audio");
                e.canPlayType(a.mimeType) ? (e.preload = "metadata", e.loop = 0 < c, e.src = URL.createObjectURL(new Blob([a.data], {type:a.mimeType})), e.addEventListener("loadeddata", function() {
                  e.currentTime = b / 1E3;
                  e.play();
                }), e.addEventListener("timeupdate", function() {
                  var a = e.currentTime;
                  c && h > a && (--c, c || (e.loop = !1), a < b / 1E3 && (e.currentTime = b / 1E3));
                  d._position = 1E3 * (h = a);
                }), e.addEventListener("ended", function() {
                  d._unregisterWithSoundMixer();
                  d.dispatchEvent(new f.events.Event("soundComplete", !1, !1));
                  d._element = null;
                }), this._element = e, this._applySoundTransform()) : console.error('ERROR: "' + a.mimeType + '" type playback is not supported by the browser');
              }
            };
            p.prototype._playSoundDataViaChannel = function(b, c, d) {
              k(b.pcm, "no pcm data found");
              this._registerWithSoundMixer();
              var e = this, h = Math.round(c / 1E3 * b.sampleRate) * b.channels, g = h;
              this._position = c;
              n.isSupported ? c = new n(b.sampleRate, b.channels) : (a("PCM data playback is not supported by the browser"), c = void 0);
              this._audioChannel = c;
              this._audioChannel.ondatarequested = function(a) {
                var c = b.end;
                if (g >= c && b.completed) {
                  e._unregisterWithSoundMixer(), e._audioChannel.stop(), e.dispatchEvent(new f.events.Event("soundComplete", !1, !1));
                } else {
                  var k = a.count;
                  a = a.data;
                  var m = b.pcm;
                  do {
                    for (var n = Math.min(c - g, k), p = 0;p < n;p++) {
                      a[p] = m[g++];
                    }
                    k -= n;
                    if (g >= c) {
                      if (!d) {
                        break;
                      }
                      d--;
                      g = h;
                    }
                  } while (0 < k);
                  e._position = g / b.sampleRate / b.channels * 1E3;
                }
              };
              this._audioChannel.start();
              this._applySoundTransform();
            };
            p.prototype._applySoundTransform = function() {
              var a = this._soundTransform.volume;
              g.SoundMixer._soundTransform && (a *= g.SoundMixer._soundTransform.volume);
              a *= g.SoundMixer._getMasterVolume();
              this._element && (this._element.volume = 0 >= a ? 0 : 1 <= a ? 1 : a);
            };
            p.prototype._registerWithSoundMixer = function() {
              g.SoundMixer._registerChannel(this);
            };
            p.prototype._unregisterWithSoundMixer = function() {
              g.SoundMixer._unregisterChannel(this);
            };
            p.classInitializer = null;
            p.initializer = function(a) {
              this._element = null;
              this._rightPeak = this._leftPeak = this._position = 0;
              this._pcmData = null;
              this._soundTransform = new f.media.SoundTransform;
            };
            p.classSymbols = null;
            p.instanceSymbols = null;
            return p;
          }(f.events.EventDispatcher);
          g.SoundChannel = p;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b) {
              k("Dummy Constructor: public flash.media.SoundLoaderContext");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.SoundLoaderContext = m;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          var s = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = function(a) {
            function g() {
              s("Dummy Constructor: public flash.media.SoundMixer");
            }
            __extends(g, a);
            Object.defineProperty(g, "bufferTime", {get:function() {
              s("public flash.media.SoundMixer::get bufferTime");
            }, set:function(a) {
              s("public flash.media.SoundMixer::set bufferTime");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "soundTransform", {get:function() {
              d("public flash.media.SoundMixer::get soundTransform");
              return b.isNullOrUndefined(g._soundTransform) ? new f.media.SoundTransform : new f.media.SoundTransform(g._soundTransform.volume, g._soundTransform.pan);
            }, set:function(a) {
              d("public flash.media.SoundMixer::set soundTransform");
              g._soundTransform = b.isNullOrUndefined(a) ? new f.media.SoundTransform : a;
              g._registeredChannels.forEach(function(a) {
                a._applySoundTransform();
              });
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "audioPlaybackMode", {get:function() {
              s("public flash.media.SoundMixer::get audioPlaybackMode");
            }, set:function(a) {
              m(a);
              s("public flash.media.SoundMixer::set audioPlaybackMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "useSpeakerphoneForVoice", {get:function() {
              s("public flash.media.SoundMixer::get useSpeakerphoneForVoice");
            }, set:function(a) {
              s("public flash.media.SoundMixer::set useSpeakerphoneForVoice");
            }, enumerable:!0, configurable:!0});
            g.stopAll = function() {
              g._registeredChannels.forEach(function(a) {
                a.stop();
              });
              g._registeredChannels = [];
            };
            g.computeSpectrum = function(a, b, c) {
              d("public flash.media.SoundMixer::static computeSpectrum");
              b = new Float32Array(1024);
              for (c = 0;1024 > c;c++) {
                b[c] = Math.random();
              }
              a.writeRawBytes(b);
              a.position = 0;
            };
            g.areSoundsInaccessible = function() {
              s("public flash.media.SoundMixer::static areSoundsInaccessible");
            };
            g._getMasterVolume = function() {
              return g._masterVolume;
            };
            g._setMasterVolume = function(a) {
              g._masterVolume = +a;
              g._registeredChannels.forEach(function(a) {
                a._applySoundTransform();
              });
            };
            g._registerChannel = function(a) {
              g._registeredChannels.push(a);
            };
            g._unregisterChannel = function(a) {
              a = g._registeredChannels.indexOf(a);
              0 <= a && g._registeredChannels.splice(a, 1);
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g._masterVolume = 1;
            g._registeredChannels = [];
            return g;
          }(g.ASNative);
          k.SoundMixer = a;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.Debug.somewhatImplemented, d = function(a) {
            function b(a, c) {
              k("Dummy Constructor: public flash.media.SoundTransform");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "volume", {get:function() {
              return this._volume;
            }, set:function(a) {
              this._volume = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "leftToLeft", {get:function() {
              return this._leftToLeft;
            }, set:function(a) {
              this._leftToLeft = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "leftToRight", {get:function() {
              return this._leftToRight;
            }, set:function(a) {
              this._leftToRight = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "rightToRight", {get:function() {
              return this._rightToRight;
            }, set:function(a) {
              this._rightToRight = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "rightToLeft", {get:function() {
              return this._rightToLeft;
            }, set:function(a) {
              this._rightToLeft = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "pan", {get:function() {
              return 0 === this._leftToRight && 0 === this._rightToLeft ? 1 - this._leftToLeft * this._leftToLeft : 0;
            }, set:function(a) {
              this.leftToLeft = Math.sqrt(1 - a);
              this.leftToRight = 0;
              this.rightToRight = Math.sqrt(1 + a);
              this.rightToLeft = 0;
            }, enumerable:!0, configurable:!0});
            b.prototype._updateTransform = function() {
              m("public flash.media.SoundTransform::_updateTransform");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.SoundTransform = d;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.Debug.assert, d = function(a) {
            function b(a, c) {
              "undefined" === typeof a && (a = 320);
              "undefined" === typeof c && (c = 240);
              f.display.DisplayObject.instanceConstructorNoInitialize.call(this);
              this._width = a | 0;
              this._height = c | 0;
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "deblocking", {get:function() {
              return this._deblocking;
            }, set:function(a) {
              this._deblocking = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "smoothing", {get:function() {
              return this._smoothing;
            }, set:function(a) {
              this._smoothing = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoWidth", {get:function() {
              return this._videoWidth;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoHeight", {get:function() {
              return this._videoHeight;
            }, enumerable:!0, configurable:!0});
            b.prototype._containsPointDirectly = function(a, b) {
              m(this._getContentBounds().contains(a, b));
              return!0;
            };
            b.prototype.clear = function() {
              k("public flash.media.Video::clear");
            };
            b.prototype.attachNetStream = function(a) {
              if (this._netStream !== a) {
                this._netStream && (a._videoReferrer = null);
                if (this._netStream = a) {
                  a._videoReferrer = this;
                }
                this._setDirtyFlags(33554432);
              }
            };
            b.prototype.attachCamera = function(a) {
              k("public flash.media.Video::attachCamera");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.display.DisplayObject);
          g.Video = d;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.media.VideoStreamSettings");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.VideoStreamSettings = m;
        })(f.media || (f.media = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b(a, c, d) {
              k("Dummy Constructor: public flash.net.FileFilter");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "description", {get:function() {
              return this._description;
            }, set:function(a) {
              this._description = m(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "extension", {get:function() {
              return this._extension;
            }, set:function(a) {
              this._extension = m(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "macType", {get:function() {
              return this._macType;
            }, set:function(a) {
              this._macType = m(a);
            }, enumerable:!0, configurable:!0});
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.FileFilter = d;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = b.FileLoadingService, c = function(b) {
            function c() {
              k("Dummy Constructor: public flash.net.LocalConnection");
            }
            __extends(c, b);
            c.prototype.close = function() {
              k("public flash.net.LocalConnection::close");
            };
            c.prototype.connect = function(a) {
              m(a);
              k("public flash.net.LocalConnection::connect");
            };
            Object.defineProperty(c.prototype, "domain", {get:function() {
              d("public flash.net.LocalConnection::get domain");
              var b = a.instance.resolveUrl("/");
              return(b = /:\/\/(.+?)[:?#\/]/.exec(b)) && b[1];
            }, enumerable:!0, configurable:!0});
            c.prototype.send = function(a, b) {
              m(a);
              m(b);
              k("public flash.net.LocalConnection::send");
            };
            Object.defineProperty(c.prototype, "client", {get:function() {
              k("public flash.net.LocalConnection::get client");
            }, set:function(a) {
              k("public flash.net.LocalConnection::set client");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "isPerUser", {get:function() {
              k("public flash.net.LocalConnection::get isPerUser");
            }, set:function(a) {
              k("public flash.net.LocalConnection::set isPerUser");
            }, enumerable:!0, configurable:!0});
            c.prototype.allowDomain = function() {
              k("public flash.net.LocalConnection::allowDomain");
            };
            c.prototype.allowInsecureDomain = function() {
              k("public flash.net.LocalConnection::allowInsecureDomain");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(f.events.EventDispatcher);
          g.LocalConnection = c;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = b.AVM2.Runtime.wrapJSObject, c = b.Telemetry, n = b.AVM2.AS.flash.events.NetStatusEvent, p = function(b) {
            function f() {
              k("Dummy Constructor: public flash.net.NetConnection");
            }
            __extends(f, b);
            Object.defineProperty(f, "defaultObjectEncoding", {get:function() {
              return f._defaultObjectEncoding;
            }, set:function(a) {
              f._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "connected", {get:function() {
              return this._connected;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "uri", {get:function() {
              return this._uri;
            }, enumerable:!0, configurable:!0});
            f.prototype.connect = function(b) {
              b = m(b);
              d("public flash.net.NetConnection::connect");
              (this._uri = b) ? this.dispatchEvent(new n(n.NET_STATUS, !1, !1, a({level:"status", code:"NetConnection.Connect.Failed"}))) : (this._connected = !0, this.dispatchEvent(new n(n.NET_STATUS, !1, !1, a({level:"status", code:"NetConnection.Connect.Success"}))));
            };
            Object.defineProperty(f.prototype, "client", {get:function() {
              return this._client;
            }, set:function(a) {
              this._client = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "objectEncoding", {get:function() {
              return this._objectEncoding;
            }, set:function(a) {
              a >>>= 0;
              d("public flash.net.NetConnection::set objectEncoding");
              this._objectEncoding = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "proxyType", {get:function() {
              return this._proxyType;
            }, set:function(a) {
              a = m(a);
              d("public flash.net.NetConnection::set proxyType");
              this._proxyType = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "connectedProxyType", {get:function() {
              k("public flash.net.NetConnection::get connectedProxyType");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "usingTLS", {get:function() {
              d("public flash.net.NetConnection::get usingTLS");
              return this._usingTLS;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "protocol", {get:function() {
              k("public flash.net.NetConnection::get protocol");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "maxPeerConnections", {get:function() {
              k("public flash.net.NetConnection::get maxPeerConnections");
            }, set:function(a) {
              k("public flash.net.NetConnection::set maxPeerConnections");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "nearID", {get:function() {
              k("public flash.net.NetConnection::get nearID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "farID", {get:function() {
              k("public flash.net.NetConnection::get farID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "nearNonce", {get:function() {
              k("public flash.net.NetConnection::get nearNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "farNonce", {get:function() {
              k("public flash.net.NetConnection::get farNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "unconnectedPeerStreams", {get:function() {
              k("public flash.net.NetConnection::get unconnectedPeerStreams");
            }, enumerable:!0, configurable:!0});
            f.prototype.ctor = function() {
              this._uri = null;
              this._connected = !1;
              this._client = null;
              this._proxyType = "none";
              this._objectEncoding = f.defaultObjectEncoding;
              this._usingTLS = !1;
              c.instance.reportTelemetry({topic:"feature", feature:6});
            };
            f.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            f.prototype.invokeWithArgsArray = function(a, b) {
              return this._invoke.call(this, a >>> 0, b);
            };
            f.prototype._invoke = function(a, b) {
              var c = !1;
              switch(a) {
                case 2:
                  c = !0;
              }
              (c ? d : k)("private flash.net.NetConnection::_invoke (" + a + ")");
            };
            f.classInitializer = null;
            f.initializer = null;
            f.classSymbols = null;
            f.instanceSymbols = ["close", "addHeader", "call"];
            f._defaultObjectEncoding = 3;
            return f;
          }(f.events.EventDispatcher);
          g.NetConnection = p;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = b.AVM2.Runtime.wrapJSObject, c = b.AVM2.AS.flash.events.NetStatusEvent, n = b.FileLoadingService, p = function(b) {
            function g(a, b) {
              "undefined" === typeof b && (b = "connectToFMS");
              f.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._connection = a;
              this._peerID = m(b);
              this._id = f.display.DisplayObject.getNextSyncID();
              this._isDirty = !0;
            }
            __extends(g, b);
            g.prototype.dispose = function() {
              k("public flash.net.NetStream::dispose");
            };
            g.prototype.play = function(a) {
              this._url = n.instance.resolveUrl(a);
              d("public flash.net.NetStream::play");
            };
            g.prototype.play2 = function(a) {
              k("public flash.net.NetStream::play2");
            };
            Object.defineProperty(g.prototype, "info", {get:function() {
              k("public flash.net.NetStream::get info");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "multicastInfo", {get:function() {
              k("public flash.net.NetStream::get multicastInfo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "soundTransform", {get:function() {
              return this._soundTransform;
            }, set:function(a) {
              d("public flash.net.NetStream::set soundTransform");
              this._soundTransform = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "checkPolicyFile", {get:function() {
              return this._checkPolicyFile;
            }, set:function(a) {
              this._checkPolicyFile = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "client", {get:function() {
              return this._client;
            }, set:function(a) {
              d("public flash.net.NetStream::set client");
              this._client = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "objectEncoding", {get:function() {
              k("public flash.net.NetStream::get objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "multicastPushNeighborLimit", {get:function() {
              k("public flash.net.NetStream::get multicastPushNeighborLimit");
            }, set:function(a) {
              k("public flash.net.NetStream::set multicastPushNeighborLimit");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "multicastWindowDuration", {get:function() {
              k("public flash.net.NetStream::get multicastWindowDuration");
            }, set:function(a) {
              k("public flash.net.NetStream::set multicastWindowDuration");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "multicastRelayMarginDuration", {get:function() {
              k("public flash.net.NetStream::get multicastRelayMarginDuration");
            }, set:function(a) {
              k("public flash.net.NetStream::set multicastRelayMarginDuration");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "multicastAvailabilityUpdatePeriod", {get:function() {
              k("public flash.net.NetStream::get multicastAvailabilityUpdatePeriod");
            }, set:function(a) {
              k("public flash.net.NetStream::set multicastAvailabilityUpdatePeriod");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "multicastFetchPeriod", {get:function() {
              k("public flash.net.NetStream::get multicastFetchPeriod");
            }, set:function(a) {
              k("public flash.net.NetStream::set multicastFetchPeriod");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "multicastAvailabilitySendToAll", {get:function() {
              k("public flash.net.NetStream::get multicastAvailabilitySendToAll");
            }, set:function(a) {
              k("public flash.net.NetStream::set multicastAvailabilitySendToAll");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "farID", {get:function() {
              k("public flash.net.NetStream::get farID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "nearNonce", {get:function() {
              k("public flash.net.NetStream::get nearNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "farNonce", {get:function() {
              k("public flash.net.NetStream::get farNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "peerStreams", {get:function() {
              k("public flash.net.NetStream::get peerStreams");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "audioReliable", {get:function() {
              k("public flash.net.NetStream::get audioReliable");
            }, set:function(a) {
              k("public flash.net.NetStream::set audioReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "videoReliable", {get:function() {
              k("public flash.net.NetStream::get videoReliable");
            }, set:function(a) {
              k("public flash.net.NetStream::set videoReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "dataReliable", {get:function() {
              k("public flash.net.NetStream::get dataReliable");
            }, set:function(a) {
              k("public flash.net.NetStream::set dataReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "audioSampleAccess", {get:function() {
              k("public flash.net.NetStream::get audioSampleAccess");
            }, set:function(a) {
              k("public flash.net.NetStream::set audioSampleAccess");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "videoSampleAccess", {get:function() {
              k("public flash.net.NetStream::get videoSampleAccess");
            }, set:function(a) {
              k("public flash.net.NetStream::set videoSampleAccess");
            }, enumerable:!0, configurable:!0});
            g.prototype.appendBytes = function(a) {
              this._mediaSource && (this._mediaSourceBuffer || (this._mediaSourceBuffer = this._mediaSource.addSourceBuffer(this._contentTypeHint)), this._mediaSourceBuffer.appendBuffer(new Uint8Array(a._buffer, 0, a.length)));
              d("public flash.net.NetStream::appendBytes");
            };
            g.prototype.appendBytesAction = function() {
              var a;
              a = m("endSequence");
              "endSequence" === a && this._mediaSource && this._mediaSource.endOfStream();
              d("public flash.net.NetStream::appendBytesAction");
            };
            Object.defineProperty(g.prototype, "useHardwareDecoder", {get:function() {
              k("public flash.net.NetStream::get useHardwareDecoder");
            }, set:function(a) {
              k("public flash.net.NetStream::set useHardwareDecoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "useJitterBuffer", {get:function() {
              k("public flash.net.NetStream::get useJitterBuffer");
            }, set:function(a) {
              k("public flash.net.NetStream::set useJitterBuffer");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "videoStreamSettings", {get:function() {
              k("public flash.net.NetStream::get videoStreamSettings");
            }, set:function(a) {
              k("public flash.net.NetStream::set videoStreamSettings");
            }, enumerable:!0, configurable:!0});
            g.prototype.ctor = function(a, b) {
              b = m(b);
              d("public flash.net.NetStream::ctor");
              this._mediaSource = this._contentTypeHint = null;
              this._checkPolicyFile = !0;
              this._videoElement = null;
              var c, e;
              this._videoReady = new Promise(function(a, b) {
                c = a;
                e = b;
              });
              this._videoReady.resolve = c;
              this._videoReady.reject = e;
              var h, f;
              this._videoMetadataReady = new Promise(function(a, b) {
                h = a;
                f = b;
              });
              this._videoMetadataReady.resolve = h;
              this._videoMetadataReady.reject = f;
              this._videoState = {started:!1, buffer:"empty", bufferTime:.1};
            };
            g.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            g.prototype.invokeWithArgsArray = function(a, b) {
              return this._invoke.call(this, a >>> 0, b);
            };
            g.prototype._invoke = function(a, b) {
              var c = !1, e, h = this._videoElement;
              switch(a) {
                case 4:
                  this._videoState.bufferTime = b[0];
                  c = !0;
                  break;
                case 202:
                  switch(b[1]) {
                    case "pause":
                      c = !0;
                      h && (!1 === b[3] || h.paused ? !0 !== b[3] && h.paused && h.play() : h.pause(), h.currentTime = b[4] / 1E3);
                      break;
                    case "seek":
                      c = !0, h && !h.paused && (h.currentTime = b[3] / 1E3);
                  }
                  break;
                case 300:
                  e = h ? h.currentTime : 0;
                  c = !0;
                  break;
                case 302:
                  e = this._videoState.bufferTime;
                  c = !0;
                  break;
                case 303:
                  e = h ? h.duration : 0;
                  c = !0;
                  break;
                case 305:
                  e = "full" === this._videoState.buffer ? 100 : "progress" === this._videoState.buffer ? 50 : 0;
                  c = !0;
                  break;
                case 306:
                  e = 100, c = !0;
              }
              (c ? d : k)("NetStream._invoke (" + a + ")");
              return e;
            };
            g.prototype._createVideoElement = function(b) {
              var d = this;
              /\.mp4$/i.test(b) && /Intel Mac OS X.*?Firefox\/\d+/.test(window.navigator.userAgent) && (b = "http://videos-cdn.mozilla.net/brand/Mozilla_2011_Story.webm");
              var e = document.createElement("video");
              e.preload = "metadata";
              e.src = b;
              e.addEventListener("play", function(b) {
                d._videoState.started || (d._videoState.started = !0, d.dispatchEvent(new c(c.NET_STATUS, !1, !1, a({code:"NetStream.Play.Start", level:"status"}))));
              });
              e.addEventListener("ended", function(b) {
                d._videoState.started = !1;
                d.dispatchEvent(new c(c.NET_STATUS, !1, !1, a({code:"NetStream.Play.Stop", level:"status"})));
              });
              e.addEventListener("loadeddata", function(b) {
                d._videoState.buffer = "full";
                d.dispatchEvent(new c(c.NET_STATUS, !1, !1, a({code:"NetStream.Buffer.Full", level:"status"})));
              });
              e.addEventListener("progress", function(a) {
                d._videoState.buffer = "progress";
              });
              e.addEventListener("waiting", function(b) {
                d._videoState.buffer = "empty";
                d.dispatchEvent(new c(c.NET_STATUS, !1, !1, a({code:"NetStream.Buffer.Empty", level:"status"})));
              });
              e.addEventListener("loadedmetadata", function(a) {
                d._videoMetadataReady.resolve({videoWidth:e.videoWidth, videoHeight:e.videoHeight});
                d._client && (a = {}, a.asSetPublicProperty("width", e.videoWidth), a.asSetPublicProperty("height", e.videoHeight), a.asSetPublicProperty("duration", e.duration), d._client.asCallPublicProperty("onMetaData", [a]));
              });
              e.addEventListener("error", function(b) {
                d.dispatchEvent(new c(c.NET_STATUS, !1, !1, a({code:4 === b.target.error.code ? "NetStream.Play.NoSupportedTrackFound" : 3 === b.target.error.code ? "NetStream.Play.FileStructureInvalid" : "NetStream.Play.StreamNotFound", level:"error"})));
              });
              e.play();
              this._videoElement = e;
              this._videoReady.resolve(e);
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.DIRECT_CONNECTIONS = "directConnections";
            g.CONNECT_TO_FMS = "connectToFMS";
            return g;
          }(f.events.EventDispatcher);
          g.NetStream = p;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b(a, c, d, f, g, u, w, r, h, x, y, t, I, C, E, O, K, F, J, A, B, z, P, D, L) {
              "undefined" === typeof P && (P = null);
              "undefined" === typeof D && (D = null);
              m(P);
              m(D);
              k("Dummy Constructor: public flash.net.NetStreamInfo");
            }
            __extends(b, a);
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.NetStreamInfo = d;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b, d, e, f, g, m, w, r, h, x, y, t, I, C, E, O, K, F) {
              k("Dummy Constructor: public flash.net.NetStreamMulticastInfo");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.NetStreamMulticastInfo = m;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.net.NetStreamPlayOptions");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.NetStreamPlayOptions = m;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b) {
              k("Dummy Constructor: public flash.net.Responder");
            }
            __extends(a, b);
            a.prototype.ctor = function(a, b) {
              this._result = a;
              this._status = b;
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.Responder = m;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = b.ObjectUtilities.createEmptyObject, c = function(c) {
            function g() {
              f.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._data = a();
            }
            __extends(g, c);
            g.deleteAll = function(a) {
              m(a);
              k("public flash.net.SharedObject::static deleteAll");
            };
            g.getDiskUsage = function(a) {
              m(a);
              k("public flash.net.SharedObject::static getDiskUsage");
            };
            g._create = function(a, c) {
              var d = new g;
              d._path = a;
              d._data = c;
              d._objectEncoding = g._defaultObjectEncoding;
              b.Telemetry.instance.reportTelemetry({topic:"feature", feature:3});
              return d;
            };
            g.getLocal = function(a, b, c) {
              "undefined" === typeof b && (b = null);
              a = m(a);
              b = m(b);
              a = (b || "") + "/" + a;
              if (g._sharedObjects[a]) {
                return g._sharedObjects[a];
              }
              b = sessionStorage.getItem(a);
              b = g._create(a, b ? JSON.parse(b) : {});
              return g._sharedObjects[a] = b;
            };
            g.getRemote = function(a, b, c, d) {
              "undefined" === typeof b && (b = null);
              m(a);
              m(b);
              k("public flash.net.SharedObject::static getRemote");
            };
            Object.defineProperty(g, "defaultObjectEncoding", {get:function() {
              return g._defaultObjectEncoding;
            }, set:function(a) {
              g._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "data", {get:function() {
              return this._data;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "objectEncoding", {get:function() {
              return this._objectEncoding;
            }, set:function(a) {
              this._objectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "client", {get:function() {
              k("public flash.net.SharedObject::get client");
            }, set:function(a) {
              k("public flash.net.SharedObject::set client");
            }, enumerable:!0, configurable:!0});
            g.prototype.setDirty = function(a) {
              m(a);
              d("public flash.net.SharedObject::setDirty");
            };
            g.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            g.prototype.invokeWithArgsArray = function(a, b) {
              return this._invoke(a >>> 0, b);
            };
            g.prototype._invoke = function(a, b) {
              var c = !1, f;
              switch(a) {
                case 4:
                  f = JSON.stringify(this._data).length - 2;
                  c = !0;
                  break;
                case 6:
                  this._data = {};
                  sessionStorage.removeItem(this._path);
                  c = !0;
                  break;
                case 2:
                  sessionStorage.setItem(this._path, JSON.stringify(this._data));
                  f = c = !0;
                  break;
                case 3:
                  c = !0;
              }
              (c ? d : k)("private flash.net.SharedObject::_invoke (" + a + ")");
              return f;
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g._sharedObjects = a();
            g._defaultObjectEncoding = 3;
            return g;
          }(f.events.EventDispatcher);
          g.SharedObject = c;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = b.AVM2.Errors, c = b.AVM2.Runtime.throwError, n = function(b) {
            function e(a, b) {
              "undefined" === typeof a && (a = null);
              m(a);
              k("Dummy Constructor: public flash.net.Socket");
            }
            __extends(e, b);
            Object.defineProperty(e.prototype, "bytesAvailable", {get:function() {
              k("public flash.net.Socket::get bytesAvailable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "connected", {get:function() {
              k("public flash.net.Socket::get connected");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "objectEncoding", {get:function() {
              k("public flash.net.Socket::get objectEncoding");
            }, set:function(a) {
              k("public flash.net.Socket::set objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "endian", {get:function() {
              k("public flash.net.Socket::get endian");
            }, set:function(a) {
              m(a);
              k("public flash.net.Socket::set endian");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "bytesPending", {get:function() {
              k("public flash.net.Socket::get bytesPending");
            }, enumerable:!0, configurable:!0});
            e.prototype.readBytes = function(a, b, c) {
              k("public flash.net.Socket::readBytes");
            };
            e.prototype.writeBytes = function(a, b, c) {
              k("public flash.net.Socket::writeBytes");
            };
            e.prototype.writeBoolean = function(a) {
              k("public flash.net.Socket::writeBoolean");
            };
            e.prototype.writeByte = function(a) {
              k("public flash.net.Socket::writeByte");
            };
            e.prototype.writeShort = function(a) {
              k("public flash.net.Socket::writeShort");
            };
            e.prototype.writeInt = function(a) {
              k("public flash.net.Socket::writeInt");
            };
            e.prototype.writeUnsignedInt = function(a) {
              k("public flash.net.Socket::writeUnsignedInt");
            };
            e.prototype.writeFloat = function(a) {
              k("public flash.net.Socket::writeFloat");
            };
            e.prototype.writeDouble = function(a) {
              k("public flash.net.Socket::writeDouble");
            };
            e.prototype.writeMultiByte = function(a, b) {
              m(a);
              m(b);
              k("public flash.net.Socket::writeMultiByte");
            };
            e.prototype.writeUTF = function(a) {
              m(a);
              k("public flash.net.Socket::writeUTF");
            };
            e.prototype.writeUTFBytes = function(a) {
              m(a);
              k("public flash.net.Socket::writeUTFBytes");
            };
            e.prototype.readBoolean = function() {
              k("public flash.net.Socket::readBoolean");
            };
            e.prototype.readByte = function() {
              k("public flash.net.Socket::readByte");
            };
            e.prototype.readUnsignedByte = function() {
              k("public flash.net.Socket::readUnsignedByte");
            };
            e.prototype.readShort = function() {
              k("public flash.net.Socket::readShort");
            };
            e.prototype.readUnsignedShort = function() {
              k("public flash.net.Socket::readUnsignedShort");
            };
            e.prototype.readInt = function() {
              k("public flash.net.Socket::readInt");
            };
            e.prototype.readUnsignedInt = function() {
              k("public flash.net.Socket::readUnsignedInt");
            };
            e.prototype.readFloat = function() {
              k("public flash.net.Socket::readFloat");
            };
            e.prototype.readDouble = function() {
              k("public flash.net.Socket::readDouble");
            };
            e.prototype.readMultiByte = function(a, b) {
              m(b);
              k("public flash.net.Socket::readMultiByte");
            };
            e.prototype.readUTF = function() {
              k("public flash.net.Socket::readUTF");
            };
            e.prototype.readUTFBytes = function(a) {
              k("public flash.net.Socket::readUTFBytes");
            };
            e.prototype.flush = function() {
              k("public flash.net.Socket::flush");
            };
            e.prototype.writeObject = function(a) {
              k("public flash.net.Socket::writeObject");
            };
            e.prototype.readObject = function() {
              k("public flash.net.Socket::readObject");
            };
            e.prototype.internalGetSecurityErrorMessage = function(a, b) {
              m(a);
              d("flash.net.Socket::internalGetSecurityErrorMessage");
              return "SecurityErrorEvent";
            };
            e.prototype.internalConnect = function(b, e) {
              b = m(b);
              e |= 0;
              d("flash.net.Socket::internalConnect");
              c("SecurityError", a.SocketConnectError, b, e);
            };
            e.prototype.didFailureOccur = function() {
              d("flash.net.Socket::didFailureOccur");
              return!0;
            };
            e.classInitializer = null;
            e.initializer = null;
            e.classSymbols = null;
            e.instanceSymbols = null;
            return e;
          }(f.events.EventDispatcher);
          g.Socket = n;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a) {
              k("Dummy Constructor: public flash.net.URLLoader");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = "data dataFormat bytesLoaded bytesTotal load close".split(" ");
            return a;
          }(f.events.EventDispatcher);
          g.URLLoader = m;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          var s = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.AVM2.Runtime.throwError, a = function(a) {
            function b(a) {
              "undefined" === typeof a && (a = null);
              m(a);
              s("Dummy Constructor: public flash.net.URLRequest");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "url", {get:function() {
              return this._url;
            }, set:function(a) {
              this._url = a = m(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});
            Object.defineProperty(b.prototype, "method", {get:function() {
              return this._method;
            }, set:function(a) {
              a = m(a);
              "get" !== a && "GET" !== a && "post" !== a && "POST" !== a && d("ArgumentError", k.Errors.InvalidArgumentError);
              this._method = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "contentType", {get:function() {
              return this._contentType;
            }, set:function(a) {
              this._contentType = a = m(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "requestHeaders", {get:function() {
              return this._requestHeaders;
            }, set:function(a) {
              Array.isArray(a) || d("ArgumentError", k.Errors.InvalidArgumentError, "value");
              this._requestHeaders = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "digest", {get:function() {
              return this._digest;
            }, set:function(a) {
              this._digest = a = m(a);
            }, enumerable:!0, configurable:!0});
            b.prototype._toFileRequest = function() {
              var a = {};
              a.url = this._url;
              a.method = this._method;
              a.checkPolicyFile = this._checkPolicyFile;
              if (this._data) {
                if (a.mimeType = this._contentType, f.utils.ByteArray.isType(this._data)) {
                  a.data = new Uint8Array(this._data._buffer, 0, this._data.length);
                } else {
                  var b = this._data.asGetPublicProperty("toString").call(this._data);
                  if ("GET" === this._method) {
                    var c = a.url.lastIndexOf("?");
                    a.url = (0 > c ? a.url : a.url.substring(0, c)) + "?" + b;
                  } else {
                    a.data = b;
                  }
                }
              }
              return a;
            };
            b.classInitializer = null;
            b.initializer = function() {
              this._url = null;
              this._method = "GET";
              this._digest = this._data = null;
              this._contentType = "application/x-www-form-urlencoded";
              this._requestHeaders = null;
              this._checkPolicyFile = !0;
            };
            b.classSymbols = null;
            b.bindings = null;
            return b;
          }(g.ASNative);
          t.URLRequest = a;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.AVM2.Runtime.asCoerceString, m = function(b) {
            function a(a, b) {
              "undefined" === typeof a && (a = "");
              "undefined" === typeof b && (b = "");
              k(a);
              k(b);
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = ["name!", "value!"];
            return a;
          }(g.ASNative);
          f.URLRequestHeader = m;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.FileLoadingService, a = b.AVM2.Runtime.throwError, c = b.AVM2.AS.flash.utils, n = function(b) {
            function e() {
              s("Dummy Constructor: public flash.net.URLStream");
            }
            __extends(e, b);
            Object.defineProperty(e.prototype, "connected", {get:function() {
              return this._connected;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "bytesAvailable", {get:function() {
              return this._buffer.length - this._buffer.position;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "objectEncoding", {get:function() {
              return this._buffer.objectEncoding;
            }, set:function(a) {
              this._buffer.objectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "endian", {get:function() {
              return this._buffer.endian;
            }, set:function(a) {
              a = m(a);
              this._buffer.endian = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "diskCacheEnabled", {get:function() {
              s("public flash.net.URLStream::get diskCacheEnabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "position", {get:function() {
              return this._buffer.position;
            }, set:function(a) {
              this._buffer.position = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "length", {get:function() {
              return this._buffer.length;
            }, enumerable:!0, configurable:!0});
            e.prototype.load = function(a) {
              var b = f.events.Event, c = f.events.IOErrorEvent, e = f.events.ProgressEvent, g = f.events.HTTPStatusEvent, h = d.instance.createSession(), k = this;
              h.onprogress = function(a, b) {
                var c = k._buffer.position;
                k._buffer.position = k._writePosition;
                k._buffer.writeRawBytes(a);
                k._writePosition = k._buffer.position;
                k._buffer.position = c;
                k.dispatchEvent(new e(e.PROGRESS, !1, !1, b.bytesLoaded, b.bytesTotal));
              };
              h.onerror = function(a) {
                k._connected = !1;
                k.dispatchEvent(new c(c.IO_ERROR, !1, !1, a));
              };
              h.onopen = function() {
                k._connected = !0;
                k.dispatchEvent(new b(b.OPEN, !1, !1));
              };
              h.onhttpstatus = function(a, b, c) {
                b = new g(g.HTTP_STATUS, !1, !1, b);
                var d = [];
                c.split(/(?:\n|\r?\n)/g).forEach(function(b) {
                  if (b = /^([^:]+): (.*)$/.exec(b)) {
                    d.push(new f.net.URLRequestHeader(b[1], b[2])), "Location" === b[1] && (a = b[2]);
                  }
                });
                b.asSetPublicProperty("responseHeaders", d);
                b.asSetPublicProperty("responseURL", a);
                k.dispatchEvent(b);
              };
              h.onclose = function() {
                k._connected = !1;
                k.dispatchEvent(new b(b.COMPLETE, !1, !1));
              };
              h.open(a._toFileRequest());
              this._session = h;
            };
            e.prototype.readBytes = function(b, c, d) {
              "undefined" === typeof c && (c = 0);
              "undefined" === typeof d && (d = 0);
              c >>>= 0;
              d >>>= 0;
              0 > d && a("ArgumentError", k.Errors.InvalidArgumentError, "length");
              this._buffer.readBytes(b, c, d);
            };
            e.prototype.readBoolean = function() {
              s("public flash.net.URLStream::readBoolean");
            };
            e.prototype.readByte = function() {
              return this._buffer.readByte();
            };
            e.prototype.readUnsignedByte = function() {
              s("public flash.net.URLStream::readUnsignedByte");
            };
            e.prototype.readShort = function() {
              s("public flash.net.URLStream::readShort");
            };
            e.prototype.readUnsignedShort = function() {
              return this._buffer.readUnsignedShort();
            };
            e.prototype.readUnsignedInt = function() {
              s("public flash.net.URLStream::readUnsignedInt");
            };
            e.prototype.readInt = function() {
              s("public flash.net.URLStream::readInt");
            };
            e.prototype.readFloat = function() {
              s("public flash.net.URLStream::readFloat");
            };
            e.prototype.readDouble = function() {
              s("public flash.net.URLStream::readDouble");
            };
            e.prototype.readMultiByte = function(a, b) {
              m(b);
              s("public flash.net.URLStream::readMultiByte");
            };
            e.prototype.readUTF = function() {
              return this._buffer.readUTF();
            };
            e.prototype.readUTFBytes = function(a) {
              return this._buffer.readUTFBytes(a);
            };
            e.prototype.close = function() {
              this._session.close();
            };
            e.prototype.readObject = function() {
              s("public flash.net.URLStream::readObject");
            };
            e.prototype.stop = function() {
              s("public flash.net.URLStream::stop");
            };
            e.classInitializer = null;
            e.initializer = function() {
              this._buffer = new c.ByteArray;
              this._writePosition = 0;
              this._connected = !1;
            };
            e.classSymbols = null;
            e.instanceSymbols = null;
            return e;
          }(f.events.EventDispatcher);
          g.URLStream = n;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a) {
              k("Dummy Constructor: public flash.net.URLVariables");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = ["decode!"];
            return a;
          }(g.ASNative);
          f.URLVariables = m;
        })(f.net || (f.net = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.sensors.Accelerometer");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "isSupported", {get:function() {
              k("public flash.sensors.Accelerometer::get isSupported");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "muted", {get:function() {
              k("public flash.sensors.Accelerometer::get muted");
            }, enumerable:!0, configurable:!0});
            a.prototype.setRequestedUpdateInterval = function(a) {
              k("public flash.sensors.Accelerometer::setRequestedUpdateInterval");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.Accelerometer = m;
        })(f.sensors || (f.sensors = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.sensors.Geolocation");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "isSupported", {get:function() {
              k("public flash.sensors.Geolocation::get isSupported");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "muted", {get:function() {
              k("public flash.sensors.Geolocation::get muted");
            }, enumerable:!0, configurable:!0});
            a.prototype.setRequestedUpdateInterval = function(a) {
              k("public flash.sensors.Geolocation::setRequestedUpdateInterval");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.Geolocation = m;
        })(f.sensors || (f.sensors = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.AVM2.Runtime.AVM2, a = b.AVM2.Runtime.ApplicationDomain, c = b.AVM2.ABC.Multiname, n = function(b) {
            function e(b) {
              "undefined" === typeof b && (b = null);
              b instanceof a ? this._runtimeDomain = b : (b = b ? b._runtimeDomain : d.currentDomain().system, this._runtimeDomain = new a(b.vm, b, 2, !1));
            }
            __extends(e, b);
            Object.defineProperty(e, "currentDomain", {get:function() {
              return new e(d.currentDomain());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e, "MIN_DOMAIN_MEMORY_LENGTH", {get:function() {
              k("public flash.system.ApplicationDomain::get MIN_DOMAIN_MEMORY_LENGTH");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "parentDomain", {get:function() {
              return this._runtimeDomain.base ? new e(this._runtimeDomain.base) : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "domainMemory", {get:function() {
              k("public flash.system.ApplicationDomain::get domainMemory");
            }, set:function(a) {
              k("public flash.system.ApplicationDomain::set domainMemory");
            }, enumerable:!0, configurable:!0});
            e.prototype.getDefinition = function(a) {
              return(a = m(a)) ? (a = a.replace("::", "."), this._runtimeDomain.getProperty(c.fromSimpleName(a), !0, !0)) : null;
            };
            e.prototype.hasDefinition = function(a) {
              return(a = m(a)) ? (a = a.replace("::", "."), !!this._runtimeDomain.findDomainProperty(c.fromSimpleName(a), !1, !1)) : !1;
            };
            e.prototype.getQualifiedDefinitionNames = function() {
              k("public flash.system.ApplicationDomain::getQualifiedDefinitionNames");
            };
            e.classInitializer = null;
            e.initializer = null;
            e.classSymbols = null;
            e.instanceSymbols = null;
            return e;
          }(g.ASNative);
          f.ApplicationDomain = n;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = b.ObjectUtilities.toKeyValueArray, c = function(b) {
            function c() {
              k("Dummy Constructor: public flash.system.Capabilities");
            }
            __extends(c, b);
            Object.defineProperty(c, "isEmbeddedInAcrobat", {get:function() {
              k("public flash.system.Capabilities::get isEmbeddedInAcrobat");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasEmbeddedVideo", {get:function() {
              k("public flash.system.Capabilities::get hasEmbeddedVideo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasAudio", {get:function() {
              k("public flash.system.Capabilities::get hasAudio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "avHardwareDisable", {get:function() {
              k("public flash.system.Capabilities::get avHardwareDisable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasAccessibility", {get:function() {
              d("public flash.system.Capabilities::get hasAccessibility");
              return c._hasAccessibility;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasAudioEncoder", {get:function() {
              k("public flash.system.Capabilities::get hasAudioEncoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasMP3", {get:function() {
              k("public flash.system.Capabilities::get hasMP3");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasPrinting", {get:function() {
              k("public flash.system.Capabilities::get hasPrinting");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasScreenBroadcast", {get:function() {
              k("public flash.system.Capabilities::get hasScreenBroadcast");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasScreenPlayback", {get:function() {
              k("public flash.system.Capabilities::get hasScreenPlayback");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasStreamingAudio", {get:function() {
              k("public flash.system.Capabilities::get hasStreamingAudio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasStreamingVideo", {get:function() {
              k("public flash.system.Capabilities::get hasStreamingVideo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasVideoEncoder", {get:function() {
              k("public flash.system.Capabilities::get hasVideoEncoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "isDebugger", {get:function() {
              d("public flash.system.Capabilities::get isDebugger");
              return c._isDebugger;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "localFileReadDisable", {get:function() {
              k("public flash.system.Capabilities::get localFileReadDisable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "language", {get:function() {
              d("public flash.system.Capabilities::get language");
              return c._language;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "manufacturer", {get:function() {
              d("public flash.system.Capabilities::get manufacturer");
              return c._manufacturer;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "os", {get:function() {
              if (null === c._os) {
                var a, b = window.navigator.userAgent;
                0 < b.indexOf("Macintosh") ? a = "Mac OS 10.5.2" : 0 < b.indexOf("Windows") ? a = "Windows XP" : 0 < b.indexOf("Linux") ? a = "Linux" : /(iPad|iPhone|iPod|Android)/.test(b) ? a = "iPhone3,1" : k("public flash.system.Capabilities::get os");
                c._os = a;
              }
              return c._os;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "cpuArchitecture", {get:function() {
              k("public flash.system.Capabilities::get cpuArchitecture");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "playerType", {get:function() {
              d("public flash.system.Capabilities::get playerType");
              return c._playerType;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "serverString", {get:function() {
              var b = a({OS:c.os}).map(function(a) {
                return a[0] + "=" + encodeURIComponent(a[1]);
              }).join("&");
              d("Capabilities.serverString: " + b);
              return b;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "version", {get:function() {
              return c._version;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "screenColor", {get:function() {
              k("public flash.system.Capabilities::get screenColor");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "pixelAspectRatio", {get:function() {
              k("public flash.system.Capabilities::get pixelAspectRatio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "screenDPI", {get:function() {
              k("public flash.system.Capabilities::get screenDPI");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "screenResolutionX", {get:function() {
              d("public flash.system.Capabilities::get screenResolutionX");
              return window.screen.width;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "screenResolutionY", {get:function() {
              d("public flash.system.Capabilities::get screenResolutionY");
              return window.screen.height;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "touchscreenType", {get:function() {
              k("public flash.system.Capabilities::get touchscreenType");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasIME", {get:function() {
              k("public flash.system.Capabilities::get hasIME");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "hasTLS", {get:function() {
              k("public flash.system.Capabilities::get hasTLS");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "maxLevelIDC", {get:function() {
              k("public flash.system.Capabilities::get maxLevelIDC");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "supports32BitProcesses", {get:function() {
              k("public flash.system.Capabilities::get supports32BitProcesses");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "supports64BitProcesses", {get:function() {
              k("public flash.system.Capabilities::get supports64BitProcesses");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "_internal", {get:function() {
              k("public flash.system.Capabilities::get _internal");
            }, enumerable:!0, configurable:!0});
            c.hasMultiChannelAudio = function(a) {
              m(a);
              k("public flash.system.Capabilities::static hasMultiChannelAudio");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c._hasAccessibility = !1;
            c._isDebugger = !1;
            c._language = "en";
            c._manufacturer = "Mozilla Research";
            c._os = null;
            c._playerType = "PlugIn";
            c._version = "SHUMWAY 10,0,0,0";
            return c;
          }(g.ASNative);
          f.Capabilities = c;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function c() {
              k("Dummy Constructor: packageInternal flash.system.FSCommand");
            }
            __extends(c, a);
            c._fscommand = function(a, c) {
              a = m(a);
              c = m(c);
              console.log("FSCommand: " + a + "; " + c);
              a = a.toLowerCase();
              if ("debugger" === a) {
                debugger;
              } else {
                b.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].executeFSCommand(a, c);
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(g.ASNative);
          f.FSCommand = d;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.system.ImageDecodingPolicy");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.ON_DEMAND = "onDemand";
            a.ON_LOAD = "onLoad";
            return a;
          }(g.ASNative);
          f.ImageDecodingPolicy = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b, d) {
              k("Dummy Constructor: public flash.system.LoaderContext");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.LoaderContext = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b, d, e) {
              k("Dummy Constructor: public flash.system.JPEGLoaderContext");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.system.LoaderContext);
          g.JPEGLoaderContext = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.system.MessageChannel");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "messageAvailable", {get:function() {
              k("public flash.system.MessageChannel::get messageAvailable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "state", {get:function() {
              k("public flash.system.MessageChannel::get state");
            }, enumerable:!0, configurable:!0});
            a.prototype.send = function(a, b) {
              k("public flash.system.MessageChannel::send");
            };
            a.prototype.receive = function(a) {
              k("public flash.system.MessageChannel::receive");
            };
            a.prototype.close = function() {
              k("public flash.system.MessageChannel::close");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.MessageChannel = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.system.MessageChannelState");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.OPEN = "open";
            a.CLOSING = "closing";
            a.CLOSED = "closed";
            return a;
          }(g.ASNative);
          f.MessageChannelState = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = b.Debug.somewhatImplemented, a = function(a) {
            function f() {
              k("Dummy Constructor: public flash.system.Security");
            }
            __extends(f, a);
            Object.defineProperty(f, "exactSettings", {get:function() {
              return f._exactSettings;
            }, set:function(a) {
              f._exactSettings = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f, "disableAVM1Loading", {get:function() {
              k("public flash.system.Security::get disableAVM1Loading");
            }, set:function(a) {
              k("public flash.system.Security::set disableAVM1Loading");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f, "sandboxType", {get:function() {
              d("public flash.system.Security::get sandboxType");
              return f._sandboxType;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f, "pageDomain", {get:function() {
              d("public flash.system.Security::get pageDomain");
              var a = b.FileLoadingService.instance.resolveUrl("/").split("/");
              a.pop();
              return a.pop();
            }, enumerable:!0, configurable:!0});
            f.allowDomain = function() {
              d('public flash.system.Security::static allowDomain ["' + Array.prototype.join.call(arguments, '", "') + '"]');
            };
            f.allowInsecureDomain = function() {
              d("public flash.system.Security::static allowInsecureDomain");
            };
            f.loadPolicyFile = function(a) {
              m(a);
              d("public flash.system.Security::static loadPolicyFile");
            };
            f.showSettings = function(a) {
              "undefined" === typeof a && (a = "default");
              m(a);
              k("public flash.system.Security::static showSettings");
            };
            f.duplicateSandboxBridgeInputArguments = function(a, b) {
              k("public flash.system.Security::static duplicateSandboxBridgeInputArguments");
            };
            f.duplicateSandboxBridgeOutputArgument = function(a, b) {
              k("public flash.system.Security::static duplicateSandboxBridgeOutputArgument");
            };
            f.classInitializer = null;
            f.initializer = null;
            f.classSymbols = null;
            f.instanceSymbols = null;
            f.REMOTE = "remote";
            f.LOCAL_WITH_FILE = "localWithFile";
            f.LOCAL_WITH_NETWORK = "localWithNetwork";
            f.LOCAL_TRUSTED = "localTrusted";
            f.APPLICATION = "application";
            f._exactSettings = !1;
            f._sandboxType = "remote";
            return f;
          }(g.ASNative);
          f.Security = a;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.system.SecurityDomain");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "currentDomain", {get:function() {
              k("public flash.system.SecurityDomain::get currentDomain");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "domainID", {get:function() {
              k("public flash.system.SecurityDomain::get domainID");
            }, enumerable:!0, configurable:!0});
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.SecurityDomain = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.system.SecurityPanel");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.DEFAULT = "default";
            a.PRIVACY = "privacy";
            a.LOCAL_STORAGE = "localStorage";
            a.MICROPHONE = "microphone";
            a.CAMERA = "camera";
            a.DISPLAY = "display";
            a.SETTINGS_MANAGER = "settingsManager";
            return a;
          }(g.ASNative);
          f.SecurityPanel = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.system.TouchscreenType");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.FINGER = "finger";
            a.STYLUS = "stylus";
            a.NONE = "none";
            return a;
          }(g.ASNative);
          f.TouchscreenType = m;
        })(f.system || (f.system = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.fromNumber = function(a) {
              switch(a) {
                case 1:
                  return d.NORMAL;
                case 2:
                  return d.ADVANCED;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.NORMAL:
                  return 1;
                case d.ADVANCED:
                  return 2;
                default:
                  return-1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NORMAL = "normal";
            d.ADVANCED = "advanced";
            return d;
          }(b.ASNative);
          f.AntiAliasType = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.REGULAR = "regular";
            d.BOLD = "bold";
            d.ITALIC = "italic";
            d.BOLD_ITALIC = "boldItalic";
            return d;
          }(b.ASNative);
          f.FontStyle = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.EMBEDDED = "embedded";
            d.EMBEDDED_CFF = "embeddedCFF";
            d.DEVICE = "device";
            return d;
          }(b.ASNative);
          f.FontType = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          var s = b.Debug.somewhatImplemented, m = b.AVM2.Runtime.asCoerceString, d = f.text.FontStyle, a = f.text.FontType, c = function(c) {
            function g() {
            }
            __extends(g, c);
            g._getFontMetrics = function(a) {
              if (!this._deviceFontMetrics) {
                var b = self.navigator.userAgent;
                -1 < b.indexOf("Windows") ? this._deviceFontMetrics = g.DEVICE_FONT_METRICS_WIN : this._deviceFontMetrics = /(Macintosh|iPad|iPhone|iPod|Android)/.test(b) ? this.DEVICE_FONT_METRICS_MAC : this.DEVICE_FONT_METRICS_LINUX;
              }
              return this._deviceFontMetrics[g.resolveFontName(a)];
            };
            g.resolveFontName = function(a) {
              return "_sans" === a ? "sans-serif" : "_serif" === a ? "serif" : "_typewriter" === a ? "monospace" : a;
            };
            g.getBySymbolId = function(a) {
              return this._fontsBySymbolId[a];
            };
            g.getByName = function(b) {
              b = b.toLowerCase();
              var c = this._fontsByName[b];
              c || (c = new g, c._fontName = b, c._fontStyle = d.REGULAR, c._fontType = a.DEVICE, this._fontsByName[b] = c);
              c._fontType === a.DEVICE && (b = g._getFontMetrics(b)) && (c.ascent = b[0], c.descent = b[1], c.leading = b[2]);
              return c;
            };
            g.getDefaultFont = function() {
              return g.getByName("times roman");
            };
            g.enumerateFonts = function(a) {
              s("public flash.text.Font::static enumerateFonts");
              return g._fonts.slice();
            };
            g.registerFont = function(a) {
              s("Font.registerFont");
            };
            Object.defineProperty(g.prototype, "fontName", {get:function() {
              return this._fontName;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "fontStyle", {get:function() {
              return this._fontStyle;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "fontType", {get:function() {
              return this._fontType;
            }, enumerable:!0, configurable:!0});
            g.prototype.hasGlyphs = function(a) {
              m(a);
              s("Font#hasGlyphs");
              return!0;
            };
            g.classInitializer = function() {
              g._fonts = [];
              g._fontsBySymbolId = b.ObjectUtilities.createMap();
              g._fontsByName = b.ObjectUtilities.createMap();
              g.DEVICE_FONT_METRICS_WIN = {serif:[1, .25, 0], "sans-serif":[1, .25, 0], monospace:[1, .25, 0], "birch std":[.9167, .25, 0], "blackoak std":[1, .3333, 0], "chaparral pro":[.8333, .3333, 0], "chaparral pro light":[.8333, .3333, 0], "charlemagne std":[.9167, .25, 0], "cooper std black":[.9167, .25, 0], "giddyup std":[.8333, .3333, 0], "hobo std":[1.0833, .3333, 0], "kozuka gothic pro b":[1, .4167, 0], "kozuka gothic pro el":[1.0833, .25, 0], "kozuka gothic pro h":[1, .4167, 0], "kozuka gothic pro l":[1, 
              .3333, 0], "kozuka gothic pro m":[1.0833, .3333, 0], "kozuka gothic pro r":[1, .3333, 0], "kozuka mincho pro b":[1.0833, .25, 0], "kozuka mincho pro el":[1.0833, .25, 0], "kozuka mincho pro h":[1.1667, .25, 0], "kozuka mincho pro l":[1.0833, .25, 0], "kozuka mincho pro m":[1.0833, .25, 0], "kozuka mincho pro r":[1.0833, .25, 0], "mesquite std":[.9167, .25, 0], "minion pro cond":[1, .3333, 0], "minion pro med":[1, .3333, 0], "minion pro smbd":[1, .3333, 0], "myriad arabic":[1, .4167, 
              0], "nueva std":[.75, .25, 0], "nueva std cond":[.75, .25, 0], "ocr a std":[.8333, .25, 0], "orator std":[1.0833, .25, 0], "poplar std":[.9167, .25, 0], "prestige elite std":[.9167, .25, 0], "rosewood std regular":[.8333, .3333, 0], "stencil std":[1, .3333, 0], "trajan pro":[1, .25, 0], "kozuka gothic pr6n b":[1.4167, .4167, 0], "kozuka gothic pr6n el":[1.4167, .3333, 0], "kozuka gothic pr6n h":[1.4167, .4167, 0], "kozuka gothic pr6n l":[1.4167, .3333, 0], "kozuka gothic pr6n m":[1.5, 
              .3333, 0], "kozuka gothic pr6n r":[1.4167, .3333, 0], "kozuka mincho pr6n b":[1.3333, .3333, 0], "kozuka mincho pr6n el":[1.3333, .3333, 0], "kozuka mincho pr6n h":[1.4167, .3333, 0], "kozuka mincho pr6n l":[1.3333, .3333, 0], "kozuka mincho pr6n m":[1.3333, .3333, 0], "kozuka mincho pr6n r":[1.3333, .3333, 0], "letter gothic std":[1, .25, 0], "minion pro":[1, .3333, 0], "myriad hebrew":[.8333, .3333, 0], "myriad pro":[.9167, .25, 0], "myriad pro cond":[.9167, .25, 0], "myriad pro light":[1, 
              .25, 0], marlett:[1, 0, 0], arial:[1, .25, 0], "arabic transparent":[1, .25, 0], "arial baltic":[1, .25, 0], "arial ce":[1, .25, 0], "arial cyr":[1, .25, 0], "arial greek":[1, .25, 0], "arial tur":[1, .25, 0], batang:[.8333, .1667, 0], batangche:[.8333, .1667, 0], gungsuh:[.8333, .1667, 0], gungsuhche:[.8333, .1667, 0], "courier new":[1, .25, 0], "courier new baltic":[1, .25, 0], "courier new ce":[1, .25, 0], "courier new cyr":[1, .25, 0], "courier new greek":[1, .25, 0], "courier new tur":[1, 
              .25, 0], daunpenh:[.6667, .6667, 0], dokchampa:[1.4167, .5833, 0], "estrangelo edessa":[.75, .3333, 0], euphemia:[1.0833, .3333, 0], gautami:[1.1667, .8333, 0], vani:[1.0833, .75, 0], gulim:[.8333, .1667, 0], gulimche:[.8333, .1667, 0], dotum:[.8333, .1667, 0], dotumche:[.8333, .1667, 0], impact:[1.0833, .25, 0], "iskoola pota":[1, .3333, 0], kalinga:[1.0833, .5, 0], kartika:[1, .4167, 0], "khmer ui":[1.0833, .3333, 0], "lao ui":[1, .25, 0], latha:[1.0833, .4167, 0], "lucida console":[.75, 
              .25, 0], "malgun gothic":[1, .25, 0], mangal:[1.0833, .3333, 0], meiryo:[1.0833, .4167, 0], "meiryo ui":[1, .25, 0], "microsoft himalaya":[.5833, .4167, 0], "microsoft jhenghei":[1, .3333, 0], "microsoft yahei":[1.0833, .3333, 0], mingliu:[.8333, .1667, 0], pmingliu:[.8333, .1667, 0], mingliu_hkscs:[.8333, .1667, 0], "mingliu-extb":[.8333, .1667, 0], "pmingliu-extb":[.8333, .1667, 0], "mingliu_hkscs-extb":[.8333, .1667, 0], "mongolian baiti":[.8333, .25, 0], "ms gothic":[.8333, .1667, 
              0], "ms pgothic":[.8333, .1667, 0], "ms ui gothic":[.8333, .1667, 0], "ms mincho":[.8333, .1667, 0], "ms pmincho":[.8333, .1667, 0], "mv boli":[1.1667, .25, 0], "microsoft new tai lue":[1, .4167, 0], nyala:[.9167, .3333, 0], "microsoft phagspa":[1.0833, .25, 0], "plantagenet cherokee":[1, .4167, 0], raavi:[1.0833, .6667, 0], "segoe script":[1.0833, .5, 0], "segoe ui":[1, .25, 0], "segoe ui semibold":[1, .25, 0], "segoe ui light":[1, .25, 0], "segoe ui symbol":[1, .25, 0], shruti:[1.0833, 
              .5, 0], simsun:[.8333, .1667, 0], nsimsun:[.8333, .1667, 0], "simsun-extb":[.8333, .1667, 0], sylfaen:[1, .3333, 0], "microsoft tai le":[1, .3333, 0], "times new roman":[1, .25, 0], "times new roman baltic":[1, .25, 0], "times new roman ce":[1, .25, 0], "times new roman cyr":[1, .25, 0], "times new roman greek":[1, .25, 0], "times new roman tur":[1, .25, 0], tunga:[1.0833, .75, 0], vrinda:[1, .4167, 0], "shonar bangla":[.8333, .5, 0], "microsoft yi baiti":[.8333, .1667, 0], tahoma:[1, 
              .1667, 0], "microsoft sans serif":[1.0833, .1667, 0], "angsana new":[.9167, .4167, 0], aparajita:[.75, .4167, 0], "cordia new":[.9167, .5, 0], ebrima:[1.0833, .5, 0], gisha:[.9167, .25, 0], kokila:[.8333, .3333, 0], leelawadee:[.9167, .25, 0], "microsoft uighur":[1.0833, .5, 0], moolboran:[.6667, .6667, 0], symbol:[1, .25, 0], utsaah:[.8333, .4167, 0], vijaya:[1.0833, .25, 0], wingdings:[.9167, .25, 0], andalus:[1.3333, .4167, 0], "arabic typesetting":[.8333, .5, 0], "simplified arabic":[1.3333, 
              .5, 0], "simplified arabic fixed":[1, .4167, 0], "sakkal majalla":[.9167, .5, 0], "traditional arabic":[1.3333, .5, 0], aharoni:[.75, .25, 0], david:[.75, .25, 0], frankruehl:[.75, .25, 0], fangsong:[.8333, .1667, 0], simhei:[.8333, .1667, 0], kaiti:[.8333, .1667, 0], "browallia new":[.8333, .4167, 0], "lucida sans unicode":[1.0833, .25, 0], "arial black":[1.0833, .3333, 0], calibri:[.9167, .25, 0], cambria:[.9167, .25, 0], "cambria math":[3.0833, 2.5, 0], candara:[.9167, .25, 0], "comic sans ms":[1.0833, 
              .3333, 0], consolas:[.9167, .25, 0], constantia:[.9167, .25, 0], corbel:[.9167, .25, 0], "franklin gothic medium":[1, .3333, 0], gabriola:[1.1667, .6667, 0], georgia:[1, .25, 0], "palatino linotype":[1.0833, .3333, 0], "segoe print":[1.25, .5, 0], "trebuchet ms":[1.0833, .4167, 0], verdana:[1, .1667, 0], webdings:[1.0833, .5, 0], "lucida bright":[.9167, .25, 0], "lucida sans":[.9167, .25, 0], "lucida sans typewriter":[.9167, .25, 0], "gentium basic":[.8333, .25, 0], "dejavu serif condensed":[.9167, 
              .25, 0], arimo:[1, .25, 0], "dejavu sans condensed":[.9167, .25, 0], "dejavu sans":[.9167, .25, 0], "dejavu sans light":[.9167, .25, 0], opensymbol:[.8333, .1667, 0], "gentium book basic":[.8333, .25, 0], "dejavu sans mono":[.9167, .25, 0], "dejavu serif":[.9167, .25, 0], "calibri light":[.9167, .25, 0]};
              g.DEVICE_FONT_METRICS_MAC = {"al bayan plain":[1, .5, 0], "al bayan bold":[1, .5833, 0], "american typewriter":[.9167, .25, 0], "american typewriter bold":[.9167, .25, 0], "american typewriter condensed":[.9167, .25, 0], "american typewriter condensed bold":[.9167, .25, 0], "american typewriter condensed light":[.8333, .25, 0], "american typewriter light":[.9167, .25, 0], "andale mono":[.9167, .25, 0], "apple symbols":[.6667, .25, 0], "arial bold italic":[.9167, .25, 0], "arial bold":[.9167, 
              .25, 0], "arial italic":[.9167, .25, 0], "arial hebrew":[.75, .3333, 0], "arial hebrew bold":[.75, .3333, 0], arial:[.9167, .25, 0], "arial narrow":[.9167, .25, 0], "arial narrow bold":[.9167, .25, 0], "arial narrow bold italic":[.9167, .25, 0], "arial narrow italic":[.9167, .25, 0], "arial rounded mt bold":[.9167, .25, 0], "arial unicode ms":[1.0833, .25, 0], "avenir black":[1, .3333, 0], "avenir black oblique":[1, .3333, 0], "avenir book":[1, .3333, 0], "avenir book oblique":[1, .3333, 
              0], "avenir heavy":[1, .3333, 0], "avenir heavy oblique":[1, .3333, 0], "avenir light":[1, .3333, 0], "avenir light oblique":[1, .3333, 0], "avenir medium":[1, .3333, 0], "avenir medium oblique":[1, .3333, 0], "avenir oblique":[1, .3333, 0], "avenir roman":[1, .3333, 0], "avenir next bold":[1, .3333, 0], "avenir next bold italic":[1, .3333, 0], "avenir next demi bold":[1, .3333, 0], "avenir next demi bold italic":[1, .3333, 0], "avenir next heavy":[1, .3333, 0], "avenir next heavy italic":[1, 
              .3333, 0], "avenir next italic":[1, .3333, 0], "avenir next medium":[1, .3333, 0], "avenir next medium italic":[1, .3333, 0], "avenir next regular":[1, .3333, 0], "avenir next ultra light":[1, .3333, 0], "avenir next ultra light italic":[1, .3333, 0], "avenir next condensed bold":[1, .3333, 0], "avenir next condensed bold italic":[1, .3333, 0], "avenir next condensed demi bold":[1, .3333, 0], "avenir next condensed demi bold italic":[1, .3333, 0], "avenir next condensed heavy":[1, .3333, 
              0], "avenir next condensed heavy italic":[1, .3333, 0], "avenir next condensed italic":[1, .3333, 0], "avenir next condensed medium":[1, .3333, 0], "avenir next condensed medium italic":[1, .3333, 0], "avenir next condensed regular":[1, .3333, 0], "avenir next condensed ultra light":[1, .3333, 0], "avenir next condensed ultra light italic":[1, .3333, 0], ayuthaya:[1.0833, .3333, 0], baghdad:[.9167, .4167, 0], "bangla mn":[.9167, .6667, 0], "bangla mn bold":[.9167, .6667, 0], "bangla sangam mn":[.9167, 
              .4167, 0], "bangla sangam mn bold":[.9167, .4167, 0], baskerville:[.9167, .25, 0], "baskerville bold":[.9167, .25, 0], "baskerville bold italic":[.9167, .25, 0], "baskerville italic":[.9167, .25, 0], "baskerville semibold":[.9167, .25, 0], "baskerville semibold italic":[.9167, .25, 0], "big caslon medium":[.9167, .25, 0], "brush script mt italic":[.9167, .3333, 0], chalkboard:[1, .25, 0], "chalkboard bold":[1, .25, 0], "chalkboard se bold":[1.1667, .25, 0], "chalkboard se light":[1.1667, 
              .25, 0], "chalkboard se regular":[1.1667, .25, 0], chalkduster:[1, .25, 0], "charcoal cy":[1, .25, 0], cochin:[.9167, .25, 0], "cochin bold":[.9167, .25, 0], "cochin bold italic":[.9167, .25, 0], "cochin italic":[.9167, .25, 0], "comic sans ms":[1.0833, .25, 0], "comic sans ms bold":[1.0833, .25, 0], copperplate:[.75, .25, 0], "copperplate bold":[.75, .25, 0], "copperplate light":[.75, .25, 0], "corsiva hebrew":[.6667, .3333, 0], "corsiva hebrew bold":[.6667, .3333, 0], courier:[.75, 
              .25, 0], "courier bold":[.75, .25, 0], "courier bold oblique":[.75, .25, 0], "courier oblique":[.75, .25, 0], "courier new bold italic":[.8333, .3333, 0], "courier new bold":[.8333, .3333, 0], "courier new italic":[.8333, .3333, 0], "courier new":[.8333, .3333, 0], biaukai:[.8333, .1667, 0], damascus:[.5833, .4167, 0], "damascus bold":[.5833, .4167, 0], "decotype naskh":[1.1667, .6667, 0], "devanagari mt":[.9167, .6667, 0], "devanagari mt bold":[.9167, .6667, 0], "devanagari sangam mn":[.9167, 
              .4167, 0], "devanagari sangam mn bold":[.9167, .4167, 0], didot:[.9167, .3333, 0], "didot bold":[1, .3333, 0], "didot italic":[.9167, .25, 0], "euphemia ucas":[1.0833, .25, 0], "euphemia ucas bold":[1.0833, .25, 0], "euphemia ucas italic":[1.0833, .25, 0], "futura condensed extrabold":[1, .25, 0], "futura condensed medium":[1, .25, 0], "futura medium":[1, .25, 0], "futura medium italic":[1, .25, 0], "gb18030 bitmap":[1, .6667, 0], "geeza pro":[.9167, .3333, 0], "geeza pro bold":[.9167, 
              .3333, 0], geneva:[1, .25, 0], "geneva cy":[1, .25, 0], georgia:[.9167, .25, 0], "georgia bold":[.9167, .25, 0], "georgia bold italic":[.9167, .25, 0], "georgia italic":[.9167, .25, 0], "gill sans":[.9167, .25, 0], "gill sans bold":[.9167, .25, 0], "gill sans bold italic":[.9167, .25, 0], "gill sans italic":[.9167, .25, 0], "gill sans light":[.9167, .25, 0], "gill sans light italic":[.9167, .25, 0], "gujarati mt":[.9167, .6667, 0], "gujarati mt bold":[.9167, .6667, 0], "gujarati sangam mn":[.8333, 
              .4167, 0], "gujarati sangam mn bold":[.8333, .4167, 0], "gurmukhi mn":[.9167, .25, 0], "gurmukhi mn bold":[.9167, .25, 0], "gurmukhi sangam mn":[.9167, .3333, 0], "gurmukhi sangam mn bold":[.9167, .3333, 0], helvetica:[.75, .25, 0], "helvetica bold":[.75, .25, 0], "helvetica bold oblique":[.75, .25, 0], "helvetica light":[.75, .25, 0], "helvetica light oblique":[.75, .25, 0], "helvetica oblique":[.75, .25, 0], "helvetica neue":[.9167, .25, 0], "helvetica neue bold":[1, .25, 0], "helvetica neue bold italic":[1, 
              .25, 0], "helvetica neue condensed black":[1, .25, 0], "helvetica neue condensed bold":[1, .25, 0], "helvetica neue italic":[.9167, .25, 0], "helvetica neue light":[1, .25, 0], "helvetica neue light italic":[.9167, .25, 0], "helvetica neue medium":[1, .25, 0], "helvetica neue ultralight":[.9167, .25, 0], "helvetica neue ultralight italic":[.9167, .25, 0], herculanum:[.8333, .1667, 0], "hiragino kaku gothic pro w3":[.9167, .0833, 0], "hiragino kaku gothic pro w6":[.9167, .0833, 0], "hiragino kaku gothic pron w3":[.9167, 
              .0833, 0], "hiragino kaku gothic pron w6":[.9167, .0833, 0], "hiragino kaku gothic std w8":[.9167, .0833, 0], "hiragino kaku gothic stdn w8":[.9167, .0833, 0], "hiragino maru gothic pro w4":[.9167, .0833, 0], "hiragino maru gothic pron w4":[.9167, .0833, 0], "hiragino mincho pro w3":[.9167, .0833, 0], "hiragino mincho pro w6":[.9167, .0833, 0], "hiragino mincho pron w3":[.9167, .0833, 0], "hiragino mincho pron w6":[.9167, .0833, 0], "hiragino sans gb w3":[.9167, .0833, 0], "hiragino sans gb w6":[.9167, 
              .0833, 0], "hoefler text black":[.75, .25, 0], "hoefler text black italic":[.75, .25, 0], "hoefler text italic":[.75, .25, 0], "hoefler text ornaments":[.8333, .1667, 0], "hoefler text":[.75, .25, 0], impact:[1, .25, 0], inaimathi:[.8333, .4167, 0], "headlinea regular":[.8333, .1667, 0], "pilgi regular":[.8333, .25, 0], "gungseo regular":[.8333, .25, 0], "pcmyungjo regular":[.8333, .25, 0], "kailasa regular":[1.0833, .5833, 0], "kannada mn":[.9167, .25, 0], "kannada mn bold":[.9167, 
              .25, 0], "kannada sangam mn":[1, .5833, 0], "kannada sangam mn bold":[1, .5833, 0], "kefa bold":[.9167, .25, 0], "kefa regular":[.9167, .25, 0], "khmer mn":[1, .6667, 0], "khmer mn bold":[1, .6667, 0], "khmer sangam mn":[1.0833, .6667, 0], "kokonor regular":[1.0833, .5833, 0], krungthep:[1, .25, 0], kufistandardgk:[.9167, .5, 0], "lao mn":[.9167, .4167, 0], "lao mn bold":[.9167, .4167, 0], "lao sangam mn":[1, .3333, 0], "apple ligothic medium":[.8333, .1667, 0], "lihei pro":[.8333, 
              .1667, 0], "lisong pro":[.8333, .1667, 0], "lucida grande":[1, .25, 0], "lucida grande bold":[1, .25, 0], "malayalam mn":[1, .4167, 0], "malayalam mn bold":[1, .4167, 0], "malayalam sangam mn":[.8333, .4167, 0], "malayalam sangam mn bold":[.8333, .4167, 0], "marion bold":[.6667, .3333, 0], "marion italic":[.6667, .3333, 0], "marion regular":[.6667, .3333, 0], "marker felt thin":[.8333, .25, 0], "marker felt wide":[.9167, .25, 0], "menlo bold":[.9167, .25, 0], "menlo bold italic":[.9167, 
              .25, 0], "menlo italic":[.9167, .25, 0], "menlo regular":[.9167, .25, 0], "microsoft sans serif":[.9167, .25, 0], monaco:[1, .25, 0], "gurmukhi mt":[.8333, .4167, 0], mshtakan:[.9167, .25, 0], "mshtakan bold":[.9167, .25, 0], "mshtakan boldoblique":[.9167, .25, 0], "mshtakan oblique":[.9167, .25, 0], "myanmar mn":[1, .4167, 0], "myanmar mn bold":[1, .4167, 0], "myanmar sangam mn":[.9167, .4167, 0], nadeem:[.9167, .4167, 0], "nanum brush script":[.9167, .25, 0], nanumgothic:[.9167, .25, 
              0], "nanumgothic bold":[.9167, .25, 0], "nanumgothic extrabold":[.9167, .25, 0], nanummyeongjo:[.9167, .25, 0], "nanummyeongjo bold":[.9167, .25, 0], "nanummyeongjo extrabold":[.9167, .25, 0], "nanum pen script":[.9167, .25, 0], "optima bold":[.9167, .25, 0], "optima bold italic":[.9167, .25, 0], "optima extrablack":[1, .25, 0], "optima italic":[.9167, .25, 0], "optima regular":[.9167, .25, 0], "oriya mn":[.9167, .25, 0], "oriya mn bold":[.9167, .25, 0], "oriya sangam mn":[.8333, .4167, 
              0], "oriya sangam mn bold":[.8333, .4167, 0], osaka:[1, .25, 0], "osaka-mono":[.8333, .1667, 0], "palatino bold":[.8333, .25, 0], "palatino bold italic":[.8333, .25, 0], "palatino italic":[.8333, .25, 0], palatino:[.8333, .25, 0], papyrus:[.9167, .5833, 0], "papyrus condensed":[.9167, .5833, 0], "plantagenet cherokee":[.6667, .25, 0], raanana:[.75, .25, 0], "raanana bold":[.75, .25, 0], "hei regular":[.8333, .1667, 0], "kai regular":[.8333, .1667, 0], stfangsong:[.8333, .1667, 0], stheiti:[.8333, 
              .1667, 0], "heiti sc light":[.8333, .1667, 0], "heiti sc medium":[.8333, .1667, 0], "heiti tc light":[.8333, .1667, 0], "heiti tc medium":[.8333, .1667, 0], stkaiti:[.8333, .1667, 0], "kaiti sc black":[1.0833, .3333, 0], "kaiti sc bold":[1.0833, .3333, 0], "kaiti sc regular":[1.0833, .3333, 0], stsong:[.8333, .1667, 0], "songti sc black":[1.0833, .3333, 0], "songti sc bold":[1.0833, .3333, 0], "songti sc light":[1.0833, .3333, 0], "songti sc regular":[1.0833, .3333, 0], stxihei:[.8333, 
              .1667, 0], sathu:[.9167, .3333, 0], silom:[1, .3333, 0], "sinhala mn":[.9167, .25, 0], "sinhala mn bold":[.9167, .25, 0], "sinhala sangam mn":[1.1667, .3333, 0], "sinhala sangam mn bold":[1.1667, .3333, 0], "skia regular":[.75, .25, 0], symbol:[.6667, .3333, 0], "tahoma negreta":[1, .1667, 0], "tamil mn":[.9167, .25, 0], "tamil mn bold":[.9167, .25, 0], "tamil sangam mn":[.75, .25, 0], "tamil sangam mn bold":[.75, .25, 0], "telugu mn":[.9167, .25, 0], "telugu mn bold":[.9167, .25, 0], 
              "telugu sangam mn":[1, .5833, 0], "telugu sangam mn bold":[1, .5833, 0], thonburi:[1.0833, .25, 0], "thonburi bold":[1.0833, .25, 0], "times bold":[.75, .25, 0], "times bold italic":[.75, .25, 0], "times italic":[.75, .25, 0], "times roman":[.75, .25, 0], "times new roman bold italic":[.9167, .25, 0], "times new roman bold":[.9167, .25, 0], "times new roman italic":[.9167, .25, 0], "times new roman":[.9167, .25, 0], "trebuchet ms bold italic":[.9167, .25, 0], "trebuchet ms":[.9167, 
              .25, 0], "trebuchet ms bold":[.9167, .25, 0], "trebuchet ms italic":[.9167, .25, 0], verdana:[1, .25, 0], "verdana bold":[1, .25, 0], "verdana bold italic":[1, .25, 0], "verdana italic":[1, .25, 0], webdings:[.8333, .1667, 0], "wingdings 2":[.8333, .25, 0], "wingdings 3":[.9167, .25, 0], "yuppy sc regular":[1.0833, .3333, 0], "yuppy tc regular":[1.0833, .3333, 0], "zapf dingbats":[.8333, .1667, 0], zapfino:[1.9167, 1.5, 0]};
              g.DEVICE_FONT_METRICS_LINUX = {kacstfarsi:[1.0831, .5215, 0], meera:[.682, .4413, 0], freemono:[.8023, .2006, 0], undotum:[1.0029, .2808, 0], loma:[1.1634, .4814, 0], "century schoolbook l":[1.0029, .3209, 0], kacsttitlel:[1.0831, .5215, 0], undinaru:[1.0029, .2407, 0], ungungseo:[1.0029, .2808, 0], garuda:[1.3238, .6017, 0], rekha:[1.1232, .2808, 0], purisa:[1.1232, .5215, 0], "dejavu sans mono":[.9628, .2407, 0], vemana2000:[.8825, .8424, 0], kacstoffice:[1.0831, .5215, 0], umpush:[1.2837, 
              .682, 0], opensymbol:[.8023, .2006, 0], sawasdee:[1.1232, .4413, 0], "urw palladio l":[1.0029, .3209, 0], freeserif:[.9227, .3209, 0], kacstdigital:[1.0831, .5215, 0], "ubuntu condensed":[.9628, .2006, 0], unpilgi:[1.0029, .4413, 0], mry_kacstqurn:[1.4442, .7221, 0], "urw gothic l":[1.0029, .2407, 0], dingbats:[.8424, .1605, 0], "urw chancery l":[1.0029, .3209, 0], "phetsarath ot":[1.0831, .5215, 0], "tlwg typist":[.8825, .4012, 0], kacstletter:[1.0831, .5215, 0], utkal:[1.2035, .6418, 
              0], "dejavu sans light":[.9628, .2407, 0], norasi:[1.2436, .5215, 0], "dejavu serif condensed":[.9628, .2407, 0], kacstone:[1.2436, .6418, 0], "liberation sans narrow":[.9628, .2407, 0], symbol:[1.043, .3209, 0], nanummyeongjo:[.9227, .2407, 0], untitled1:[.682, .5616, 0], "lohit gujarati":[.9628, .4012, 0], "liberation mono":[.8424, .3209, 0], kacstart:[1.0831, .5215, 0], mallige:[1.0029, .682, 0], "bitstream charter":[1.0029, .2407, 0], nanumgothic:[.9227, .2407, 0], "liberation serif":[.9227, 
              .2407, 0], "dejavu sans condensed":[.9628, .2407, 0], ubuntu:[.9628, .2006, 0], "courier 10 pitch":[.8825, .3209, 0], "nimbus sans l":[.9628, .3209, 0], takaopgothic:[.8825, .2006, 0], "wenquanyi micro hei mono":[.9628, .2407, 0], "dejavu sans":[.9628, .2407, 0], kedage:[1.0029, .682, 0], kinnari:[1.3238, .5215, 0], tlwgmono:[.8825, .4012, 0], "standard symbols l":[1.043, .3209, 0], "lohit punjabi":[1.2035, .682, 0], "nimbus mono l":[.8424, .2808, 0], rachana:[.682, .5616, 0], waree:[1.2436, 
              .4413, 0], kacstposter:[1.0831, .5215, 0], "khmer os":[1.2837, .7622, 0], freesans:[1.0029, .3209, 0], gargi:[.9628, .2808, 0], "nimbus roman no9 l":[.9628, .3209, 0], "dejavu serif":[.9628, .2407, 0], "wenquanyi micro hei":[.9628, .2407, 0], "ubuntu light":[.9628, .2006, 0], tlwgtypewriter:[.9227, .4012, 0], kacstpen:[1.0831, .5215, 0], "tlwg typo":[.8825, .4012, 0], "mukti narrow":[1.2837, .4413, 0], "ubuntu mono":[.8424, .2006, 0], "lohit bengali":[1.0029, .4413, 0], "liberation sans":[.9227, 
              .2407, 0], unbatang:[1.0029, .2808, 0], kacstdecorative:[1.1232, .5215, 0], "khmer os system":[1.2436, .6017, 0], saab:[1.0029, .682, 0], kacsttitle:[1.0831, .5215, 0], "mukti narrow bold":[1.2837, .4413, 0], "lohit hindi":[1.0029, .5215, 0], kacstqurn:[1.0831, .5215, 0], "urw bookman l":[.9628, .2808, 0], kacstnaskh:[1.0831, .5215, 0], kacstscreen:[1.0831, .5215, 0], pothana2000:[.8825, .8424, 0], ungraphic:[1.0029, .2808, 0], "lohit tamil":[.8825, .361, 0], kacstbook:[1.0831, .5215, 
              0]};
              g.DEVICE_FONT_METRICS_MAC.__proto__ = g.DEVICE_FONT_METRICS_WIN;
              g.DEVICE_FONT_METRICS_LINUX.__proto__ = g.DEVICE_FONT_METRICS_MAC;
            };
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.initializer = function(b) {
              this._id = f.display.DisplayObject.getNextSyncID();
              this._fontType = this._fontStyle = this._fontName = null;
              this.leading = this.descent = this.ascent = 0;
              this.advances = null;
              if (b) {
                this._symbol = b;
                this._fontName = b.name;
                this._fontStyle = b.bold ? b.italic ? d.BOLD_ITALIC : d.BOLD : b.italic ? d.ITALIC : d.REGULAR;
                var c = b.metrics;
                c && (this.ascent = c.ascent, this.descent = c.descent, this.leading = c.leading, this.advances = c.advances);
                this._fontType = b.data ? a.EMBEDDED : a.DEVICE;
                g._fontsBySymbolId[b.id] = this;
                g._fontsByName[b.name.toLowerCase()] = this;
                g._fontsByName["swffont" + b.id] = this;
              }
            };
            return g;
          }(g.ASNative);
          k.Font = c;
        })(f.text || (f.text = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return d.NONE;
                case 1:
                  return d.PIXEL;
                case 2:
                  return d.SUBPIXEL;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.NONE:
                  return 0;
                case d.PIXEL:
                  return 1;
                case d.SUBPIXEL:
                  return 2;
                default:
                  return-1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NONE = "none";
            d.PIXEL = "pixel";
            d.SUBPIXEL = "subpixel";
            return d;
          }(b.ASNative);
          f.GridFitType = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(b) {
        (function(g) {
          var k = function(g) {
            function d() {
              b.display.DisplayObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(d, g);
            d.prototype._canHaveTextContent = function() {
              return!0;
            };
            d.prototype._getTextContent = function() {
              return this._textContent;
            };
            Object.defineProperty(d.prototype, "text", {get:function() {
              return this._textContent.plainText;
            }, enumerable:!0, configurable:!0});
            d.classInitializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.initializer = function(a) {
              this._textContent = null;
              a && this._setStaticContentFromSymbol(a);
            };
            return d;
          }(b.display.DisplayObject);
          g.StaticText = k;
        })(b.text || (b.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.text.StyleSheet");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.StyleSheet = m;
        })(f.text || (f.text = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.LCD = "lcd";
            d.CRT = "crt";
            d.DEFAULT = "default";
            return d;
          }(b.ASNative);
          f.TextDisplayMode = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.Debug.notImplemented, m = b.Debug.assert, d = b.Debug.somewhatImplemented, a = b.AVM2.Runtime.throwError, c = b.AVM2.Runtime.asCoerceString, n = b.NumberUtilities.clamp, p = function(e) {
            function p() {
              e.call(this);
              s("Dummy Constructor: public flash.text.TextField");
            }
            __extends(p, e);
            p.prototype._setFillAndLineBoundsFromSymbol = function(a) {
              e.prototype._setFillAndLineBoundsFromSymbol.call(this, a);
              this._textContent.bounds = this._lineBounds;
              this._invalidateContent();
            };
            p.prototype._setFillAndLineBoundsFromWidthAndHeight = function(a, b) {
              e.prototype._setFillAndLineBoundsFromWidthAndHeight.call(this, a, b);
              this._textContent.bounds = this._lineBounds;
              this._invalidateContent();
            };
            p.prototype._canHaveTextContent = function() {
              return!0;
            };
            p.prototype._getTextContent = function() {
              return this._textContent;
            };
            p.prototype._getContentBounds = function(a) {
              "undefined" === typeof a && (a = !0);
              this._ensureLineMetrics();
              return e.prototype._getContentBounds.call(this, a);
            };
            p.prototype._containsPointDirectly = function(a, b) {
              m(this._getContentBounds().contains(a, b));
              return!0;
            };
            p.prototype._invalidateContent = function() {
              this._textContent.flags & b.TextContentFlags.Dirty && this._setFlags(8388608);
            };
            p.isFontCompatible = function(a, b) {
              c(a);
              c(b);
              d("flash.text.TextField.isFontCompatible");
              return!0;
            };
            Object.defineProperty(p.prototype, "alwaysShowSelection", {get:function() {
              return this._alwaysShowSelection;
            }, set:function(a) {
              d("public flash.text.TextField::set alwaysShowSelection");
              this._alwaysShowSelection = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "antiAliasType", {get:function() {
              return this._antiAliasType;
            }, set:function(b) {
              d("public flash.text.TextField::set antiAliasType");
              b = c(b);
              0 > g.AntiAliasType.toNumber(b) && a("ArgumentError", k.Errors.InvalidParamError, "antiAliasType");
              this._antiAliasType = b;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "autoSize", {get:function() {
              return this._autoSize;
            }, set:function(b) {
              b = c(b);
              b !== this._autoSize && (0 > g.TextFieldAutoSize.toNumber(b) && a("ArgumentError", k.Errors.InvalidParamError, "autoSize"), this._autoSize = b, this._textContent.autoSize = g.TextFieldAutoSize.toNumber(b), this._invalidateContent());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "background", {get:function() {
              return this._background;
            }, set:function(a) {
              a = !!a;
              a !== this._background && (this._background = a, this._textContent.backgroundColor = a ? this._backgroundColor : 0, this._setDirtyFlags(8388608));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "backgroundColor", {get:function() {
              return this._backgroundColor >> 8;
            }, set:function(a) {
              a = (a << 8 | 255) >>> 0;
              a !== this._backgroundColor && (this._backgroundColor = a, this._background && (this._textContent.backgroundColor = a, this._setDirtyFlags(8388608)));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "border", {get:function() {
              return this._border;
            }, set:function(a) {
              a = !!a;
              a !== this._border && (this._border = a, this._textContent.borderColor = a ? this._borderColor : 0, this._setDirtyFlags(8388608));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "borderColor", {get:function() {
              return this._borderColor >> 8;
            }, set:function(a) {
              a = (a << 8 | 255) >>> 0;
              a !== this._borderColor && (this._borderColor = a, this._border && (this._textContent.borderColor = a, this._setDirtyFlags(8388608)));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "bottomScrollV", {get:function() {
              s("public flash.text.TextField::get bottomScrollV");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "caretIndex", {get:function() {
              s("public flash.text.TextField::get caretIndex");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "condenseWhite", {get:function() {
              d("public flash.text.TextField::get condenseWhite");
              return this._condenseWhite;
            }, set:function(a) {
              this._condenseWhite = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "defaultTextFormat", {get:function() {
              return this._textContent.defaultTextFormat.clone();
            }, set:function(a) {
              this._textContent.defaultTextFormat.merge(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "embedFonts", {get:function() {
              return this._embedFonts;
            }, set:function(a) {
              this._embedFonts = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "gridFitType", {get:function() {
              d("public flash.text.TextField::get gridFitType");
              return this._gridFitType;
            }, set:function(a) {
              a = c(a);
              m(0 <= f.text.GridFitType.toNumber(a));
              d("public flash.text.TextField::set gridFitType");
              this._gridFitType = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "htmlText", {get:function() {
              return this._htmlText;
            }, set:function(a) {
              d("public flash.text.TextField::set htmlText");
              a = c(a);
              this._symbol && (this._textContent.defaultTextFormat.bold = !1, this._textContent.defaultTextFormat.italic = !1);
              this._textContent.parseHtml(a, this._multiline);
              this._htmlText = a;
              this._invalidateContent();
              this._ensureLineMetrics();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "length", {get:function() {
              return this._length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "textInteractionMode", {get:function() {
              s("public flash.text.TextField::get textInteractionMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "maxChars", {get:function() {
              return this._maxChars;
            }, set:function(a) {
              this._maxChars = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "maxScrollH", {get:function() {
              return this._maxScrollH;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "maxScrollV", {get:function() {
              return this._maxScrollV;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "mouseWheelEnabled", {get:function() {
              return this._mouseWheelEnabled;
            }, set:function(a) {
              d("public flash.text.TextField::set mouseWheelEnabled");
              this._mouseWheelEnabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "multiline", {get:function() {
              return this._multiline;
            }, set:function(a) {
              this._multiline = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "numLines", {get:function() {
              return this._numLines;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "displayAsPassword", {get:function() {
              return this._displayAsPassword;
            }, set:function(a) {
              d("public flash.text.TextField::set displayAsPassword");
              this._displayAsPassword = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "restrict", {get:function() {
              return this._restrict;
            }, set:function(a) {
              d("public flash.text.TextField::set restrict");
              this._restrict = c(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "scrollH", {get:function() {
              d("public flash.text.TextField::get scrollH");
              return this._scrollH;
            }, set:function(a) {
              a |= 0;
              d("public flash.text.TextField::set scrollH");
              this._scrollH = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "scrollV", {get:function() {
              d("public flash.text.TextField::get scrollV");
              return this._scrollV;
            }, set:function(a) {
              a |= 0;
              d("public flash.text.TextField::set scrollV");
              this._scrollV = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "selectable", {get:function() {
              return this._selectable;
            }, set:function(a) {
              d("public flash.text.TextField::set selectable");
              this._selectable = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "selectionBeginIndex", {get:function() {
              return this._selectionBeginIndex;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "selectionEndIndex", {get:function() {
              return this._selectionEndIndex;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "sharpness", {get:function() {
              return this._sharpness;
            }, set:function(a) {
              this._sharpness = n(+a, -400, 400);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "styleSheet", {get:function() {
              s("public flash.text.TextField::get styleSheet");
            }, set:function(a) {
              s("public flash.text.TextField::set styleSheet");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "text", {get:function() {
              return this._textContent.plainText;
            }, set:function(a) {
              d("public flash.text.TextField::set text");
              this._textContent.plainText = c(a);
              this._invalidateContent();
              this._ensureLineMetrics();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "textColor", {get:function() {
              return 0 > this._textColor ? +this._textContent.defaultTextFormat.color : this._textColor;
            }, set:function(a) {
              this._textColor = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "textHeight", {get:function() {
              this._ensureLineMetrics();
              return this._textHeight / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "textWidth", {get:function() {
              this._ensureLineMetrics();
              return this._textWidth / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "thickness", {get:function() {
              return this._thickness;
            }, set:function(a) {
              this._thickness = n(+a, -200, 200);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              this._type = c(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "wordWrap", {get:function() {
              return this._textContent.wordWrap;
            }, set:function(a) {
              a = !!a;
              a !== this._textContent.wordWrap && (this._textContent.wordWrap = !!a, this._invalidateContent());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "useRichTextClipboard", {get:function() {
              s("public flash.text.TextField::get useRichTextClipboard");
            }, set:function(a) {
              s("public flash.text.TextField::set useRichTextClipboard");
            }, enumerable:!0, configurable:!0});
            p.prototype._ensureLineMetrics = function() {
              if (this._hasFlags(8388608)) {
                var a = b.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].syncDisplayObject(this, !1), c = a.readInt(), d = a.readInt(), e = a.readInt();
                this._autoSize !== g.TextFieldAutoSize.NONE && (this._fillBounds.xMin = this._lineBounds.xMin = e, this._fillBounds.xMax = this._lineBounds.xMax = e + c + 80, this._fillBounds.yMax = this._lineBounds.yMax = this._lineBounds.yMin + d + 80);
                this._textWidth = c;
                this._textHeight = d;
                this._numLines = a.readInt();
                this._lineMetricsData = a;
              }
            };
            p.prototype.getCharBoundaries = function(a) {
              s("public flash.text.TextField::getCharBoundaries");
            };
            p.prototype.getCharIndexAtPoint = function(a, b) {
              s("public flash.text.TextField::getCharIndexAtPoint");
            };
            p.prototype.getFirstCharInParagraph = function(a) {
              s("public flash.text.TextField::getFirstCharInParagraph");
            };
            p.prototype.getLineIndexAtPoint = function(a, b) {
              s("public flash.text.TextField::getLineIndexAtPoint");
            };
            p.prototype.getLineIndexOfChar = function(a) {
              s("public flash.text.TextField::getLineIndexOfChar");
            };
            p.prototype.getLineLength = function(a) {
              s("public flash.text.TextField::getLineLength");
            };
            p.prototype.getLineMetrics = function() {
              var b;
              b = 0;
              (0 > b || b > this._numLines - 1) && a("RangeError", k.Errors.ParamRangeError);
              this._ensureLineMetrics();
              var c = this._lineMetricsData;
              c.position = 12 + 20 * b;
              b = c.readInt();
              var d = c.readInt(), e = c.readInt(), h = c.readInt(), c = c.readInt();
              return new g.TextLineMetrics(b, d, e + h + c, e, h, c);
            };
            p.prototype.getLineOffset = function(a) {
              s("public flash.text.TextField::getLineOffset");
            };
            p.prototype.getLineText = function(a) {
              s("public flash.text.TextField::getLineText");
            };
            p.prototype.getParagraphLength = function(a) {
              s("public flash.text.TextField::getParagraphLength");
            };
            p.prototype.getTextFormat = function(a, b) {
              s("public flash.text.TextField::getTextFormat");
            };
            p.prototype.getTextRuns = function(a, b) {
              "undefined" === typeof a && (a = 0);
              "undefined" === typeof b && (b = 2147483647);
              for (var c = this._textContent.textRuns, d = [], h = 0;h < c.length;h++) {
                var e = c[h];
                e.beginIndex >= a && e.endIndex <= b && d.push(e.clone());
              }
              return d;
            };
            p.prototype.getRawText = function() {
              s("public flash.text.TextField::getRawText");
            };
            p.prototype.replaceSelectedText = function(a) {
              s("public flash.text.TextField::replaceSelectedText");
            };
            p.prototype.replaceText = function(a, b, c) {
              a |= 0;
              b |= 0;
              c = "" + c;
              d("public flash.text.TextField::replaceText");
              var e = this._textContent.plainText;
              this._textContent.plainText = e.substring(0, a) + c + e.substring(b);
              this._invalidateContent();
              this._ensureLineMetrics();
            };
            p.prototype.setSelection = function(a, b) {
              d("public flash.text.TextField::setSelection");
              this._selectionBeginIndex = a | 0;
              this._selectionEndIndex = b | 0;
            };
            p.prototype.setTextFormat = function(a, b, c) {
              d("public flash.text.TextField::setTextFormat");
            };
            p.prototype.getImageReference = function(a) {
              s("public flash.text.TextField::getImageReference");
            };
            p.classSymbols = null;
            p.instanceSymbols = null;
            p.classInitializer = null;
            p.initializer = function(a) {
              this._alwaysShowSelection = !1;
              this._antiAliasType = g.AntiAliasType.NORMAL;
              this._autoSize = g.TextFieldAutoSize.NONE;
              this._background = !1;
              this._backgroundColor = 4294967295;
              this._border = !1;
              this._borderColor = 255;
              this._bottomScrollV = 1;
              this._caretIndex = 0;
              this._embedFonts = this._condenseWhite = !1;
              this._gridFitType = g.GridFitType.PIXEL;
              this._htmlText = "";
              this._length = 0;
              this._textInteractionMode = g.TextInteractionMode.NORMAL;
              this._maxScrollH = this._maxChars = 0;
              this._maxScrollV = 1;
              this._multiline = this._mouseWheelEnabled = !1;
              this._numLines = 1;
              this._displayAsPassword = !1;
              this._restrict = null;
              this._scrollH = 0;
              this._scrollV = 1;
              this._selectable = !0;
              this._selectedText = "";
              this._sharpness = this._selectionEndIndex = this._selectionBeginIndex = 0;
              this._styleSheet = null;
              this._textColor = -1;
              this._thickness = this._textWidth = this._textHeight = 0;
              this._type = g.TextFieldType.DYNAMIC;
              this._useRichTextClipboard = !1;
              var c = new f.text.TextFormat("Times Roman", 12, 0, !1, !1, !1, "", "", g.TextFormatAlign.LEFT);
              this._textContent = new b.TextContent(c);
              this._lineMetricsData = null;
              a ? (this._setFillAndLineBoundsFromSymbol(a), c.color = a.color, c.size = a.size / 20 | 0, c.font = a.font, c.align = a.align, c.leftMargin = a.leftMargin / 20 | 0, c.rightMargin = a.rightMargin / 20 | 0, c.indent = a.indent / 20 | 0, c.leading = a.leading / 20 | 0, this._multiline = a.multiline, this._embedFonts = a.embedFonts, this._selectable = a.selectable, this._displayAsPassword = a.displayAsPassword, this._type = a.type, this._maxChars = a.maxChars, a.border && (this.border = 
              this.background = !0), a.html ? this.htmlText = a.initialText : this.text = a.initialText, this.wordWrap = a.wordWrap, this.autoSize = a.autoSize) : this._setFillAndLineBoundsFromWidthAndHeight(2E3, 2E3);
            };
            return p;
          }(f.display.InteractiveObject);
          g.TextField = p;
        })(f.text || (f.text = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return d.NONE;
                case 1:
                  return d.CENTER;
                case 2:
                  return d.LEFT;
                case 3:
                  return d.RIGHT;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.NONE:
                  return 0;
                case d.CENTER:
                  return 1;
                case d.LEFT:
                  return 2;
                case d.RIGHT:
                  return 3;
                default:
                  return-1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NONE = "none";
            d.LEFT = "left";
            d.CENTER = "center";
            d.RIGHT = "right";
            return d;
          }(b.ASNative);
          f.TextFieldAutoSize = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.INPUT = "input";
            d.DYNAMIC = "dynamic";
            return d;
          }(b.ASNative);
          f.TextFieldType = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(t) {
          var s = b.AVM2.Runtime.asCoerceString, m = b.NumberUtilities.roundHalfEven, d = b.AVM2.Runtime.throwError, a = function(a) {
            function b(a, c, d, f, g, k, m, h, n, s, t, I, C) {
              "undefined" === typeof a && (a = null);
              "undefined" === typeof c && (c = null);
              "undefined" === typeof d && (d = null);
              "undefined" === typeof f && (f = null);
              "undefined" === typeof g && (g = null);
              "undefined" === typeof k && (k = null);
              "undefined" === typeof m && (m = null);
              "undefined" === typeof h && (h = null);
              "undefined" === typeof n && (n = null);
              "undefined" === typeof s && (s = null);
              "undefined" === typeof t && (t = null);
              "undefined" === typeof I && (I = null);
              "undefined" === typeof C && (C = null);
              this.font = a;
              this.size = c;
              this.color = d;
              this.bold = f;
              this.italic = g;
              this.underline = k;
              this.url = m;
              this.target = h;
              this.align = n;
              this.leftMargin = s;
              this.rightMargin = t;
              this.indent = I;
              this.leading = C;
            }
            __extends(b, a);
            b.prototype.as2GetTextExtent = function(a, c) {
              b.measureTextField || (b.measureTextField = new f.text.TextField, b.measureTextField._multiline = !0);
              var d = b.measureTextField;
              !isNaN(c) && 0 < c ? (d.width = c + 4, d._wordWrap = !0) : d._wordWrap = !1;
              d.defaultTextFormat = this;
              d.text = a;
              var g = {}, k = d.textWidth, m = d.textHeight;
              g.asSetPublicProperty("width", k);
              g.asSetPublicProperty("height", m);
              g.asSetPublicProperty("textFieldWidth", k + 4);
              g.asSetPublicProperty("textFieldHeight", m + 4);
              d = d.getLineMetrics();
              g.asSetPublicProperty("ascent", d.ascent);
              g.asSetPublicProperty("descent", d.descent);
              return g;
            };
            Object.defineProperty(b.prototype, "align", {get:function() {
              return this._align;
            }, set:function(a) {
              this._align = a = s(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "blockIndent", {get:function() {
              return this._blockIndent;
            }, set:function(a) {
              this._blockIndent = b.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "bold", {get:function() {
              return this._bold;
            }, set:function(a) {
              this._bold = b.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "bullet", {get:function() {
              return this._bullet;
            }, set:function(a) {
              this._bullet = b.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = +a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "display", {get:function() {
              return this._display;
            }, set:function(a) {
              this._display = s(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "font", {get:function() {
              return this._font;
            }, set:function(a) {
              this._font = s(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "indent", {get:function() {
              return this._indent;
            }, set:function(a) {
              this._indent = b.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "italic", {get:function() {
              return this._italic;
            }, set:function(a) {
              this._italic = b.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "kerning", {get:function() {
              return this._kerning;
            }, set:function(a) {
              this._kerning = b.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "leading", {get:function() {
              return this._leading;
            }, set:function(a) {
              this._leading = b.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "leftMargin", {get:function() {
              return this._leftMargin;
            }, set:function(a) {
              this._leftMargin = b.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "letterSpacing", {get:function() {
              return this._letterSpacing;
            }, set:function(a) {
              this._letterSpacing = b.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "rightMargin", {get:function() {
              return this._rightMargin;
            }, set:function(a) {
              this._rightMargin = b.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "size", {get:function() {
              return this._size;
            }, set:function(a) {
              this._size = b.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "tabStops", {get:function() {
              return this._tabStops;
            }, set:function(a) {
              a instanceof Array || d("ArgumentError", k.Errors.CheckTypeFailedError, a, "Array");
              this._tabStops = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "target", {get:function() {
              return this._target;
            }, set:function(a) {
              this._target = s(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "underline", {get:function() {
              return this._underline;
            }, set:function(a) {
              this._underline = b.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "url", {get:function() {
              return this._url;
            }, set:function(a) {
              this._url = s(a);
            }, enumerable:!0, configurable:!0});
            b.coerceNumber = function(a) {
              return void 0 == a ? null : isNaN(a) || 268435455 < a ? -2147483648 : m(a);
            };
            b.coerceBoolean = function(a) {
              return void 0 == a ? null : !!a;
            };
            b.prototype.clone = function() {
              return new f.text.TextFormat(this.font, this.size, this.color, this.bold, this.italic, this.underline, this.url, this.target, this.align, this.leftMargin, this.rightMargin, this.indent, this.leading);
            };
            b.prototype.equals = function(a) {
              return this._align === a._align && this._blockIndent === a._blockIndent && this._bold === a._bold && this._bullet === a._bullet && this._color === a._color && this._display === a._display && this._font === a._font && this._indent === a._indent && this._italic === a._italic && this._kerning === a._kerning && this._leading === a._leading && this._leftMargin === a._leftMargin && this._letterSpacing === a._letterSpacing && this._rightMargin === a._rightMargin && this._size === a._size && 
              this._tabStops === a._tabStops && this._target === a._target && this._underline === a._underline && this._url === a._url;
            };
            b.prototype.merge = function(a) {
              null !== a._align && (this._align = a._align);
              null !== a._blockIndent && (this._blockIndent = a._blockIndent);
              null !== a._bold && (this._bold = a._bold);
              null !== a._bullet && (this._bullet = a._bullet);
              null !== a._color && (this._color = a._color);
              null !== a._display && (this._display = a._display);
              null !== a._font && (this._font = a._font);
              null !== a._indent && (this._indent = a._indent);
              null !== a._italic && (this._italic = a._italic);
              null !== a._kerning && (this._kerning = a._kerning);
              null !== a._leading && (this._leading = a._leading);
              null !== a._leftMargin && (this._leftMargin = a._leftMargin);
              null !== a._letterSpacing && (this._letterSpacing = a._letterSpacing);
              null !== a._rightMargin && (this._rightMargin = a._rightMargin);
              null !== a._size && (this._size = a._size);
              null !== a._tabStops && (this._tabStops = a._tabStops);
              null !== a._target && (this._target = a._target);
              null !== a._underline && (this._underline = a._underline);
              null !== a._url && (this._url = a._url);
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          t.TextFormat = a;
        })(f.text || (f.text = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return d.LEFT;
                case 1:
                  return d.RIGHT;
                case 2:
                  return d.CENTER;
                case 3:
                  return d.JUSTIFY;
                case 4:
                  return d.START;
                case 5:
                  return d.END;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.LEFT:
                  return 0;
                case d.RIGHT:
                  return 1;
                case d.CENTER:
                  return 2;
                case d.JUSTIFY:
                  return 3;
                case d.START:
                  return 4;
                case d.END:
                  return 5;
                default:
                  return-1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.LEFT = "left";
            d.CENTER = "center";
            d.RIGHT = "right";
            d.JUSTIFY = "justify";
            d.START = "start";
            d.END = "end";
            return d;
          }(b.ASNative);
          f.TextFormatAlign = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.INLINE = "inline";
            d.BLOCK = "block";
            return d;
          }(b.ASNative);
          f.TextFormatDisplay = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(f) {
          var k = function(b) {
            function d() {
              b.call(this);
            }
            __extends(d, b);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NORMAL = "normal";
            d.SELECTION = "selection";
            return d;
          }(b.ASNative);
          f.TextInteractionMode = k;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b, d, e, f, g) {
              k("Dummy Constructor: public flash.text.TextLineMetrics");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.TextLineMetrics = m;
        })(f.text || (f.text = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        (function(k) {
          var s = function(b) {
            function d(a, b, d) {
              this._beginIndex = a | 0;
              this._endIndex = b | 0;
              this._textFormat = d;
            }
            __extends(d, b);
            Object.defineProperty(d.prototype, "beginIndex", {get:function() {
              return this._beginIndex;
            }, set:function(a) {
              this._beginIndex = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "endIndex", {get:function() {
              return this._endIndex;
            }, set:function(a) {
              this._endIndex = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "textFormat", {get:function() {
              return this._textFormat;
            }, set:function(a) {
              this._textFormat = a;
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new f.text.TextRun(this.beginIndex, this.endIndex, this.textFormat);
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(b.ASNative);
          k.TextRun = s;
        })(f.text || (f.text = {}));
      })(b.flash || (b.flash = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b() {
              k("Dummy Constructor: public flash.text.TextSnapshot");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "charCount", {get:function() {
              k("public flash.text.TextSnapshot::get charCount");
            }, enumerable:!0, configurable:!0});
            b.prototype.findText = function(a, b, c) {
              m(b);
              k("public flash.text.TextSnapshot::findText");
            };
            b.prototype.getSelected = function(a, b) {
              k("public flash.text.TextSnapshot::getSelected");
            };
            b.prototype.getSelectedText = function(a) {
              k("public flash.text.TextSnapshot::getSelectedText");
            };
            b.prototype.getText = function(a, b, c) {
              k("public flash.text.TextSnapshot::getText");
            };
            b.prototype.getTextRunInfo = function(a, b) {
              k("public flash.text.TextSnapshot::getTextRunInfo");
            };
            b.prototype.hitTestTextNearPos = function(a, b, c) {
              k("public flash.text.TextSnapshot::hitTestTextNearPos");
            };
            b.prototype.setSelectColor = function(a) {
              k("public flash.text.TextSnapshot::setSelectColor");
            };
            b.prototype.setSelected = function(a, b, c) {
              k("public flash.text.TextSnapshot::setSelected");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.TextSnapshot = d;
        })(f.text || (f.text = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.trace.Trace");
            }
            __extends(a, b);
            a.setLevel = function(a, b) {
              k("public flash.trace.Trace::static setLevel");
            };
            a.getLevel = function(a) {
              k("public flash.trace.Trace::static getLevel");
            };
            a.setListener = function(a) {
              k("public flash.trace.Trace::static setListener");
            };
            a.getListener = function() {
              k("public flash.trace.Trace::static getListener");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.OFF = void 0;
            a.METHODS = 1;
            a.METHODS_WITH_ARGS = 2;
            a.METHODS_AND_LINES = 3;
            a.METHODS_AND_LINES_WITH_ARGS = 4;
            a.FILE = 1;
            a.LISTENER = 2;
            return a;
          }(g.ASNative);
          f.Trace = m;
        })(f.trace || (f.trace = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.Debug.somewhatImplemented, d = function(a) {
            function b() {
              k("Dummy Constructor: public flash.ui.ContextMenu");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "builtInItems", {get:function() {
              m("public flash.ui.ContextMenu::get builtInItems");
              return this._builtInItems;
            }, set:function(a) {
              m("public flash.ui.ContextMenu::set builtInItems");
              this._builtInItems = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "customItems", {get:function() {
              m("public flash.ui.ContextMenu::get customItems");
              return this._customItems;
            }, set:function(a) {
              m("public flash.ui.ContextMenu::set customItems");
              this._customItems = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "link", {get:function() {
              k("public flash.ui.ContextMenu::get link");
            }, set:function(a) {
              k("public flash.ui.ContextMenu::set link");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "clipboardMenu", {get:function() {
              k("public flash.ui.ContextMenu::get clipboardMenu");
            }, set:function(a) {
              k("public flash.ui.ContextMenu::set clipboardMenu");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "clipboardItems", {get:function() {
              k("public flash.ui.ContextMenu::get clipboardItems");
            }, set:function(a) {
              k("public flash.ui.ContextMenu::set clipboardItems");
            }, enumerable:!0, configurable:!0});
            b.prototype.cloneLinkAndClipboardProperties = function(a) {
              k("public flash.ui.ContextMenu::cloneLinkAndClipboardProperties");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.display.NativeMenu);
          g.ContextMenu = d;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.ContextMenuBuiltInItems");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.ContextMenuBuiltInItems = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.ContextMenuClipboardItems");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.ContextMenuClipboardItems = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.AVM2.Runtime.asCoerceString, m = function(b) {
            function a(a, b, d, e) {
              "undefined" === typeof b && (b = !1);
              "undefined" === typeof d && (d = !0);
              "undefined" === typeof e && (e = !0);
              this._caption = (a = k(a)) ? a : "";
              this._separatorBefore = !!b;
              this._enabled = !!d;
              this._visible = !!e;
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "caption", {get:function() {
              return this._caption;
            }, set:function(a) {
              this._caption = a = k(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "separatorBefore", {get:function() {
              return this._separatorBefore;
            }, set:function(a) {
              this._separatorBefore = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "visible", {get:function() {
              return this._visible;
            }, set:function(a) {
              this._visible = !!a;
            }, enumerable:!0, configurable:!0});
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.display.NativeMenuItem);
          g.ContextMenuItem = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var s = b.Debug.somewhatImplemented, m = b.Debug.notImplemented, d = b.AVM2.Runtime.throwError, a = function(a) {
            function b() {
              m("Dummy Constructor: public flash.ui.GameInput");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "numDevices", {get:function() {
              s("public flash.ui.GameInput::get numDevices");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "isSupported", {get:function() {
              s("public flash.ui.GameInput::get isSupported");
              return!1;
            }, enumerable:!0, configurable:!0});
            b.getDeviceAt = function(a) {
              s("public flash.ui.GameInput::static getDeviceAt");
              d("RangeError", k.Errors.ParamRangeError, "index");
              return null;
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(f.events.EventDispatcher);
          g.GameInput = a;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.GameInputControl");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "numValues", {get:function() {
              k("public flash.ui.GameInputControl::get numValues");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "index", {get:function() {
              k("public flash.ui.GameInputControl::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "relative", {get:function() {
              k("public flash.ui.GameInputControl::get relative");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "type", {get:function() {
              k("public flash.ui.GameInputControl::get type");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "hand", {get:function() {
              k("public flash.ui.GameInputControl::get hand");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "finger", {get:function() {
              k("public flash.ui.GameInputControl::get finger");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "device", {get:function() {
              k("public flash.ui.GameInputControl::get device");
            }, enumerable:!0, configurable:!0});
            a.prototype.getValueAt = function(a) {
              k("public flash.ui.GameInputControl::getValueAt");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.events.EventDispatcher);
          g.GameInputControl = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.GameInputControlType");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.MOVEMENT = "movement";
            a.ROTATION = "rotation";
            a.DIRECTION = "direction";
            a.ACCELERATION = "acceleration";
            a.BUTTON = "button";
            a.TRIGGER = "trigger";
            return a;
          }(g.ASNative);
          f.GameInputControlType = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.GameInputDevice");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "numControls", {get:function() {
              k("public flash.ui.GameInputDevice::get numControls");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "sampleInterval", {get:function() {
              k("public flash.ui.GameInputDevice::get sampleInterval");
            }, set:function(a) {
              k("public flash.ui.GameInputDevice::set sampleInterval");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "enabled", {get:function() {
              k("public flash.ui.GameInputDevice::get enabled");
            }, set:function(a) {
              k("public flash.ui.GameInputDevice::set enabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "id", {get:function() {
              k("public flash.ui.GameInputDevice::get id");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "name", {get:function() {
              k("public flash.ui.GameInputDevice::get name");
            }, enumerable:!0, configurable:!0});
            a.prototype.getControlAt = function(a) {
              k("public flash.ui.GameInputDevice::getControlAt");
            };
            a.prototype.startCachingSamples = function(a, b) {
              k("public flash.ui.GameInputDevice::startCachingSamples");
            };
            a.prototype.stopCachingSamples = function() {
              k("public flash.ui.GameInputDevice::stopCachingSamples");
            };
            a.prototype.getCachedSamples = function(a, b) {
              k("public flash.ui.GameInputDevice::getCachedSamples");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.MAX_BUFFER_SIZE = 4800;
            return a;
          }(f.events.EventDispatcher);
          g.GameInputDevice = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.GameInputFinger");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.THUMB = "thumb";
            a.INDEX = "index";
            a.MIDDLE = "middle";
            a.UNKNOWN = "unknown";
            return a;
          }(g.ASNative);
          f.GameInputFinger = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.GameInputHand");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.RIGHT = "right";
            a.LEFT = "left";
            a.UNKNOWN = "unknown";
            return a;
          }(g.ASNative);
          f.GameInputHand = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          var s = b.Debug.notImplemented, m = function() {
            function b() {
              this._lastKeyCode = 0;
              this._captureKeyPress = !1;
              this._charCodeMap = [];
            }
            b.prototype.dispatchKeyboardEvent = function(a) {
              var b = a.keyCode;
              if ("keydown" === a.type) {
                this._lastKeyCode = b;
                if (this._captureKeyPress = 8 === b || 9 === b || 13 === b || 32 === b || 48 <= b && 90 >= b || 145 < b) {
                  return;
                }
                this._charCodeMap[b] = 0;
              } else {
                if ("keypress" === a.type) {
                  if (this._captureKeyPress) {
                    b = this._lastKeyCode, this._charCodeMap[b] = a.charCode;
                  } else {
                    return;
                  }
                }
              }
              if (this.target) {
                var d = "keyup" === a.type;
                this.target.dispatchEvent(new f.events.KeyboardEvent(d ? "keyUp" : "keyDown", !0, !1, d ? this._charCodeMap[b] : a.charCode, d ? a.keyCode : this._lastKeyCode, a.location, a.ctrlKey, a.altKey, a.shiftKey));
              }
            };
            return b;
          }();
          k.KeyboardEventDispatcher = m;
          m = function(b) {
            function a() {
              s("Dummy Constructor: public flash.ui.Keyboard");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "capsLock", {get:function() {
              s("public flash.ui.Keyboard::get capsLock");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "numLock", {get:function() {
              s("public flash.ui.Keyboard::get numLock");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "hasVirtualKeyboard", {get:function() {
              s("public flash.ui.Keyboard::get hasVirtualKeyboard");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "physicalKeyboardType", {get:function() {
              s("public flash.ui.Keyboard::get physicalKeyboardType");
            }, enumerable:!0, configurable:!0});
            a.isAccessible = function() {
              s("public flash.ui.Keyboard::static isAccessible");
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.KEYNAME_UPARROW = "Up";
            a.KEYNAME_DOWNARROW = "Down";
            a.KEYNAME_LEFTARROW = "Left";
            a.KEYNAME_RIGHTARROW = "Right";
            a.KEYNAME_F1 = "F1";
            a.KEYNAME_F2 = "F2";
            a.KEYNAME_F3 = "F3";
            a.KEYNAME_F4 = "F4";
            a.KEYNAME_F5 = "F5";
            a.KEYNAME_F6 = "F6";
            a.KEYNAME_F7 = "F7";
            a.KEYNAME_F8 = "F8";
            a.KEYNAME_F9 = "F9";
            a.KEYNAME_F10 = "F10";
            a.KEYNAME_F11 = "F11";
            a.KEYNAME_F12 = "F12";
            a.KEYNAME_F13 = "F13";
            a.KEYNAME_F14 = "F14";
            a.KEYNAME_F15 = "F15";
            a.KEYNAME_F16 = "F16";
            a.KEYNAME_F17 = "F17";
            a.KEYNAME_F18 = "F18";
            a.KEYNAME_F19 = "F19";
            a.KEYNAME_F20 = "F20";
            a.KEYNAME_F21 = "F21";
            a.KEYNAME_F22 = "F22";
            a.KEYNAME_F23 = "F23";
            a.KEYNAME_F24 = "F24";
            a.KEYNAME_F25 = "F25";
            a.KEYNAME_F26 = "F26";
            a.KEYNAME_F27 = "F27";
            a.KEYNAME_F28 = "F28";
            a.KEYNAME_F29 = "F29";
            a.KEYNAME_F30 = "F30";
            a.KEYNAME_F31 = "F31";
            a.KEYNAME_F32 = "F32";
            a.KEYNAME_F33 = "F33";
            a.KEYNAME_F34 = "F34";
            a.KEYNAME_F35 = "F35";
            a.KEYNAME_INSERT = "Insert";
            a.KEYNAME_DELETE = "Delete";
            a.KEYNAME_HOME = "Home";
            a.KEYNAME_BEGIN = "Begin";
            a.KEYNAME_END = "End";
            a.KEYNAME_PAGEUP = "PgUp";
            a.KEYNAME_PAGEDOWN = "PgDn";
            a.KEYNAME_PRINTSCREEN = "PrntScrn";
            a.KEYNAME_SCROLLLOCK = "ScrlLck";
            a.KEYNAME_PAUSE = "Pause";
            a.KEYNAME_SYSREQ = "SysReq";
            a.KEYNAME_BREAK = "Break";
            a.KEYNAME_RESET = "Reset";
            a.KEYNAME_STOP = "Stop";
            a.KEYNAME_MENU = "Menu";
            a.KEYNAME_USER = "User";
            a.KEYNAME_SYSTEM = "Sys";
            a.KEYNAME_PRINT = "Print";
            a.KEYNAME_CLEARLINE = "ClrLn";
            a.KEYNAME_CLEARDISPLAY = "ClrDsp";
            a.KEYNAME_INSERTLINE = "InsLn";
            a.KEYNAME_DELETELINE = "DelLn";
            a.KEYNAME_INSERTCHAR = "InsChr";
            a.KEYNAME_DELETECHAR = "DelChr";
            a.KEYNAME_PREV = "Prev";
            a.KEYNAME_NEXT = "Next";
            a.KEYNAME_SELECT = "Select";
            a.KEYNAME_EXECUTE = "Exec";
            a.KEYNAME_UNDO = "Undo";
            a.KEYNAME_REDO = "Redo";
            a.KEYNAME_FIND = "Find";
            a.KEYNAME_HELP = "Help";
            a.KEYNAME_MODESWITCH = "ModeSw";
            a.STRING_UPARROW = "\uf700";
            a.STRING_DOWNARROW = "\uf701";
            a.STRING_LEFTARROW = "\uf702";
            a.STRING_RIGHTARROW = "\uf703";
            a.STRING_F1 = "\uf704";
            a.STRING_F2 = "\uf705";
            a.STRING_F3 = "\uf706";
            a.STRING_F4 = "\uf707";
            a.STRING_F5 = "\uf708";
            a.STRING_F6 = "\uf709";
            a.STRING_F7 = "\uf70a";
            a.STRING_F8 = "\uf70b";
            a.STRING_F9 = "\uf70c";
            a.STRING_F10 = "\uf70d";
            a.STRING_F11 = "\uf70e";
            a.STRING_F12 = "\uf70f";
            a.STRING_F13 = "\uf710";
            a.STRING_F14 = "\uf711";
            a.STRING_F15 = "\uf712";
            a.STRING_F16 = "\uf713";
            a.STRING_F17 = "\uf714";
            a.STRING_F18 = "\uf715";
            a.STRING_F19 = "\uf716";
            a.STRING_F20 = "\uf717";
            a.STRING_F21 = "\uf718";
            a.STRING_F22 = "\uf719";
            a.STRING_F23 = "\uf71a";
            a.STRING_F24 = "\uf71b";
            a.STRING_F25 = "\uf71c";
            a.STRING_F26 = "\uf71d";
            a.STRING_F27 = "\uf71e";
            a.STRING_F28 = "\uf71f";
            a.STRING_F29 = "\uf720";
            a.STRING_F30 = "\uf721";
            a.STRING_F31 = "\uf722";
            a.STRING_F32 = "\uf723";
            a.STRING_F33 = "\uf724";
            a.STRING_F34 = "\uf725";
            a.STRING_F35 = "\uf726";
            a.STRING_INSERT = "\uf727";
            a.STRING_DELETE = "\uf728";
            a.STRING_HOME = "\uf729";
            a.STRING_BEGIN = "\uf72a";
            a.STRING_END = "\uf72b";
            a.STRING_PAGEUP = "\uf72c";
            a.STRING_PAGEDOWN = "\uf72d";
            a.STRING_PRINTSCREEN = "\uf72e";
            a.STRING_SCROLLLOCK = "\uf72f";
            a.STRING_PAUSE = "\uf730";
            a.STRING_SYSREQ = "\uf731";
            a.STRING_BREAK = "\uf732";
            a.STRING_RESET = "\uf733";
            a.STRING_STOP = "\uf734";
            a.STRING_MENU = "\uf735";
            a.STRING_USER = "\uf736";
            a.STRING_SYSTEM = "\uf737";
            a.STRING_PRINT = "\uf738";
            a.STRING_CLEARLINE = "\uf739";
            a.STRING_CLEARDISPLAY = "\uf73a";
            a.STRING_INSERTLINE = "\uf73b";
            a.STRING_DELETELINE = "\uf73c";
            a.STRING_INSERTCHAR = "\uf73d";
            a.STRING_DELETECHAR = "\uf73e";
            a.STRING_PREV = "\uf73f";
            a.STRING_NEXT = "\uf740";
            a.STRING_SELECT = "\uf741";
            a.STRING_EXECUTE = "\uf742";
            a.STRING_UNDO = "\uf743";
            a.STRING_REDO = "\uf744";
            a.STRING_FIND = "\uf745";
            a.STRING_HELP = "\uf746";
            a.STRING_MODESWITCH = "\uf747";
            a.CharCodeStrings = void 0;
            a.NUMBER_0 = 48;
            a.NUMBER_1 = 49;
            a.NUMBER_2 = 50;
            a.NUMBER_3 = 51;
            a.NUMBER_4 = 52;
            a.NUMBER_5 = 53;
            a.NUMBER_6 = 54;
            a.NUMBER_7 = 55;
            a.NUMBER_8 = 56;
            a.NUMBER_9 = 57;
            a.A = 65;
            a.B = 66;
            a.C = 67;
            a.D = 68;
            a.E = 69;
            a.F = 70;
            a.G = 71;
            a.H = 72;
            a.I = 73;
            a.J = 74;
            a.K = 75;
            a.L = 76;
            a.M = 77;
            a.N = 78;
            a.O = 79;
            a.P = 80;
            a.Q = 81;
            a.R = 82;
            a.S = 83;
            a.T = 84;
            a.U = 85;
            a.V = 86;
            a.W = 87;
            a.X = 88;
            a.Y = 89;
            a.Z = 90;
            a.SEMICOLON = 186;
            a.EQUAL = 187;
            a.COMMA = 188;
            a.MINUS = 189;
            a.PERIOD = 190;
            a.SLASH = 191;
            a.BACKQUOTE = 192;
            a.LEFTBRACKET = 219;
            a.BACKSLASH = 220;
            a.RIGHTBRACKET = 221;
            a.QUOTE = 222;
            a.ALTERNATE = 18;
            a.BACKSPACE = 8;
            a.CAPS_LOCK = 20;
            a.COMMAND = 15;
            a.CONTROL = 17;
            a.DELETE = 46;
            a.DOWN = 40;
            a.END = 35;
            a.ENTER = 13;
            a.ESCAPE = 27;
            a.F1 = 112;
            a.F2 = 113;
            a.F3 = 114;
            a.F4 = 115;
            a.F5 = 116;
            a.F6 = 117;
            a.F7 = 118;
            a.F8 = 119;
            a.F9 = 120;
            a.F10 = 121;
            a.F11 = 122;
            a.F12 = 123;
            a.F13 = 124;
            a.F14 = 125;
            a.F15 = 126;
            a.HOME = 36;
            a.INSERT = 45;
            a.LEFT = 37;
            a.NUMPAD = 21;
            a.NUMPAD_0 = 96;
            a.NUMPAD_1 = 97;
            a.NUMPAD_2 = 98;
            a.NUMPAD_3 = 99;
            a.NUMPAD_4 = 100;
            a.NUMPAD_5 = 101;
            a.NUMPAD_6 = 102;
            a.NUMPAD_7 = 103;
            a.NUMPAD_8 = 104;
            a.NUMPAD_9 = 105;
            a.NUMPAD_ADD = 107;
            a.NUMPAD_DECIMAL = 110;
            a.NUMPAD_DIVIDE = 111;
            a.NUMPAD_ENTER = 108;
            a.NUMPAD_MULTIPLY = 106;
            a.NUMPAD_SUBTRACT = 109;
            a.PAGE_DOWN = 34;
            a.PAGE_UP = 33;
            a.RIGHT = 39;
            a.SHIFT = 16;
            a.SPACE = 32;
            a.TAB = 9;
            a.UP = 38;
            a.RED = 16777216;
            a.GREEN = 16777217;
            a.YELLOW = 16777218;
            a.BLUE = 16777219;
            a.CHANNEL_UP = 16777220;
            a.CHANNEL_DOWN = 16777221;
            a.RECORD = 16777222;
            a.PLAY = 16777223;
            a.PAUSE = 16777224;
            a.STOP = 16777225;
            a.FAST_FORWARD = 16777226;
            a.REWIND = 16777227;
            a.SKIP_FORWARD = 16777228;
            a.SKIP_BACKWARD = 16777229;
            a.NEXT = 16777230;
            a.PREVIOUS = 16777231;
            a.LIVE = 16777232;
            a.LAST = 16777233;
            a.MENU = 16777234;
            a.INFO = 16777235;
            a.GUIDE = 16777236;
            a.EXIT = 16777237;
            a.BACK = 16777238;
            a.AUDIO = 16777239;
            a.SUBTITLE = 16777240;
            a.DVR = 16777241;
            a.VOD = 16777242;
            a.INPUT = 16777243;
            a.SETUP = 16777244;
            a.HELP = 16777245;
            a.MASTER_SHELL = 16777246;
            a.SEARCH = 16777247;
            return a;
          }(g.ASNative);
          k.Keyboard = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(k) {
          var s = b.Debug.notImplemented, m = b.Debug.somewhatImplemented, d = b.Debug.assert, a = b.AVM2.Runtime.asCoerceString, c = f.events, n = function() {
            function a() {
              this.currentTarget = this.stage = null;
            }
            a.prototype._findTarget = function(a) {
              var b = [];
              this.stage._containsGlobalPoint(20 * a.x | 0, 20 * a.y | 0, 3, b);
              d(2 > b.length);
              return b.length ? b[0] : this.stage;
            };
            a.prototype._dispatchMouseEvent = function(a, b, d, f) {
              "undefined" === typeof f && (f = null);
              var g = a.globalToLocal(d.point);
              b = new c.MouseEvent(b, b !== c.MouseEvent.ROLL_OVER && b !== c.MouseEvent.ROLL_OUT && b !== c.MouseEvent.MOUSE_LEAVE, !1, g.x, g.y, f, d.ctrlKey, d.altKey, d.shiftKey, !!d.buttons);
              a.dispatchEvent(b);
            };
            a.prototype.handleMouseEvent = function(a) {
              var b = this.stage;
              if (!b) {
                return b;
              }
              var d = a.point;
              f.ui.Mouse.updateCurrentPosition(d);
              var g = this.currentTarget;
              if (0 > d.x || d.x > b.stageWidth || 0 > d.y || d.y > b.stageHeight) {
                return g && this._dispatchMouseEvent(b, c.MouseEvent.MOUSE_LEAVE, a), this.currentTarget = null, b;
              }
              var d = this._findTarget(d), k = f.events.MouseEvent.typeFromDOMType(a.type);
              switch(k) {
                case c.MouseEvent.MOUSE_DOWN:
                  a.buttons & 1 ? a.buttons = 1 : a.buttons & 2 ? (k = c.MouseEvent.MIDDLE_MOUSE_DOWN, a.buttons = 2) : a.buttons & 4 && (k = c.MouseEvent.RIGHT_MOUSE_DOWN, a.buttons = 4);
                  d._mouseDown = !0;
                  break;
                case c.MouseEvent.MOUSE_UP:
                  a.buttons & 1 ? a.buttons = 1 : a.buttons & 2 ? (k = c.MouseEvent.MIDDLE_MOUSE_UP, a.buttons = 2) : a.buttons & 4 && (k = c.MouseEvent.RIGHT_MOUSE_UP, a.buttons = 4);
                  d._mouseDown = !1;
                  break;
                case c.MouseEvent.CLICK:
                  a.buttons & 1 || (a.buttons & 2 ? k = c.MouseEvent.MIDDLE_CLICK : a.buttons & 4 && (k = c.MouseEvent.RIGHT_CLICK));
                  a.buttons = 0;
                  break;
                case c.MouseEvent.DOUBLE_CLICK:
                  if (!d.doubleClickEnabled) {
                    return;
                  }
                  a.buttons = 0;
                  break;
                case c.MouseEvent.MOUSE_MOVE:
                  this.currentTarget = d;
                  a.buttons &= 1;
                  if (d === g) {
                    break;
                  }
                  var m = d.findNearestCommonAncestor(g);
                  if (g && g !== b) {
                    g._mouseOver = !1;
                    g._mouseDown = !1;
                    this._dispatchMouseEvent(g, c.MouseEvent.MOUSE_OUT, a, d);
                    for (var h = g;h !== m;) {
                      this._dispatchMouseEvent(h, c.MouseEvent.ROLL_OUT, a, d), h = h.parent;
                    }
                  }
                  if (d === b) {
                    break;
                  }
                  for (b = d;b !== m;) {
                    this._dispatchMouseEvent(b, c.MouseEvent.ROLL_OVER, a, g), b = b.parent;
                  }
                  d._mouseOver = !0;
                  this._dispatchMouseEvent(d, c.MouseEvent.MOUSE_OVER, a, g);
                  return d;
              }
              this._dispatchMouseEvent(d, k, a);
              return d;
            };
            return a;
          }();
          k.MouseEventDispatcher = n;
          (function(a) {
            a[a.Left = 1] = "Left";
            a[a.Middle = 2] = "Middle";
            a[a.Right = 4] = "Right";
          })(k.MouseButtonFlags || (k.MouseButtonFlags = {}));
          n = function(b) {
            function c() {
              s("Dummy Constructor: public flash.ui.Mouse");
            }
            __extends(c, b);
            Object.defineProperty(c.prototype, "supportsCursor", {get:function() {
              s("public flash.ui.Mouse::get supportsCursor");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "cursor", {get:function() {
              s("public flash.ui.Mouse::get cursor");
            }, set:function(b) {
              a(b);
              s("public flash.ui.Mouse::set cursor");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "supportsNativeCursor", {get:function() {
              s("public flash.ui.Mouse::get supportsNativeCursor");
            }, enumerable:!0, configurable:!0});
            c.hide = function() {
              m("public flash.ui.Mouse::static hide");
            };
            c.show = function() {
              m("public flash.ui.Mouse::static show");
            };
            c.registerCursor = function(b, c) {
              a(b);
              s("public flash.ui.Mouse::static registerCursor");
            };
            c.unregisterCursor = function(b) {
              a(b);
              s("public flash.ui.Mouse::static unregisterCursor");
            };
            c.updateCurrentPosition = function(a) {
              this._currentPosition.copyFrom(a);
            };
            c.classInitializer = function() {
              this._currentPosition = new f.geom.Point;
            };
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(g.ASNative);
          k.Mouse = n;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.MouseCursorData");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "data", {get:function() {
              k("public flash.ui.MouseCursorData::get data");
            }, set:function(a) {
              k("public flash.ui.MouseCursorData::set data");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "hotSpot", {get:function() {
              k("public flash.ui.MouseCursorData::get hotSpot");
            }, set:function(a) {
              k("public flash.ui.MouseCursorData::set hotSpot");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "frameRate", {get:function() {
              k("public flash.ui.MouseCursorData::get frameRate");
            }, set:function(a) {
              k("public flash.ui.MouseCursorData::set frameRate");
            }, enumerable:!0, configurable:!0});
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(g.ASNative);
          f.MouseCursorData = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.somewhatImplemented, m = b.Debug.notImplemented, d = b.AVM2.Runtime.asCoerceString, a = function(a) {
            function b() {
              m("Dummy Constructor: public flash.ui.Multitouch");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "inputMode", {get:function() {
              m("public flash.ui.Multitouch::get inputMode");
            }, set:function(a) {
              d(a);
              m("public flash.ui.Multitouch::set inputMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "supportsTouchEvents", {get:function() {
              k("public flash.ui.Multitouch::get supportsTouchEvents");
              return!1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "supportsGestureEvents", {get:function() {
              k("public flash.ui.Multitouch::get supportsGestureEvents");
              return!1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "supportedGestures", {get:function() {
              k("public flash.ui.Multitouch::get supportedGestures");
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "maxTouchPoints", {get:function() {
              k("public flash.ui.Multitouch::get maxTouchPoints");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "mapTouchToMouse", {get:function() {
              k("public flash.ui.Multitouch::get mapTouchToMouse");
              return!0;
            }, set:function(a) {
              m("public flash.ui.Multitouch::set mapTouchToMouse");
            }, enumerable:!0, configurable:!0});
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.Multitouch = a;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.ui.MultitouchInputMode");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.NONE = "none";
            a.GESTURE = "gesture";
            a.TOUCH_POINT = "touchPoint";
            return a;
          }(g.ASNative);
          f.MultitouchInputMode = m;
        })(f.ui || (f.ui = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.utils.Endian");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            a.BIG_ENDIAN = "bigEndian";
            a.LITTLE_ENDIAN = "littleEndian";
            return a;
          }(g.ASNative);
          f.Endian = m;
        })(f.utils || (f.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Shumway$$inline_615 = Shumway || (Shumway = {}), AVM2$$inline_616 = Shumway$$inline_615.AVM2 || (Shumway$$inline_615.AVM2 = {}), AS$$inline_617 = AVM2$$inline_616.AS || (AVM2$$inline_616.AS = {}), flash$$inline_618 = AS$$inline_617.flash || (AS$$inline_617.flash = {}), utils$$inline_619 = flash$$inline_618.utils || (flash$$inline_618.utils = {}), utils$$inline_620 = flash$$inline_618.utils, flash$$inline_621 = AS$$inline_617.flash, AS$$inline_622 = AVM2$$inline_616.AS, AVM2$$inline_623 = Shumway$$inline_615.AVM2, 
Shumway$$inline_625 = Shumway || (Shumway = {}), AVM2$$inline_626 = Shumway$$inline_625.AVM2 || (Shumway$$inline_625.AVM2 = {}), AS$$inline_627 = AVM2$$inline_626.AS || (AVM2$$inline_626.AS = {}), flash$$inline_628 = AS$$inline_627.flash || (AS$$inline_627.flash = {}), utils$$inline_629 = flash$$inline_628.utils || (flash$$inline_628.utils = {}), utils$$inline_630 = flash$$inline_628.utils, flash$$inline_631 = AS$$inline_627.flash, AS$$inline_632 = AVM2$$inline_626.AS, AVM2$$inline_633 = Shumway$$inline_625.AVM2, 
Shumway$$inline_635 = Shumway || (Shumway = {}), AVM2$$inline_636 = Shumway$$inline_635.AVM2 || (Shumway$$inline_635.AVM2 = {}), AS$$inline_637 = AVM2$$inline_636.AS || (AVM2$$inline_636.AS = {}), flash$$inline_638 = AS$$inline_637.flash || (AS$$inline_637.flash = {}), utils$$inline_639 = flash$$inline_638.utils || (flash$$inline_638.utils = {}), utils$$inline_640 = flash$$inline_638.utils, flash$$inline_641 = AS$$inline_637.flash, AS$$inline_642 = AVM2$$inline_636.AS, AVM2$$inline_643 = Shumway$$inline_635.AVM2;
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b() {
              k("Dummy Constructor: packageInternal flash.utils.ObjectInput");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "bytesAvailable", {get:function() {
              k("packageInternal flash.utils.ObjectInput::get bytesAvailable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "objectEncoding", {get:function() {
              k("packageInternal flash.utils.ObjectInput::get objectEncoding");
            }, set:function(a) {
              k("packageInternal flash.utils.ObjectInput::set objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "endian", {get:function() {
              k("packageInternal flash.utils.ObjectInput::get endian");
            }, set:function(a) {
              m(a);
              k("packageInternal flash.utils.ObjectInput::set endian");
            }, enumerable:!0, configurable:!0});
            b.prototype.readBytes = function(a, b, c) {
              k("packageInternal flash.utils.ObjectInput::readBytes");
            };
            b.prototype.readBoolean = function() {
              k("packageInternal flash.utils.ObjectInput::readBoolean");
            };
            b.prototype.readByte = function() {
              k("packageInternal flash.utils.ObjectInput::readByte");
            };
            b.prototype.readUnsignedByte = function() {
              k("packageInternal flash.utils.ObjectInput::readUnsignedByte");
            };
            b.prototype.readShort = function() {
              k("packageInternal flash.utils.ObjectInput::readShort");
            };
            b.prototype.readUnsignedShort = function() {
              k("packageInternal flash.utils.ObjectInput::readUnsignedShort");
            };
            b.prototype.readInt = function() {
              k("packageInternal flash.utils.ObjectInput::readInt");
            };
            b.prototype.readUnsignedInt = function() {
              k("packageInternal flash.utils.ObjectInput::readUnsignedInt");
            };
            b.prototype.readFloat = function() {
              k("packageInternal flash.utils.ObjectInput::readFloat");
            };
            b.prototype.readDouble = function() {
              k("packageInternal flash.utils.ObjectInput::readDouble");
            };
            b.prototype.readMultiByte = function(a, b) {
              m(b);
              k("packageInternal flash.utils.ObjectInput::readMultiByte");
            };
            b.prototype.readUTF = function() {
              k("packageInternal flash.utils.ObjectInput::readUTF");
            };
            b.prototype.readUTFBytes = function(a) {
              k("packageInternal flash.utils.ObjectInput::readUTFBytes");
            };
            b.prototype.readObject = function() {
              k("packageInternal flash.utils.ObjectInput::readObject");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.ObjectInput = d;
        })(f.utils || (f.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b() {
              k("Dummy Constructor: packageInternal flash.utils.ObjectOutput");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "objectEncoding", {get:function() {
              k("packageInternal flash.utils.ObjectOutput::get objectEncoding");
            }, set:function(a) {
              k("packageInternal flash.utils.ObjectOutput::set objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "endian", {get:function() {
              k("packageInternal flash.utils.ObjectOutput::get endian");
            }, set:function(a) {
              m(a);
              k("packageInternal flash.utils.ObjectOutput::set endian");
            }, enumerable:!0, configurable:!0});
            b.prototype.writeBytes = function(a, b, c) {
              k("packageInternal flash.utils.ObjectOutput::writeBytes");
            };
            b.prototype.writeBoolean = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeBoolean");
            };
            b.prototype.writeByte = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeByte");
            };
            b.prototype.writeShort = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeShort");
            };
            b.prototype.writeInt = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeInt");
            };
            b.prototype.writeUnsignedInt = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeUnsignedInt");
            };
            b.prototype.writeFloat = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeFloat");
            };
            b.prototype.writeDouble = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeDouble");
            };
            b.prototype.writeMultiByte = function(a, b) {
              m(a);
              m(b);
              k("packageInternal flash.utils.ObjectOutput::writeMultiByte");
            };
            b.prototype.writeUTF = function(a) {
              m(a);
              k("packageInternal flash.utils.ObjectOutput::writeUTF");
            };
            b.prototype.writeUTFBytes = function(a) {
              m(a);
              k("packageInternal flash.utils.ObjectOutput::writeUTFBytes");
            };
            b.prototype.writeObject = function(a) {
              k("packageInternal flash.utils.ObjectOutput::writeObject");
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(g.ASNative);
          f.ObjectOutput = d;
        })(f.utils || (f.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b) {
              k("Dummy Constructor: public flash.utils.Timer");
            }
            __extends(a, b);
            Object.defineProperty(a.prototype, "running", {get:function() {
              return this._running;
            }, enumerable:!0, configurable:!0});
            a.prototype.stop = function() {
              this._running = !1;
              clearInterval(this._interval);
            };
            a.prototype._start = function(a, b) {
              this._delay = +a;
              this._running = !0;
              this._interval = setInterval(b, a);
            };
            a.prototype._tick = function() {
              this._running && f.utils.Timer.dispatchingEnabled && this.dispatchEvent(new f.events.TimerEvent("timer", !0, !1));
            };
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = ["start!"];
            a.dispatchingEnabled = !0;
            return a;
          }(f.events.EventDispatcher);
          g.Timer = m;
        })(f.utils || (f.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a(a, b, d, e) {
              k("Dummy Constructor: packageInternal flash.utils.SetIntervalTimer");
            }
            __extends(a, b);
            a.classInitializer = null;
            a.initializer = null;
            a.classSymbols = null;
            a.instanceSymbols = null;
            return a;
          }(f.utils.Timer);
          g.SetIntervalTimer = m;
        })(f.utils || (f.utils = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b(a, c) {
              m(c);
              k("Dummy Constructor: public flash.xml.XMLNode");
            }
            __extends(b, a);
            b.escapeXML = function(a) {
              m(a);
              k("public flash.xml.XMLNode::static escapeXML");
            };
            b.initializer = null;
            return b;
          }(g.ASNative);
          f.XMLNode = d;
        })(f.xml || (f.xml = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(g) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b(a) {
              "undefined" === typeof a && (a = null);
              m(a);
              k("Dummy Constructor: public flash.xml.XMLDocument");
            }
            __extends(b, a);
            b.initializer = null;
            return b;
          }(f.xml.XMLNode);
          g.XMLDocument = d;
        })(f.xml || (f.xml = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = function(b) {
            function a() {
              k("Dummy Constructor: public flash.xml.XMLNodeType");
            }
            __extends(a, b);
            a.initializer = null;
            return a;
          }(g.ASNative);
          f.XMLNodeType = m;
        })(f.xml || (f.xml = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b() {
              k("Dummy Constructor: packageInternal flash.xml.XMLParser");
            }
            __extends(b, a);
            b.prototype.startParse = function(a, b) {
              m(a);
              k("packageInternal flash.xml.XMLParser::startParse");
            };
            b.prototype.getNext = function(a) {
              k("packageInternal flash.xml.XMLParser::getNext");
            };
            b.initializer = null;
            return b;
          }(g.ASNative);
          f.XMLParser = d;
        })(f.xml || (f.xml = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        (function(f) {
          var k = b.Debug.notImplemented, m = b.AVM2.Runtime.asCoerceString, d = function(a) {
            function b() {
              k("Dummy Constructor: packageInternal flash.xml.XMLTag");
            }
            __extends(b, a);
            Object.defineProperty(b.prototype, "type", {get:function() {
              k("packageInternal flash.xml.XMLTag::get type");
            }, set:function(a) {
              k("packageInternal flash.xml.XMLTag::set type");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "empty", {get:function() {
              k("packageInternal flash.xml.XMLTag::get empty");
            }, set:function(a) {
              k("packageInternal flash.xml.XMLTag::set empty");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "value", {get:function() {
              k("packageInternal flash.xml.XMLTag::get value");
            }, set:function(a) {
              m(a);
              k("packageInternal flash.xml.XMLTag::set value");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "attrs", {get:function() {
              k("packageInternal flash.xml.XMLTag::get attrs");
            }, set:function(a) {
              k("packageInternal flash.xml.XMLTag::set attrs");
            }, enumerable:!0, configurable:!0});
            b.initializer = null;
            return b;
          }(g.ASNative);
          f.XMLTag = d;
        })(f.xml || (f.xml = {}));
      })(g.flash || (g.flash = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = b.Debug.notImplemented, f = b.isInteger, t = b.Debug.assert, s = b.Debug.warning, m = b.Bounds, d = b.AVM2.AS.flash, a = b.AVM2.AS.flash.display.ActionScriptVersion, c = function() {
      return function(a, b) {
        this.id = -1;
        t(f(a));
        this.id = a;
        this.symbolClass = b;
        this.isAVM1Object = !1;
      };
    }();
    k.Symbol = c;
    var n = function(a) {
      function b(c, d, h) {
        "undefined" === typeof h && (h = !0);
        a.call(this, c, d);
        this.dynamic = h;
      }
      __extends(b, a);
      b.prototype._setBoundsFromData = function(a) {
        this.fillBounds = a.fillBounds ? m.FromUntyped(a.fillBounds) : null;
        this.lineBounds = a.lineBounds ? m.FromUntyped(a.lineBounds) : null;
        !this.lineBounds && this.fillBounds && (this.lineBounds = this.fillBounds.clone());
      };
      return b;
    }(c);
    k.DisplaySymbol = n;
    var p = function(a) {
      function b(c, e) {
        "undefined" === typeof e && (e = d.display.Shape);
        a.call(this, c, e, !1);
        this.graphics = null;
      }
      __extends(b, a);
      b.FromData = function(a, c) {
        var h = new b(a.id);
        h._setBoundsFromData(a);
        h.graphics = d.display.Graphics.FromData(a);
        h.processRequires(a.require, c);
        return h;
      };
      b.prototype.processRequires = function(a, b) {
        if (a) {
          for (var c = this.graphics._textures, d = 0;d < a.length;d++) {
            var e = b.getSymbolById(a[d]);
            t(e, "Bitmap symbol is not defined.");
            var f = e.symbolClass.initializeFrom(e);
            e.symbolClass.instanceConstructorNoInitialize.call(f);
            c.push(f);
          }
        }
      };
      return b;
    }(n);
    k.ShapeSymbol = p;
    p = function(a) {
      function b(c) {
        a.call(this, c, d.display.MorphShape);
      }
      __extends(b, a);
      b.FromData = function(a, c) {
        var h = new b(a.id);
        h._setBoundsFromData(a);
        h.graphics = d.display.Graphics.FromData(a);
        h.processRequires(a.require, c);
        h.morphFillBounds = a.morphFillBounds;
        h.morphLineBounds = a.morphLineBounds;
        return h;
      };
      return b;
    }(p);
    k.MorphShapeSymbol = p;
    p = function(a) {
      function b(c) {
        a.call(this, c, d.display.BitmapData);
      }
      __extends(b, a);
      b.FromData = function(a) {
        var c = new b(a.id);
        c.width = a.width;
        c.height = a.height;
        c.data = a.data;
        switch(a.mimeType) {
          case "application/octet-stream":
            c.type = a.dataType;
            break;
          case "image/jpeg":
            c.type = 4;
            break;
          case "image/png":
            c.type = 5;
            break;
          case "image/gif":
            c.type = 6;
            break;
          default:
            g(a.mimeType);
        }
        return c;
      };
      return b;
    }(n);
    k.BitmapSymbol = p;
    p = function(a) {
      function c(b) {
        a.call(this, b, d.text.TextField);
        this.size = this.color = 0;
        this.font = "";
        this.fontClass = null;
        this.align = d.text.TextFormatAlign.LEFT;
        this.leading = this.indent = this.rightMargin = this.leftMargin = 0;
        this.embedFonts = this.wordWrap = this.multiline = !1;
        this.selectable = !0;
        this.border = !1;
        this.initialText = "";
        this.displayAsPassword = this.html = !1;
        this.type = d.text.TextFieldType.DYNAMIC;
        this.maxChars = 0;
        this.autoSize = d.text.TextFieldAutoSize.NONE;
        this.textContent = this.variableName = null;
      }
      __extends(c, a);
      c.FromTextData = function(a) {
        var e = new c(a.id);
        e._setBoundsFromData(a);
        var h = a.tag;
        if (a.static && (e.dynamic = !1, e.symbolClass = d.text.StaticText, h.initialText)) {
          var f = new b.TextContent;
          f.bounds = e.lineBounds;
          f.parseHtml(h.initialText);
          f.matrix = d.geom.Matrix.FromUntyped(a.matrix);
          f.coords = a.coords;
          e.textContent = f;
        }
        h.hasColor && (e.color = h.color >>> 8);
        h.hasFont && (e.size = h.fontHeight, (a = d.text.Font.getBySymbolId(h.fontId)) ? (e.font = a.fontName, h.fontClass && (e.fontClass = b.AVM2.Runtime.AVM2.instance.applicationDomain.getClass(h.fontClass))) : s("Font " + h.fontId + " is not defined."));
        h.hasLayout && (e.align = d.text.TextFormatAlign.fromNumber(h.align), e.leftMargin = h.leftMargin, e.rightMargin = h.rightMargin, e.indent = h.indent, e.leading = h.leading);
        e.multiline = !!h.multiline;
        e.wordWrap = !!h.wordWrap;
        e.embedFonts = !!h.useOutlines;
        e.selectable = !h.noSelect;
        e.border = !!h.border;
        h.hasText && (e.initialText = h.initialText);
        e.html = !!h.html;
        e.displayAsPassword = !!h.password;
        e.type = h.readonly ? d.text.TextFieldType.DYNAMIC : d.text.TextFieldType.INPUT;
        h.hasMaxLength && (e.maxChars = h.maxLength);
        e.autoSize = h.autoSize ? d.text.TextFieldAutoSize.LEFT : d.text.TextFieldAutoSize.NONE;
        e.variableName = h.variableName;
        return e;
      };
      return c;
    }(n);
    k.TextSymbol = p;
    p = function(b) {
      function c(a) {
        b.call(this, a, d.display.SimpleButton);
        this.hitTestState = this.downState = this.overState = this.upState = null;
      }
      __extends(c, b);
      c.FromData = function(b, e) {
        var h = new c(b.id);
        e.actionScriptVersion === a.ACTIONSCRIPT2 && (h.isAVM1Object = !0, h.buttonActions = b.buttonActions);
        var f = b.states, g, l, m, n;
        for (n in f) {
          var p = f[n];
          1 === p.length ? (p = p[0], g = e.getSymbolById(p.symbolId), l = d.geom.Matrix.FromUntyped(p.matrix), p.cxform && (m = d.geom.ColorTransform.FromCXForm(p.cxform))) : (g = new k.SpriteSymbol(-1), g.frames.push(new q(e, p)));
          h[n + "State"] = new k.AnimationState(g, 0, l, m);
        }
        return h;
      };
      return c;
    }(n);
    k.ButtonSymbol = p;
    n = function(b) {
      function c(a, e) {
        "undefined" === typeof e && (e = !1);
        b.call(this, a, d.display.MovieClip);
        this.numFrames = 1;
        this.frames = [];
        this.labels = [];
        this.frameScripts = [];
        this.isRoot = e;
      }
      __extends(c, b);
      c.FromData = function(b, e) {
        var h = new c(b.id);
        h.numFrames = b.frameCount;
        e.actionScriptVersion === a.ACTIONSCRIPT2 && (h.isAVM1Object = !0, h.avm1Context = e._avm1Context);
        h.frameScripts = b.frameScripts;
        for (var f = b.frames, g = 1, k = 0;k < f.length;k++) {
          for (var l = f[k], m = new q(e, l.commands), n = l.repeat;n--;) {
            h.frames.push(m);
          }
          l.labelName && h.labels.push(new d.display.FrameLabel(l.labelName, g));
          g += l.repeat;
        }
        return h;
      };
      return c;
    }(n);
    k.SpriteSymbol = n;
    n = function(a) {
      function b(c) {
        a.call(this, c, d.text.Font);
        this.name = "";
        this.italic = this.bold = !1;
      }
      __extends(b, a);
      b.FromData = function(a) {
        var c = new b(a.id);
        c.name = a.name;
        c.bold = a.bold;
        c.italic = a.italic;
        c.data = a.data;
        c.metrics = a.metrics;
        return c;
      };
      return b;
    }(c);
    k.FontSymbol = n;
    n = function(a) {
      function b(c) {
        a.call(this, c, d.media.Sound);
      }
      __extends(b, a);
      b.FromData = function(a) {
        var c = new b(a.id);
        c.channels = a.channels;
        c.sampleRate = a.sampleRate;
        c.pcm = a.pcm;
        c.packaged = a.packaged;
        return c;
      };
      return b;
    }(c);
    k.SoundSymbol = n;
    c = function(a) {
      function b(c) {
        a.call(this, c, d.utils.ByteArray);
      }
      __extends(b, a);
      b.FromData = function(a) {
        var c = new b(a.id);
        c.buffer = a.data;
        c.byteLength = a.data.byteLength;
        return c;
      };
      return b;
    }(c);
    k.BinarySymbol = c;
    c = function() {
      function a(b, c, d, h, e, f, g, k, l, m, n, p, q) {
        "undefined" === typeof b && (b = null);
        "undefined" === typeof c && (c = 0);
        "undefined" === typeof d && (d = null);
        "undefined" === typeof h && (h = null);
        "undefined" === typeof e && (e = 0);
        "undefined" === typeof f && (f = null);
        "undefined" === typeof g && (g = -1);
        "undefined" === typeof k && (k = null);
        "undefined" === typeof l && (l = null);
        "undefined" === typeof m && (m = !1);
        "undefined" === typeof n && (n = !0);
        "undefined" === typeof p && (p = null);
        "undefined" === typeof q && (q = null);
        this.symbol = b;
        this.depth = c;
        this.matrix = d;
        this.colorTransform = h;
        this.ratio = e;
        this.name = f;
        this.clipDepth = g;
        this.filters = k;
        this.blendMode = l;
        this.cacheAsBitmap = m;
        this.visible = n;
        this.events = p;
        this.variableName = q;
      }
      a.prototype.canBeAnimated = function(a) {
        if (!a._hasFlags(2048) || a._depth !== this.depth) {
          return!1;
        }
        var b = this.symbol;
        return!b || !b.dynamic && a._clipDepth === this.clipDepth && b.symbolClass.isType(a) ? !0 : !1;
      };
      return a;
    }();
    k.AnimationState = c;
    var e = function() {
      return function(a, b) {
        this.soundId = a;
        this.soundInfo = b;
      };
    }();
    k.SoundStart = e;
    var q = function() {
      function c(a, b) {
        this.loaderInfo = a;
        this.commands = b;
        this._stateAtDepth = null;
        this._soundStarts = void 0;
      }
      Object.defineProperty(c.prototype, "stateAtDepth", {get:function() {
        return this._stateAtDepth || this._initialize();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "soundStarts", {get:function() {
        void 0 === this._soundStarts && this._initialize();
        return this._soundStarts;
      }, enumerable:!0, configurable:!0});
      c.prototype._initialize = function() {
        for (var c = this._stateAtDepth = Object.create(null), f = null, g = this.commands, h = this.loaderInfo, l = 0;l < g.length;l++) {
          var m = g[l], n = m.depth;
          switch(m.code) {
            case 5:
            ;
            case 28:
              c[n] = null;
              break;
            case 15:
              f || (f = []);
              f.push(new e(m.soundId, m.soundInfo));
              break;
            default:
              var p = null, q = null, E = null, O = null, K = null;
              if (m.symbolId && (p = h.getSymbolById(m.symbolId), !p)) {
                s("Symbol " + m.symbolId + " is not defined.");
                continue;
              }
              m.flags & 4 && (q = d.geom.Matrix.FromUntyped(m.matrix));
              m.flags & 8 && (E = d.geom.ColorTransform.FromCXForm(m.cxform));
              if (m.flags & 256) {
                for (var O = [], F = m.filters, J = 0;J < F.length;J++) {
                  var A = F[J], B;
                  switch(A.type) {
                    case 0:
                      B = d.filters.DropShadowFilter.FromUntyped(A);
                      break;
                    case 1:
                      B = d.filters.BlurFilter.FromUntyped(A);
                      break;
                    case 2:
                      B = d.filters.GlowFilter.FromUntyped(A);
                      break;
                    case 3:
                      B = d.filters.BevelFilter.FromUntyped(A);
                      break;
                    case 4:
                      B = d.filters.GradientGlowFilter.FromUntyped(A);
                      break;
                    case 5:
                      B = d.filters.ConvolutionFilter.FromUntyped(A);
                      break;
                    case 6:
                      B = d.filters.ColorMatrixFilter.FromUntyped(A);
                      break;
                    case 7:
                      B = d.filters.GradientBevelFilter.FromUntyped(A);
                  }
                  t(B, "Unknown filter type.");
                  O.push(B);
                }
              }
              if (m.flags & 128 && h._allowCodeExecution && h._actionScriptVersion === a.ACTIONSCRIPT2) {
                for (F = m.events, K = [], J = 0;J < F.length;J++) {
                  A = F[J];
                  if (A.eoe) {
                    break;
                  }
                  var z = function(a, c) {
                    return function() {
                      var d = c._avm1Context, h = b.AVM2.AS.avm1lib.getAVM1Object(this);
                      return d.executeActions(a, h);
                    };
                  }(new b.AVM1.AVM1ActionsData(A.actionsData, "s" + m.symbolId + "e" + J), h), P = [], D;
                  for (D in A) {
                    if (0 === D.indexOf("on") && A[D]) {
                      var L = D[2].toLowerCase() + D.substring(3);
                      "enterFrame" === L && (L = "frameConstructed");
                      P.push(L);
                    }
                  }
                  K.push({eventNames:P, handler:z, keyPress:A.keyPress});
                }
              }
              m = new k.AnimationState(p, n, q, E, m.ratio, m.name, m.clipDepth, O, d.display.BlendMode.fromNumber(m.blendMode), !!(m.flags & 1024), m.flags & 512 ? !!m.visibility : !0, K, m.variableName);
              c[n] = m;
          }
        }
        this._soundStarts = f;
        this.commands = null;
        return c;
      };
      return c;
    }();
    k.FrameDelta = q;
  })(b.Timeline || (b.Timeline = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      function f(a, b, d) {
        return{classSimpleName:a, nativeName:b, cls:d};
      }
      function t(c, d, f) {
        Object.defineProperty(c, f, {get:function() {
          a(b.AVM2.Runtime.AVM2.instance, "AVM2 needs to be initialized.");
          var e = b.AVM2.Runtime.AVM2.instance.systemDomain.getClass(d);
          a(e.instanceConstructor);
          Object.defineProperty(c, f, {value:e.instanceConstructor, writable:!1});
          return c[f];
        }, configurable:!0});
      }
      var s = b.AVM2.Runtime.throwError, m = b.AVM2.AS.flash, d = b.AVM2.ABC.Multiname, a = b.Debug.assert;
      jsGlobal.flash = b.AVM2.AS.flash;
      g.linkNatives = function(a) {
        [f("flash.display.DisplayObject", "DisplayObjectClass", m.display.DisplayObject), f("flash.display.InteractiveObject", "InteractiveObjectClass", m.display.InteractiveObject), f("flash.display.DisplayObjectContainer", "ContainerClass", m.display.DisplayObjectContainer), f("flash.display.Sprite", "SpriteClass", m.display.Sprite), f("flash.display.MovieClip", "MovieClipClass", m.display.MovieClip), f("flash.display.Shape", "ShapeClass", m.display.Shape), f("flash.display.Bitmap", "BitmapClass", 
        m.display.Bitmap), f("flash.display.BitmapData", "BitmapDataClass", m.display.BitmapData), f("flash.display.Stage", "StageClass", m.display.Stage), f("flash.display.Loader", "LoaderClass", m.display.Loader), f("flash.display.LoaderInfo", "LoaderInfoClass", m.display.LoaderInfo), f("flash.display.Graphics", "GraphicsClass", m.display.Graphics), f("flash.display.SimpleButton", "SimpleButtonClass", m.display.SimpleButton), f("flash.display.MorphShape", "MorphShapeClass", m.display.MorphShape), 
        f("flash.display.NativeMenu", "MenuClass", m.display.NativeMenu), f("flash.display.NativeMenuItem", "MenuItemClass", m.display.NativeMenuItem), f("flash.display.FrameLabel", "FrameLabelClass", m.display.FrameLabel), f("flash.display.Scene", "SceneClass", m.display.Scene), f("flash.display.AVM1Movie", "AVM1MovieClass", m.display.AVM1Movie), f("flash.filters.BevelFilter", "BevelFilterClass", m.filters.BevelFilter), f("flash.filters.BitmapFilter", "BitmapFilterClass", m.filters.BitmapFilter), 
        f("flash.filters.BlurFilter", "BlurFilterClass", m.filters.BlurFilter), f("flash.filters.ColorMatrixFilter", "ColorMatrixFilterClass", m.filters.ColorMatrixFilter), f("flash.filters.ConvolutionFilter", "ConvolutionFilterClass", m.filters.ConvolutionFilter), f("flash.filters.DisplacementMapFilter", "DisplacementMapFilterClass", m.filters.DisplacementMapFilter), f("flash.filters.DropShadowFilter", "DropShadowFilterClass", m.filters.DropShadowFilter), f("flash.filters.GlowFilter", "GlowFilterClass", 
        m.filters.GlowFilter), f("flash.filters.GradientBevelFilter", "GradientBevelFilterClass", m.filters.GradientBevelFilter), f("flash.filters.GradientGlowFilter", "GradientGlowFilterClass", m.filters.GradientGlowFilter), f("flash.geom.Point", "PointClass", m.geom.Point), f("flash.geom.Rectangle", "RectangleClass", m.geom.Rectangle), f("flash.geom.Matrix", "MatrixClass", m.geom.Matrix), f("flash.geom.Matrix3D", "Matrix3DClass", m.geom.Matrix3D), f("flash.geom.Vector3D", "Vector3DClass", m.geom.Vector3D), 
        f("flash.geom.Transform", "TransformClass", m.geom.Transform), f("flash.geom.ColorTransform", "ColorTransformClass", m.geom.ColorTransform), f("flash.events.EventDispatcher", "EventDispatcherClass", m.events.EventDispatcher), f("flash.events.Event", "EventClass", m.events.Event), f("flash.events.IOErrorEvent"), f("flash.events.KeyboardEvent", "KeyboardEventClass", m.events.KeyboardEvent), f("flash.events.MouseEvent", "MouseEventClass", m.events.MouseEvent), f("flash.events.GestureEvent", 
        "GestureEventClass", m.events.GestureEvent), f("flash.events.TextEvent", "TextEventClass", m.events.TextEvent), f("flash.events.TimerEvent", "TimerEventClass", m.events.TimerEvent), f("flash.events.ProgressEvent", "ProgressEventClass", m.events.ProgressEvent), f("flash.events.NetStatusEvent"), f("flash.events.HTTPStatusEvent"), f("flash.external.ExternalInterface", "ExternalInterfaceClass", m.external.ExternalInterface), f("flash.ui.ContextMenu", "ContextMenuClass", m.ui.ContextMenu), f("flash.ui.ContextMenuItem", 
        "ContextMenuItemClass", m.ui.ContextMenuItem), f("flash.ui.Keyboard", "KeyboardClass", m.ui.Keyboard), f("flash.ui.Mouse", "MouseClass", m.ui.Mouse), f("flash.ui.MouseCursorData", "MouseCursorDataClass", m.ui.MouseCursorData), f("flash.ui.GameInput", "GameInputClass", m.ui.GameInput), f("flash.events.GameInputEvent", "GameInputEventClass", m.events.GameInputEvent), f("flash.ui.GameInputControl", "GameInputControlClass", m.ui.GameInputControl), f("flash.ui.GameInputControlType", "GameInputControlTypeClass", 
        m.ui.GameInputControlType), f("flash.ui.GameInputDevice", "GameInputDeviceClass", m.ui.GameInputDevice), f("flash.ui.GameInputFinger", "GameInputFingerClass", m.ui.GameInputFinger), f("flash.ui.GameInputHand", "GameInputHandClass", m.ui.GameInputHand), f("flash.ui.Multitouch", "MultitouchClass", m.ui.Multitouch), f("flash.ui.MultitouchInputMode", "MultitouchInputModeClass", m.ui.MultitouchInputMode), f("flash.events.TouchEvent", "TouchEventClass", m.events.TouchEvent), f("flash.text.Font", 
        "FontClass", m.text.Font), f("flash.text.TextField", "TextFieldClass", m.text.TextField), f("flash.text.StaticText", "StaticTextClass", m.text.StaticText), f("flash.text.StyleSheet", "StyleSheetClass", m.text.StyleSheet), f("flash.text.TextFormat", "TextFormatClass", m.text.TextFormat), f("flash.text.TextRun", "TextRunClass", m.text.TextRun), f("flash.text.TextLineMetrics"), f("flash.media.Sound", "SoundClass", m.media.Sound), f("flash.media.SoundChannel", "SoundChannelClass", m.media.SoundChannel), 
        f("flash.media.SoundMixer", "SoundMixerClass", m.media.SoundMixer), f("flash.media.SoundTransform", "SoundTransformClass", m.media.SoundTransform), f("flash.media.Video", "VideoClass", m.media.Video), f("flash.media.ID3Info", "ID3InfoClass", m.media.ID3Info), f("flash.media.Microphone", "MicrophoneClass", m.media.Microphone), f("flash.net.FileFilter", "FileFilterClass", m.net.FileFilter), f("flash.net.NetConnection", "NetConnectionClass", m.net.NetConnection), f("flash.net.NetStream", "NetStreamClass", 
        m.net.NetStream), f("flash.net.Responder", "ResponderClass", m.net.Responder), f("flash.net.URLRequest", "URLRequestClass", m.net.URLRequest), f("flash.net.URLRequestHeader"), f("flash.net.URLStream", "URLStreamClass", m.net.URLStream), f("flash.net.URLLoader", "URLLoaderClass", m.net.URLLoader), f("flash.net.SharedObject", "SharedObjectClass", m.net.SharedObject), f("flash.net.ObjectEncoding", "ObjectEncodingClass", m.net.ObjectEncoding), f("flash.net.LocalConnection", "LocalConnectionClass", 
        m.net.LocalConnection), f("flash.net.Socket", "SocketClass", m.net.Socket), f("flash.net.URLVariables", "URLVariablesClass", m.net.URLVariables), f("packageInternal flash.system.FSCommand", "FSCommandClass", m.system.FSCommand), f("flash.system.Capabilities", "CapabilitiesClass", m.system.Capabilities), f("flash.system.Security", "SecurityClass", m.system.Security), f("flash.system.SecurityDomain", "SecurityDomainClass", m.system.SecurityDomain), f("flash.system.ApplicationDomain", "ApplicationDomainClass", 
        m.system.ApplicationDomain), f("flash.system.JPEGLoaderContext", "JPEGLoaderContextClass", m.system.JPEGLoaderContext), f("flash.accessibility.Accessibility", "AccessibilityClass", m.accessibility.Accessibility), f("flash.utils.Timer", "TimerClass", m.utils.Timer), f("flash.utils.ByteArray", "ByteArrayClass", m.utils.ByteArray), f("avm1lib.AVM1Utils", "AVM1Utils", b.AVM2.AS.avm1lib.AVM1Utils), f("avm1lib.AVM1Broadcaster"), f("avm1lib.AVM1Key"), f("avm1lib.AVM1Mouse"), f("avm1lib.AVM1MovieClip", 
        "AVM1MovieClip", b.AVM2.AS.avm1lib.AVM1MovieClip), f("avm1lib.AVM1BitmapData", "AVM1BitmapData", b.AVM2.AS.avm1lib.AVM1BitmapData), f("avm1lib.AVM1Button", "AVM1Button", b.AVM2.AS.avm1lib.AVM1Button), f("avm1lib.AVM1Sound"), f("avm1lib.AVM1TextField", "AVM1TextField", b.AVM2.AS.avm1lib.AVM1TextField), f("avm1lib.AVM1Stage"), f("avm1lib.AVM1System"), f("avm1lib.AVM1Color"), f("avm1lib.AVM1Transform"), f("avm1lib.AVM1Globals", "AVM1Globals", b.AVM2.AS.avm1lib.AVM1Globals), f("avm1lib.AVM1MovieClipLoader", 
        "AVM1MovieClipLoader", b.AVM2.AS.avm1lib.AVM1MovieClipLoader)].forEach(function(a) {
          for (var c = d.fromSimpleName(a.classSimpleName).getOriginalName().split("."), e = b.AVM2.AS, f = 0, k = c.length - 1;f < k;f++) {
            e[c[f]] || (e[c[f]] = {}), e = e[c[f]];
          }
          t(e, a.classSimpleName, c[c.length - 1]);
          g.registerNativeClass(a.nativeName, a.cls);
        });
        g.registerNativeFunction("FlashUtilScript::getDefinitionByName", b.AVM2.AS.Natives.getDefinitionByName);
        g.registerNativeFunction("FlashUtilScript::getTimer", function() {
          return Date.now() - m.display.Loader.runtimeStartTime;
        });
        g.registerNativeFunction("FlashUtilScript::escapeMultiByte", escape);
        g.registerNativeFunction("FlashUtilScript::unescapeMultiByte", unescape);
        g.registerNativeFunction("FlashNetScript::navigateToURL", function(a, c) {
          null !== a && void 0 !== a || s("TypeError", k.Errors.NullPointerError, "request");
          b.AVM2.Runtime.AVM2.instance.systemDomain.getClass("flash.net.URLRequest").isInstanceOf(a) || s("TypeError", k.Errors.CheckTypeFailedError, a, "flash.net.URLRequest");
          var e = a.url;
          if (/^fscommand:/i.test(e)) {
            b.AVM2.Runtime.AVM2.instance.applicationDomain.getProperty(d.fromSimpleName("flash.system.fscommand"), !0, !0).call(null, e.substring(10), c);
          } else {
            var f = c || "_parent";
            window.open(b.FileLoadingService.instance.resolveUrl(e), f);
          }
        });
        g.registerNativeFunction("FlashNetScript::sendToURL", function(a) {
          null !== a && void 0 !== a || s("TypeError", k.Errors.NullPointerError, "request");
          b.AVM2.Runtime.AVM2.instance.systemDomain.getClass("flash.net.URLRequest").isInstanceOf(a) || s("TypeError", k.Errors.CheckTypeFailedError, a, "flash.net.URLRequest");
          var c = b.FileLoadingService.instance.createSession();
          c.onprogress = function() {
          };
          c.open(a);
        });
        g.registerNativeFunction("Toplevel::registerClassAlias", function(a, b) {
          a || s("TypeError", k.Errors.NullPointerError, "aliasName");
          b || s("TypeError", k.Errors.NullPointerError, "classObject");
          k.aliasesCache.classes.set(b, a);
          k.aliasesCache.names[a] = b;
        });
        g.registerNativeFunction("Toplevel::getClassByAlias", function(a) {
          a || s("TypeError", k.Errors.NullPointerError, "aliasName");
          var b = k.aliasesCache.names[a];
          b || s("ReferenceError", k.Errors.ClassNotFoundError, a);
          return b;
        });
        g.registerNativeFunction("isFinite", isFinite);
      };
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load Flash TS Dependencies");
console.time("Load AVM1 Dependencies");
(function(b) {
  (function(b) {
    var g = function() {
      function b(f, g) {
        this.array = f;
        this.position = 0;
        this.end = f.length;
        this.readANSI = 6 > g;
        var k = new ArrayBuffer(4);
        (new Int32Array(k))[0] = 1;
        if (!(new Uint8Array(k))[0]) {
          throw Error("big-endian platform");
        }
      }
      b.prototype.readUI8 = function() {
        return this.array[this.position++];
      };
      b.prototype.readUI16 = function() {
        var b = this.position, f = this.array, f = f[b + 1] << 8 | f[b];
        this.position = b + 2;
        return f;
      };
      b.prototype.readSI16 = function() {
        var b = this.position, f = this.array, f = f[b + 1] << 8 | f[b];
        this.position = b + 2;
        return 32768 > f ? f : f - 65536;
      };
      b.prototype.readInteger = function() {
        var b = this.position, f = this.array, f = f[b] | f[b + 1] << 8 | f[b + 2] << 16 | f[b + 3] << 24;
        this.position = b + 4;
        return f;
      };
      b.prototype.readFloat = function() {
        var b = this.position, f = this.array, g = new ArrayBuffer(4), d = new Uint8Array(g);
        d[0] = f[b];
        d[1] = f[b + 1];
        d[2] = f[b + 2];
        d[3] = f[b + 3];
        this.position = b + 4;
        return(new Float32Array(g))[0];
      };
      b.prototype.readDouble = function() {
        var b = this.position, f = this.array, g = new ArrayBuffer(8), d = new Uint8Array(g);
        d[4] = f[b];
        d[5] = f[b + 1];
        d[6] = f[b + 2];
        d[7] = f[b + 3];
        d[0] = f[b + 4];
        d[1] = f[b + 5];
        d[2] = f[b + 6];
        d[3] = f[b + 7];
        this.position = b + 8;
        return(new Float64Array(g))[0];
      };
      b.prototype.readBoolean = function() {
        return!!this.readUI8();
      };
      b.prototype.readANSIString = function() {
        for (var b = "", f;f = this.readUI8();) {
          b += String.fromCharCode(f);
        }
        return b;
      };
      b.prototype.readUTF8String = function() {
        for (var b = "", f;f = this.readUI8();) {
          if (128 > f) {
            b += String.fromCharCode(f);
          } else {
            if (128 === (f & 192)) {
              throw Error("Invalid UTF8 encoding");
            }
            var g = 192, d = 5;
            do {
              var a = g >> 1 | 128;
              if ((f & a) === g) {
                break;
              }
              g = a;
              --d;
            } while (0 <= d);
            g = f & (1 << d) - 1;
            for (a = 5;a >= d;--a) {
              f = this.readUI8();
              if (128 !== (f & 192)) {
                throw Error("Invalid UTF8 encoding");
              }
              g = g << 6 | f & 63;
            }
            b = 65536 <= g ? b + String.fromCharCode(g - 65536 >> 10 & 1023 | 55296, g & 1023 | 56320) : b + String.fromCharCode(g);
          }
        }
        return b;
      };
      b.prototype.readString = function() {
        return this.readANSI ? this.readANSIString() : this.readUTF8String();
      };
      b.prototype.readBytes = function(b) {
        var f = this.position, g = Math.max(this.end - f, 0);
        g < b && (b = g);
        g = this.array.subarray(f, f + b);
        this.position = f + b;
        return g;
      };
      return b;
    }();
    b.ActionsDataStream = g;
  })(b.AVM1 || (b.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      b[b.None = 0] = "None";
      b[b.ActionGotoFrame = 129] = "ActionGotoFrame";
      b[b.ActionGetURL = 131] = "ActionGetURL";
      b[b.ActionNextFrame = 4] = "ActionNextFrame";
      b[b.ActionPreviousFrame = 5] = "ActionPreviousFrame";
      b[b.ActionPlay = 6] = "ActionPlay";
      b[b.ActionStop = 7] = "ActionStop";
      b[b.ActionToggleQuality = 8] = "ActionToggleQuality";
      b[b.ActionStopSounds = 9] = "ActionStopSounds";
      b[b.ActionWaitForFrame = 138] = "ActionWaitForFrame";
      b[b.ActionSetTarget = 139] = "ActionSetTarget";
      b[b.ActionGoToLabel = 140] = "ActionGoToLabel";
      b[b.ActionPush = 150] = "ActionPush";
      b[b.ActionPop = 23] = "ActionPop";
      b[b.ActionAdd = 10] = "ActionAdd";
      b[b.ActionSubtract = 11] = "ActionSubtract";
      b[b.ActionMultiply = 12] = "ActionMultiply";
      b[b.ActionDivide = 13] = "ActionDivide";
      b[b.ActionEquals = 14] = "ActionEquals";
      b[b.ActionLess = 15] = "ActionLess";
      b[b.ActionAnd = 16] = "ActionAnd";
      b[b.ActionOr = 17] = "ActionOr";
      b[b.ActionNot = 18] = "ActionNot";
      b[b.ActionStringEquals = 19] = "ActionStringEquals";
      b[b.ActionStringLength = 20] = "ActionStringLength";
      b[b.ActionMBStringLength = 49] = "ActionMBStringLength";
      b[b.ActionStringAdd = 33] = "ActionStringAdd";
      b[b.ActionStringExtract = 21] = "ActionStringExtract";
      b[b.ActionMBStringExtract = 53] = "ActionMBStringExtract";
      b[b.ActionStringLess = 41] = "ActionStringLess";
      b[b.ActionToInteger = 24] = "ActionToInteger";
      b[b.ActionCharToAscii = 50] = "ActionCharToAscii";
      b[b.ActionMBCharToAscii = 54] = "ActionMBCharToAscii";
      b[b.ActionAsciiToChar = 51] = "ActionAsciiToChar";
      b[b.ActionMBAsciiToChar = 55] = "ActionMBAsciiToChar";
      b[b.ActionJump = 153] = "ActionJump";
      b[b.ActionIf = 157] = "ActionIf";
      b[b.ActionCall = 158] = "ActionCall";
      b[b.ActionGetVariable = 28] = "ActionGetVariable";
      b[b.ActionSetVariable = 29] = "ActionSetVariable";
      b[b.ActionGetURL2 = 154] = "ActionGetURL2";
      b[b.ActionGotoFrame2 = 159] = "ActionGotoFrame2";
      b[b.ActionSetTarget2 = 32] = "ActionSetTarget2";
      b[b.ActionGetProperty = 34] = "ActionGetProperty";
      b[b.ActionSetProperty = 35] = "ActionSetProperty";
      b[b.ActionCloneSprite = 36] = "ActionCloneSprite";
      b[b.ActionRemoveSprite = 37] = "ActionRemoveSprite";
      b[b.ActionStartDrag = 39] = "ActionStartDrag";
      b[b.ActionEndDrag = 40] = "ActionEndDrag";
      b[b.ActionWaitForFrame2 = 141] = "ActionWaitForFrame2";
      b[b.ActionTrace = 38] = "ActionTrace";
      b[b.ActionGetTime = 52] = "ActionGetTime";
      b[b.ActionRandomNumber = 48] = "ActionRandomNumber";
      b[b.ActionCallFunction = 61] = "ActionCallFunction";
      b[b.ActionCallMethod = 82] = "ActionCallMethod";
      b[b.ActionConstantPool = 136] = "ActionConstantPool";
      b[b.ActionDefineFunction = 155] = "ActionDefineFunction";
      b[b.ActionDefineLocal = 60] = "ActionDefineLocal";
      b[b.ActionDefineLocal2 = 65] = "ActionDefineLocal2";
      b[b.ActionDelete = 58] = "ActionDelete";
      b[b.ActionDelete2 = 59] = "ActionDelete2";
      b[b.ActionEnumerate = 70] = "ActionEnumerate";
      b[b.ActionEquals2 = 73] = "ActionEquals2";
      b[b.ActionGetMember = 78] = "ActionGetMember";
      b[b.ActionInitArray = 66] = "ActionInitArray";
      b[b.ActionInitObject = 67] = "ActionInitObject";
      b[b.ActionNewMethod = 83] = "ActionNewMethod";
      b[b.ActionNewObject = 64] = "ActionNewObject";
      b[b.ActionSetMember = 79] = "ActionSetMember";
      b[b.ActionTargetPath = 69] = "ActionTargetPath";
      b[b.ActionWith = 148] = "ActionWith";
      b[b.ActionToNumber = 74] = "ActionToNumber";
      b[b.ActionToString = 75] = "ActionToString";
      b[b.ActionTypeOf = 68] = "ActionTypeOf";
      b[b.ActionAdd2 = 71] = "ActionAdd2";
      b[b.ActionLess2 = 72] = "ActionLess2";
      b[b.ActionModulo = 63] = "ActionModulo";
      b[b.ActionBitAnd = 96] = "ActionBitAnd";
      b[b.ActionBitLShift = 99] = "ActionBitLShift";
      b[b.ActionBitOr = 97] = "ActionBitOr";
      b[b.ActionBitRShift = 100] = "ActionBitRShift";
      b[b.ActionBitURShift = 101] = "ActionBitURShift";
      b[b.ActionBitXor = 98] = "ActionBitXor";
      b[b.ActionDecrement = 81] = "ActionDecrement";
      b[b.ActionIncrement = 80] = "ActionIncrement";
      b[b.ActionPushDuplicate = 76] = "ActionPushDuplicate";
      b[b.ActionReturn = 62] = "ActionReturn";
      b[b.ActionStackSwap = 77] = "ActionStackSwap";
      b[b.ActionStoreRegister = 135] = "ActionStoreRegister";
      b[b.ActionInstanceOf = 84] = "ActionInstanceOf";
      b[b.ActionEnumerate2 = 85] = "ActionEnumerate2";
      b[b.ActionStrictEquals = 102] = "ActionStrictEquals";
      b[b.ActionGreater = 103] = "ActionGreater";
      b[b.ActionStringGreater = 104] = "ActionStringGreater";
      b[b.ActionDefineFunction2 = 142] = "ActionDefineFunction2";
      b[b.ActionExtends = 105] = "ActionExtends";
      b[b.ActionCastOp = 43] = "ActionCastOp";
      b[b.ActionImplementsOp = 44] = "ActionImplementsOp";
      b[b.ActionTry = 143] = "ActionTry";
      b[b.ActionThrow = 42] = "ActionThrow";
      b[b.ActionFSCommand2 = 45] = "ActionFSCommand2";
      b[b.ActionStrictMode = 137] = "ActionStrictMode";
    })(b.ActionCode || (b.ActionCode = {}));
    var g = function() {
      return function(b) {
        this.registerNumber = b;
      };
    }();
    b.ParsedPushRegisterAction = g;
    var f = function() {
      return function(b) {
        this.constantIndex = b;
      };
    }();
    b.ParsedPushConstantAction = f;
    (function(b) {
      b[b.None = 0] = "None";
      b[b.Argument = 1] = "Argument";
      b[b.This = 2] = "This";
      b[b.Arguments = 4] = "Arguments";
      b[b.Super = 8] = "Super";
      b[b.Global = 16] = "Global";
      b[b.Parent = 32] = "Parent";
      b[b.Root = 64] = "Root";
    })(b.ArgumentAssignmentType || (b.ArgumentAssignmentType = {}));
    var t = function() {
      function m(b) {
        this.stream = b;
      }
      Object.defineProperty(m.prototype, "position", {get:function() {
        return this.stream.position;
      }, set:function(b) {
        this.stream.position = b;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(m.prototype, "eof", {get:function() {
        return this.stream.position >= this.stream.end;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(m.prototype, "length", {get:function() {
        return this.stream.end;
      }, enumerable:!0, configurable:!0});
      m.prototype.readNext = function() {
        var d = this.stream, a = d.position, c = d.readUI8(), m = 128 <= c ? d.readUI16() : 0, m = d.position + m, p = null;
        switch(c | 0) {
          case 129:
            var e = d.readUI16(), p = d.readUI8(), q = !1;
            6 !== p && 7 !== p ? d.position-- : (m++, q = 6 === p);
            p = [e, q];
            break;
          case 131:
            e = d.readString();
            p = d.readString();
            p = [e, p];
            break;
          case 138:
            var e = d.readUI16(), l = d.readUI8(), p = [e, l];
            break;
          case 139:
            p = [d.readString()];
            break;
          case 140:
            p = [d.readString()];
            break;
          case 150:
            for (p = [];d.position < m;) {
              e = d.readUI8();
              switch(e | 0) {
                case 0:
                  e = d.readString();
                  break;
                case 1:
                  e = d.readFloat();
                  break;
                case 2:
                  e = null;
                  break;
                case 3:
                  e = void 0;
                  break;
                case 4:
                  e = new g(d.readUI8());
                  break;
                case 5:
                  e = d.readBoolean();
                  break;
                case 6:
                  e = d.readDouble();
                  break;
                case 7:
                  e = d.readInteger();
                  break;
                case 8:
                  e = new f(d.readUI8());
                  break;
                case 9:
                  e = new f(d.readUI16());
                  break;
                default:
                  console.error("Unknown value type: " + e);
                  d.position = m;
                  continue;
              }
              p.push(e);
            }
            break;
          case 153:
            e = d.readSI16();
            p = [e];
            break;
          case 157:
            e = d.readSI16();
            p = [e];
            break;
          case 154:
            e = d.readUI8();
            p = [e];
            break;
          case 159:
            e = d.readUI8();
            p = [e];
            e & 2 && p.push(d.readUI16());
            break;
          case 141:
            l = d.readUI8();
            p = [l];
            break;
          case 136:
            for (var l = d.readUI16(), e = [], u = 0;u < l;u++) {
              e.push(d.readString());
            }
            p = [e];
            break;
          case 155:
            p = d.readString();
            l = d.readUI16();
            q = [];
            for (u = 0;u < l;u++) {
              q.push(d.readString());
            }
            e = d.readUI16();
            m += e;
            e = new b.AVM1ActionsData(d.readBytes(e), this.dataId + "_f" + d.position);
            p = [e, p, q];
            break;
          case 148:
            e = d.readUI16();
            m += e;
            p = [new b.AVM1ActionsData(d.readBytes(e), this.dataId + "_w" + d.position)];
            break;
          case 135:
            var w = d.readUI8(), p = [w];
            break;
          case 142:
            for (var p = d.readString(), l = d.readUI16(), r = d.readUI8(), e = d.readUI16(), h = [], q = [], u = 0;u < l;u++) {
              var w = d.readUI8(), x = d.readString();
              q.push(x);
              w && (h[w] = {type:1, name:x, index:u});
            }
            l = 1;
            e & 1 && (h[l++] = {type:2});
            e & 4 && (h[l++] = {type:4});
            e & 16 && (h[l++] = {type:8});
            e & 64 && (h[l++] = {type:64});
            e & 128 && (h[l++] = {type:32});
            e & 256 && (h[l++] = {type:16});
            l = 0;
            e & 2 && (l |= 2);
            e & 8 && (l |= 4);
            e & 32 && (l |= 8);
            e = d.readUI16();
            m += e;
            e = new b.AVM1ActionsData(d.readBytes(e), this.dataId + "_f" + d.position);
            p = [e, p, q, r, h, l];
            break;
          case 143:
            e = d.readUI8();
            p = !!(e & 4);
            q = !!(e & 2);
            e = !!(e & 1);
            l = d.readUI16();
            u = d.readUI16();
            h = d.readUI16();
            r = p ? d.readUI8() : d.readString();
            m += l + u + h;
            l = new b.AVM1ActionsData(d.readBytes(l), this.dataId + "_t" + d.position);
            u = new b.AVM1ActionsData(d.readBytes(u), this.dataId + "_c" + d.position);
            h = new b.AVM1ActionsData(d.readBytes(h), this.dataId + "_z" + d.position);
            p = [p, r, l, e, u, q, h];
            break;
          case 137:
            p = [d.readUI8()];
        }
        d.position = m;
        return{position:a, actionCode:c, actionName:s[c], args:p};
      };
      m.prototype.skip = function(b) {
        for (var a = this.stream;0 < b && a.position < a.end;) {
          var c = 128 <= a.readUI8() ? a.readUI16() : 0;
          a.position += c;
          b--;
        }
      };
      return m;
    }();
    b.ActionsDataParser = t;
    var s = {0:"EOA", 4:"ActionNextFrame", 5:"ActionPreviousFrame", 6:"ActionPlay", 7:"ActionStop", 8:"ActionToggleQuality", 9:"ActionStopSounds", 10:"ActionAdd", 11:"ActionSubtract", 12:"ActionMultiply", 13:"ActionDivide", 14:"ActionEquals", 15:"ActionLess", 16:"ActionAnd", 17:"ActionOr", 18:"ActionNot", 19:"ActionStringEquals", 20:"ActionStringLength", 21:"ActionStringExtract", 23:"ActionPop", 24:"ActionToInteger", 28:"ActionGetVariable", 29:"ActionSetVariable", 32:"ActionSetTarget2", 33:"ActionStringAdd", 
    34:"ActionGetProperty", 35:"ActionSetProperty", 36:"ActionCloneSprite", 37:"ActionRemoveSprite", 38:"ActionTrace", 39:"ActionStartDrag", 40:"ActionEndDrag", 41:"ActionStringLess", 42:"ActionThrow", 43:"ActionCastOp", 44:"ActionImplementsOp", 45:"ActionFSCommand2", 48:"ActionRandomNumber", 49:"ActionMBStringLength", 50:"ActionCharToAscii", 51:"ActionAsciiToChar", 52:"ActionGetTime", 53:"ActionMBStringExtract", 54:"ActionMBCharToAscii", 55:"ActionMBAsciiToChar", 58:"ActionDelete", 59:"ActionDelete2", 
    60:"ActionDefineLocal", 61:"ActionCallFunction", 62:"ActionReturn", 63:"ActionModulo", 64:"ActionNewObject", 65:"ActionDefineLocal2", 66:"ActionInitArray", 67:"ActionInitObject", 68:"ActionTypeOf", 69:"ActionTargetPath", 70:"ActionEnumerate", 71:"ActionAdd2", 72:"ActionLess2", 73:"ActionEquals2", 74:"ActionToNumber", 75:"ActionToString", 76:"ActionPushDuplicate", 77:"ActionStackSwap", 78:"ActionGetMember", 79:"ActionSetMember", 80:"ActionIncrement", 81:"ActionDecrement", 82:"ActionCallMethod", 
    83:"ActionNewMethod", 84:"ActionInstanceOf", 85:"ActionEnumerate2", 96:"ActionBitAnd", 97:"ActionBitOr", 98:"ActionBitXor", 99:"ActionBitLShift", 100:"ActionBitRShift", 101:"ActionBitURShift", 102:"ActionStrictEquals", 103:"ActionGreater", 104:"ActionStringGreater", 105:"ActionExtends", 129:"ActionGotoFrame", 131:"ActionGetURL", 135:"ActionStoreRegister", 136:"ActionConstantPool", 137:"ActionStrictMode", 138:"ActionWaitForFrame", 139:"ActionSetTarget", 140:"ActionGoToLabel", 141:"ActionWaitForFrame2", 
    142:"ActionDefineFunction2", 143:"ActionTry", 148:"ActionWith", 150:"ActionPush", 153:"ActionJump", 154:"ActionGetURL2", 155:"ActionDefineFunction", 157:"ActionIf", 158:"ActionCall", 159:"ActionGotoFrame2"};
  })(b.AVM1 || (b.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    var g = function() {
      function b() {
      }
      b.prototype.analyze = function(b) {
        for (var f = [], g = [0], d = [!0], a = [0];0 < a.length;) {
          var c = a.shift();
          if (!f[c]) {
            for (b.position = c;!b.eof && !f[c];) {
              var k = b.readNext();
              if (0 === k.actionCode) {
                break;
              }
              var p = b.position, e = {action:k, next:p, conditionalJumpTo:-1}, q = 0, l = !1, u = !1;
              switch(k.actionCode) {
                case 138:
                ;
                case 141:
                  l = !0;
                  b.skip(138 === k.actionCode ? k.args[1] : k.args[0]);
                  q = b.position;
                  b.position = p;
                  break;
                case 153:
                  l = u = !0;
                  q = p + k.args[0];
                  break;
                case 157:
                  l = !0;
                  q = p + k.args[0];
                  break;
                case 42:
                ;
                case 62:
                ;
                case 0:
                  l = u = !0, q = b.length;
              }
              if (l) {
                if (0 > q || q > b.length) {
                  console.error("jump outside the action block;"), q = b.length;
                }
                u ? e.next = q : e.conditionalJumpTo = q;
                d[q] || (g.push(q), a.push(q), d[q] = !0);
              }
              f[c] = e;
              if (u) {
                break;
              }
              c = p;
            }
          }
        }
        var w = [];
        g.forEach(function(a) {
          if (f[a]) {
            var b = [], c = a;
            do {
              c = f[c], b.push(c), c = c.next;
            } while (!d[c] && f[c]);
            w.push({label:a, items:b, jump:c});
          }
        });
        return{actions:f, blocks:w, dataId:b.dataId};
      };
      return b;
    }();
    b.ActionsDataAnalyzer = g;
  })(b.AVM1 || (b.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = b.Debug.assert;
    k.AVM1ActionsData = function() {
      return function(b, f) {
        this.bytes = b;
        this.id = f;
        g(b instanceof Uint8Array);
      };
    }();
    var f = function() {
      function b() {
        this.root = null;
        this.swfVersion = 0;
        this.globals = null;
      }
      b.prototype.flushPendingScripts = function() {
      };
      b.prototype.addAsset = function(b, f, d) {
      };
      b.prototype.registerClass = function(b, f) {
      };
      b.prototype.getAsset = function(b) {
      };
      b.prototype.resolveTarget = function(b) {
      };
      b.prototype.resolveLevel = function(b) {
      };
      b.prototype.addToPendingScripts = function(b) {
      };
      b.prototype.executeActions = function(b, f) {
      };
      b.instance = null;
      return b;
    }();
    k.AVM1Context = f;
  })(b.AVM1 || (b.AVM1 = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(b, k) {
  function g() {
    this.constructor = b;
  }
  for (var f in k) {
    k.hasOwnProperty(f) && (b[f] = k[f]);
  }
  g.prototype = k.prototype;
  b.prototype = new g;
};
(function(b) {
  (function(k) {
    function g(a) {
      for (var b = 0;b < arguments.length - 1;b++) {
      }
      if (k.avm1ErrorsEnabled.value) {
        try {
          throw Error(a);
        } catch (c) {
        }
      }
      warn.apply(null, arguments);
    }
    function f(a) {
      return "object" === typeof a && a && a instanceof b.AVM2.AS.avm1lib.AVM1MovieClip;
    }
    function t(a) {
      if (null === a) {
        return "null";
      }
      var b = typeof a;
      return "function" === b ? "object" : "object" === b && f(a) ? "movieclip" : b;
    }
    function s(a) {
      return "object" !== t(a) ? a : a.valueOf();
    }
    function m() {
      return k.AVM1Context.instance.swfVersion;
    }
    function d(a) {
      return "object" !== t(a) ? a : a instanceof Date && 6 <= m() ? a.toString() : a.valueOf();
    }
    function a(a) {
      switch(t(a)) {
        default:
        ;
        case "undefined":
        ;
        case "null":
          return!1;
        case "boolean":
          return a;
        case "number":
          return 0 !== a && !isNaN(a);
        case "string":
          return 0 !== a.length;
        case "movieclip":
        ;
        case "object":
          return!0;
      }
    }
    function c(a) {
      a = s(a);
      switch(t(a)) {
        case "undefined":
        ;
        case "null":
          return 7 <= m() ? NaN : 0;
        case "boolean":
          return a ? 1 : 0;
        case "number":
          return a;
        case "string":
          return "" === a && 5 > m() ? 0 : +a;
        default:
          return 5 <= m() ? NaN : 0;
      }
    }
    function n(a) {
      a = c(a);
      return isNaN(a) || !isFinite(a) || 0 === a ? 0 : a | 0;
    }
    function p(a) {
      switch(t(a)) {
        case "undefined":
          return 7 <= m() ? "undefined" : "";
        case "null":
          return "null";
        case "boolean":
          return a ? "true" : "false";
        case "number":
          return a.toString();
        case "string":
          return a;
        case "movieclip":
          return a.__targetPath;
        case "object":
          if ("function" === typeof a && a.asGetPublicProperty("toString") === b.AVM2.AS.ASFunction.traitsPrototype.asGetPublicProperty("toString")) {
            return "[type Function]";
          }
          var c = a.asCallPublicProperty("toString", null);
          return "string" === typeof c ? c : "function" === typeof a ? "[type Function]" : "[type Object]";
      }
    }
    function e(a, b) {
      var d = s(a), h = s(b);
      return "string" === typeof d && "string" === typeof h ? d < h : c(d) < c(h);
    }
    function q(a, c) {
      if (b.isNullOrUndefined(a)) {
        return g("AVM1 warning: cannot look up member '" + c + "' on undefined object"), null;
      }
      a = Object(a);
      if (Lb.getPublicQualifiedName(c) in a) {
        return c;
      }
      if (Mb(c)) {
        return null;
      }
      if (f(a) && a.__lookupChild(c)) {
        return c;
      }
      if (6 < m()) {
        return null;
      }
      var d = null, e = c.toLowerCase();
      h(a, function(a) {
        a.toLowerCase() === e && (d = a);
      });
      return d;
    }
    function l(a, c) {
      if (b.isNullOrUndefined(a)) {
        g("AVM1 warning: cannot get property '" + c + "' on undefined object");
      } else {
        return a = Object(a), !a.asHasProperty(void 0, c, 0) && f(a) ? a.__lookupChild(c) : a.asGetPublicProperty(c);
      }
    }
    function u(a) {
      return a && a.asGetPublicProperty("prototype");
    }
    function w(a) {
      return "undefined" !== typeof InternalError && a instanceof InternalError && "too much recursion" === a.message ? new ua("long running script -- AVM1 recursion limit is reached") : a;
    }
    function r(a, c) {
      var d;
      if (a instanceof b.AVM2.AS.ASClass) {
        d = Nb(a, c);
      } else {
        if (!La(a)) {
          return;
        }
        d = Object.create(u(a) || u(Object));
        a.apply(d, c);
      }
      d.constructor = a;
      return d;
    }
    function h(a, b) {
      Ob(a, b, null);
      if (f(a)) {
        for (var c = a._nativeAS3Object, d = 0, h = c._children.length;d < h;d++) {
          var e = c._children[d].name;
          a.asHasProperty(void 0, e, 0) || b.call(null, e);
        }
      }
    }
    function x(a) {
      var b = a.asGetPublicProperty("prototype");
      return "undefined" === typeof Proxy ? (console.error("ES6 proxies are not found"), b) : Proxy.create({getOwnPropertyDescriptor:function(a) {
        return Object.getOwnPropertyDescriptor(b, a);
      }, getPropertyDescriptor:function(a) {
        for (var c = b;c;c = Object.getPrototypeOf(c)) {
          var d = Object.getOwnPropertyDescriptor(c, a);
          if (d) {
            return d;
          }
        }
      }, getOwnPropertyNames:function() {
        return Object.getOwnPropertyNames(b);
      }, getPropertyNames:function() {
        for (var a = Object.getOwnPropertyNames(b), c = Object.getPrototypeOf(b);c;c = Object.getPrototypeOf(c)) {
          a = a.concat(Object.getOwnPropertyNames(c));
        }
        return a;
      }, defineProperty:function(c, d) {
        d && ("function" === typeof d.value && "_setClass" in d.value && d.value._setClass(a), "function" === typeof d.get && "_setClass" in d.get && d.get._setClass(a), "function" === typeof d.set && "_setClass" in d.set && d.set._setClass(a));
        return Object.defineProperty(b, c, d);
      }, delete:function(a) {
        return delete b[a];
      }, fix:function() {
      }});
    }
    function y(a, b, c) {
      if (!b.executionProhibited) {
        var d = Va.get(), h = b.initialScope.create(c), e = k.AVM1Context.instance, f;
        try {
          k.AVM1Context.instance = b, b.isActive = !0, b.abortExecutionAt = k.avm1TimeoutDisabled.value ? Number.MAX_VALUE : Date.now() + 1E3, b.errorsIgnored = 0, b.defaultTarget = c, b.currentTarget = null, d.message("ActionScript Execution Starts"), d.indent(), za(a, h, [], []);
        } catch (g) {
          f = w(g), f instanceof ua && (b.executionProhibited = !0, console.error("Disabling AVM1 execution"));
        }
        b.isActive = !1;
        b.defaultTarget = null;
        b.currentTarget = null;
        d.unindent();
        d.message("ActionScript Execution Stops");
        k.AVM1Context.instance = e;
        if (f) {
          throw f;
        }
      }
    }
    function G(a, b, c) {
      var d = a.split(/[\/.]/g);
      "" === d[d.length - 1] && d.pop();
      if ("" === d[0] || "_level0" === d[0] || "_root" === d[0]) {
        b = c, d.shift();
      }
      for (;0 < d.length;) {
        c = b;
        b = b.__lookupChild(d[0]);
        if (!b) {
          throw Error(d[0] + " (expr " + a + ") is not found in " + c._target);
        }
        d.shift();
      }
      return b;
    }
    function I(a, b) {
      if (a === Array) {
        var c = b;
        1 == b.length && "number" === typeof b[0] && (c = [], c.length = b[0]);
        return c;
      }
      if (a === Boolean || a === Number || a === String || a === Function) {
        return a.apply(null, b);
      }
      if (a === Date) {
        switch(b.length) {
          case 0:
            return new Date;
          case 1:
            return new Date(b[0]);
          default:
            return new Date(b[0], b[1], 2 < b.length ? b[2] : 1, 3 < b.length ? b[3] : 0, 4 < b.length ? b[4] : 0, 5 < b.length ? b[5] : 0, 6 < b.length ? b[6] : 0);
        }
      }
      if (a === Object) {
        return{};
      }
    }
    function C(a, b) {
      if (isNaN(a) || 0 > a || a > b || a != (0 | a)) {
        throw Error("Invalid number of arguments: " + a);
      }
    }
    function E(a) {
      var b = +a.pop();
      C(b, a.length);
      for (var c = [], d = 0;d < b;d++) {
        c.push(a.pop());
      }
      return c;
    }
    function O(a, b) {
      var c = a.context, d = a.global;
      if (b) {
        try {
          var h = G(b, c.currentTarget || c.defaultTarget, d.asGetPublicProperty("_root"));
          c.currentTarget = h;
        } catch (e) {
          throw c.currentTarget = null, e;
        }
      } else {
        c.currentTarget = null;
      }
    }
    function K(a, b, c, d, h, e, f) {
      function g() {
        if (!l.executionProhibited) {
          var a, c = {};
          f & 4 || c.asSetPublicProperty("arguments", arguments);
          f & 2 || c.asSetPublicProperty("this", this);
          f & 8 || c.asSetPublicProperty("super", Ja);
          c.asSetPublicProperty("__class", s);
          a = n.create(c);
          var h, y = [];
          if (e) {
            for (h = 0;h < e.length;h++) {
              var Ca = e[h];
              if (Ca) {
                switch(Ca.type) {
                  case 1:
                    y[h] = arguments[Ca.index];
                    break;
                  case 2:
                    y[h] = this;
                    break;
                  case 4:
                    y[h] = arguments;
                    break;
                  case 8:
                    y[h] = Ja;
                    break;
                  case 16:
                    y[h] = m;
                    break;
                  case 32:
                    y[h] = r.asGetPublicProperty("_parent");
                    break;
                  case 64:
                    y[h] = m.asGetPublicProperty("_root");
                }
              }
            }
          }
          for (h = 0;h < arguments.length || h < d.length;h++) {
            u && u[h] || c.asSetPublicProperty(d[h], arguments[h]);
          }
          c = k.AVM1Context.instance;
          h = l.isActive;
          var Ca = l.defaultTarget, w = l.currentTarget, t, G;
          try {
            k.AVM1Context.instance = l;
            h || (l.abortExecutionAt = k.avm1TimeoutDisabled.value ? Number.MAX_VALUE : Date.now() + 1E3, l.errorsIgnored = 0, l.isActive = !0);
            l.defaultTarget = x;
            l.currentTarget = null;
            p.indent();
            if (256 <= ++l.stackDepth) {
              throw new ua("long running script -- AVM1 recursion limit is reached");
            }
            t = za(b, a, q, y);
          } catch (E) {
            G = E;
          }
          l.defaultTarget = Ca;
          l.currentTarget = w;
          l.isActive = h;
          l.stackDepth--;
          p.unindent();
          k.AVM1Context.instance = c;
          if (G) {
            throw G;
          }
          return t;
        }
      }
      var l = a.context, m = a.global, n = a.scopeContainer, r = a.scope, p = a.actionTracer, x = l.defaultTarget, q = a.constantPool, u = null;
      if (e) {
        for (a = 0;a < e.length;a++) {
          (h = e[a]) && 1 === h.type && (u || (u = []), u[e[a].index] = !0);
        }
      }
      var s;
      s = g;
      g._setClass = function(a) {
        s = a;
      };
      g.instanceConstructor = g;
      g.debugName = "avm1 " + (c || "<function>");
      c && (g.name = c);
      return g;
    }
    function F(a, b, c) {
      var d = a.global;
      a = a.context;
      a = a.currentTarget || a.defaultTarget;
      var h, e;
      if (0 <= b.indexOf(":")) {
        e = b.split(":");
        h = G(e[0], a, d.asGetPublicProperty("_root"));
        if (!h) {
          throw Error(e[0] + " is undefined");
        }
        e = e[1];
      } else {
        if (0 <= b.indexOf(".")) {
          for (b = b.split("."), e = b.pop(), h = d, d = 0;d < b.length;d++) {
            if (h = h.asGetPublicProperty(b[d]) || h[b[d]], !h) {
              throw Error(b.slice(0, d + 1) + " is undefined");
            }
          }
        }
      }
      if (!h) {
        return null;
      }
      d = q(h, e);
      return(b = null !== d) || c ? {obj:h, name:d || e, resolved:b} : null;
    }
    function J(a, b) {
      var c = a.scopeContainer, d = a.context, d = d.currentTarget || d.defaultTarget, h = a.scope;
      if (h.asHasProperty(void 0, b, 0)) {
        return h.asGetPublicProperty(b);
      }
      var e = F(a, b, !1);
      if (e) {
        return e.obj.asGetPublicProperty(e.name);
      }
      if (e = q(h, b)) {
        return h.asGetPublicProperty(e);
      }
      for (;c;c = c.next) {
        if (e = q(c.scope, b), null !== e) {
          return c.scope.asGetPublicProperty(e);
        }
      }
      if (d.asHasProperty(void 0, b, 0)) {
        return d.asGetPublicProperty(b);
      }
      if ("this" === b) {
        return d;
      }
      if (c = f(d) && d.__lookupChild(b)) {
        return c;
      }
    }
    function A(a, b) {
      var c = a.global, d = b[0];
      b[1] ? c.gotoAndPlay(d + 1) : c.gotoAndStop(d + 1);
    }
    function B(a, b) {
      a.global.getURL(b[0], b[1]);
    }
    function z(a) {
      a.global.nextFrame();
    }
    function P(a) {
      a.global.prevFrame();
    }
    function D(a) {
      a.global.play();
    }
    function L(a) {
      a.global.stop();
    }
    function M(a) {
      a.global.toggleHighQuality();
    }
    function V(a) {
      a.global.stopAllSounds();
    }
    function Q(a, b) {
      return!a.global.ifFrameLoaded(b[0]);
    }
    function U(a, b) {
      O(a, b[0]);
    }
    function S(a, b) {
      a.global.gotoLabel(b[0]);
    }
    function aa(a, b) {
      var c = a.registers, d = a.constantPool, h = a.stack;
      b.forEach(function(a) {
        a instanceof k.ParsedPushConstantAction ? h.push(d[a.constantIndex]) : a instanceof k.ParsedPushRegisterAction ? h.push(c[a.registerNumber]) : h.push(a);
      });
    }
    function $(a) {
      a.stack.pop();
    }
    function ea(a) {
      a = a.stack;
      var b = c(a.pop()), d = c(a.pop());
      a.push(b + d);
    }
    function Z(a) {
      a = a.stack;
      var b = c(a.pop()), d = c(a.pop());
      a.push(d - b);
    }
    function v(a) {
      a = a.stack;
      var b = c(a.pop()), d = c(a.pop());
      a.push(b * d);
    }
    function X(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var d = c(b.pop()), d = c(b.pop()) / d;
      b.push(a ? d : isFinite(d) ? d : "#ERROR#");
    }
    function ba(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var d = c(b.pop()), h = c(b.pop()), d = d == h;
      b.push(a ? d : d ? 1 : 0);
    }
    function R(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var d = c(b.pop()), d = c(b.pop()) < d;
      b.push(a ? d : d ? 1 : 0);
    }
    function H(b) {
      var c = b.stack;
      b = b.isSwfVersion5;
      var d = a(c.pop()), h = a(c.pop()), d = d && h;
      c.push(b ? d : d ? 1 : 0);
    }
    function Y(b) {
      var c = b.stack;
      b = b.isSwfVersion5;
      var d = a(c.pop()), h = a(c.pop()), d = d || h;
      c.push(b ? d : d ? 1 : 0);
    }
    function ga(b) {
      var c = b.stack;
      b = b.isSwfVersion5;
      var d = !a(c.pop());
      c.push(b ? d : d ? 1 : 0);
    }
    function ca(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var c = p(b.pop()), d = p(b.pop()), c = c == d;
      b.push(a ? c : c ? 1 : 0);
    }
    function ka(a) {
      var b = a.stack;
      a = a.global;
      var c = p(b.pop());
      b.push(a.length(c));
    }
    function W(a) {
      var b = a.stack;
      a = a.global;
      var c = p(b.pop());
      b.push(a.length(c));
    }
    function ha(a) {
      a = a.stack;
      var b = p(a.pop()), c = p(a.pop());
      a.push(c + b);
    }
    function da(a) {
      var b = a.stack;
      a = a.global;
      var c = b.pop(), d = b.pop(), h = p(b.pop());
      b.push(a.substring(h, d, c));
    }
    function ja(a) {
      var b = a.stack;
      a = a.global;
      var c = b.pop(), d = b.pop(), h = p(b.pop());
      b.push(a.mbsubstring(h, d, c));
    }
    function N(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var c = p(b.pop()), c = p(b.pop()) < c;
      b.push(a ? c : c ? 1 : 0);
    }
    function ma(a) {
      var b = a.stack;
      b.push(a.global.int(b.pop()));
    }
    function T(a) {
      var b = a.stack;
      a = a.global;
      var c = b.pop();
      a = a.ord(c);
      b.push(a);
    }
    function oa(a) {
      var b = a.stack;
      a = a.global;
      var c = b.pop();
      a = a.mbord(c);
      b.push(a);
    }
    function pa(a) {
      var b = a.stack;
      a = a.global;
      var c = +b.pop();
      a = a.chr(c);
      b.push(a);
    }
    function na(a) {
      var b = a.stack;
      a = a.global;
      var c = +b.pop();
      a = a.mbchr(c);
      b.push(a);
    }
    function fa(a, b) {
    }
    function sa(a, b) {
      return!!a.stack.pop();
    }
    function xa(a) {
      var b = a.global;
      a = a.stack.pop();
      b.call(a);
    }
    function la(a) {
      var b = a.stack, c = "" + b.pop(), d = b.length;
      b.push(void 0);
      b[d] = J(a, c);
    }
    function qa(a) {
      var b = a.stack, c = b.pop();
      a: {
        var b = "" + b.pop(), d = a.scopeContainer, h = a.context, e = h.currentTarget || h.defaultTarget, f = a.scope;
        if (h.currentTarget) {
          e.asSetPublicProperty(b, c);
        } else {
          if (f.asHasProperty(void 0, b, 0)) {
            f.asSetPublicProperty(b, c);
          } else {
            if (a = F(a, b, !0)) {
              a.obj.asSetPublicProperty(a.name, c);
            } else {
              for (a = d;a.next;a = a.next) {
                if (d = q(a.scope, b), null !== d) {
                  a.scope.asSetPublicProperty(d, c);
                  break a;
                }
              }
              e.asSetPublicProperty(b, c);
            }
          }
        }
      }
    }
    function ia(a, b) {
      var c = a.global, d = a.stack, h = b[0], e = d.pop(), d = d.pop(), f;
      h & 1 ? f = "GET" : h & 2 && (f = "POST");
      h & 64 ? h & 128 ? c.loadVariables(d, e, f) : c.loadMovie(d, e, f) : c.getURL(d, e, f);
    }
    function wa(a, b) {
      var c = a.global, d = b[0], h = [a.stack.pop()];
      d & 2 && h.push(b[1]);
      (d & 1 ? c.gotoAndPlay : c.gotoAndStop).apply(c, h);
    }
    function Ia(a) {
      var b = a.stack.pop();
      O(a, b);
    }
    function va(a) {
      var b = a.global;
      a = a.stack;
      var c = a.pop(), d = a.pop(), h = a.length;
      a.push(void 0);
      a[h] = b.getAVM1Property(d, c);
    }
    function ya(a) {
      var b = a.global, c = a.stack;
      a = c.pop();
      var d = c.pop(), c = c.pop();
      b.setAVM1Property(c, d, a);
    }
    function Ga(a) {
      var b = a.global, c = a.stack;
      a = c.pop();
      var d = c.pop(), c = c.pop();
      b.duplicateMovieClip(c, d, a);
    }
    function Ha(a) {
      var b = a.global;
      a = a.stack.pop();
      b.removeMovieClip(a);
    }
    function Aa(a) {
      var b = a.global, c = a.stack;
      a = c.pop();
      var d = c.pop(), c = c.pop() ? {y2:c.pop(), x2:c.pop(), y1:c.pop(), x1:c.pop()} : null;
      a = [a, d];
      c && (a = a.concat(c.x1, c.y1, c.x2, c.y2));
      b.startDrag.apply(b, a);
    }
    function ra(a) {
      a.global.stopDrag();
    }
    function ta(a, b) {
      var c = a.global, d = a.stack.pop();
      return!c.ifFrameLoaded(d);
    }
    function Ba(a) {
      var b = a.global;
      a = a.stack.pop();
      b.trace(a);
    }
    function Ma(a) {
      a.stack.push(a.global.getTimer());
    }
    function Na(a) {
      var b = a.stack;
      b.push(a.global.random(b.pop()));
    }
    function Oa(a) {
      var b = a.stack, c = a.scope, d = b.pop(), h = E(b), e = b.length;
      b.push(void 0);
      a = J(a, d);
      a instanceof Function ? (Da(b.length === e + 1), b[e] = a.apply(c, h)) : g("AVM1 warning: function '" + d + (a ? "' is not callable" : "' is undefined"));
    }
    function Pa(a) {
      var c = a.stack, d = c.pop(), h = c.pop(), e = E(c), f, k = c.length;
      c.push(void 0);
      b.isNullOrUndefined(h) ? g("AVM1 warning: method '" + d + "' can't be called on undefined object") : b.isNullOrUndefined(d) || "" === d ? (h === Ja ? (h = J(a, "__class").__super, f = J(a, "this")) : f = h, La(h) ? c[k] = h.apply(f, e) : g("AVM1 warning: obj '" + h + (h ? "' is not callable" : "' is undefined")), Da(c.length === k + 1)) : (h === Ja ? (f = u(J(a, "__class").__super), h = J(a, "this")) : f = h, a = q(f, d), f = f.asGetPublicProperty(a), La(f) ? (Da(c.length === k + 1), c[k] = 
      f.apply(h, e)) : g("AVM1 warning: method '" + d + "' on object", h, b.isNullOrUndefined(f) ? "is undefined" : "is not callable"));
    }
    function Qa(a, b) {
      a.constantPool = b[0];
    }
    function Ra(a, b) {
      var c = a.stack, d = a.scope, h = b[1], e = K(a, b[0], h, b[2], 0, null, 0);
      h ? d.asSetPublicProperty(h, e) : c.push(e);
    }
    function Sa(a) {
      var b = a.stack;
      a = a.scope;
      var c = b.pop(), b = b.pop();
      a.asSetPublicProperty(b, c);
    }
    function Ta(a) {
      var b = a.scope;
      a = a.stack.pop();
      b.asSetPublicProperty(a, void 0);
    }
    function Ua(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      c.asSetPublicProperty(b, void 0);
      a.push(c.asDeleteProperty(void 0, b, 0));
    }
    function Wa(a) {
      var b = a.stack, c;
      a: {
        c = b.pop();
        for (a = a.scopeContainer;a;a = a.next) {
          if (a.scope.asHasProperty(void 0, c, 0)) {
            a.scope.asSetPublicProperty(c, void 0);
            c = a.scope.asDeleteProperty(void 0, c, 0);
            break a;
          }
        }
        c = !1;
      }
      b.push(c);
    }
    function Xa(a) {
      var c = a.stack, d = c.pop();
      c.push(null);
      a = J(a, d);
      b.isNullOrUndefined(a) || h(a, function(a) {
        c.push(a);
      });
    }
    function Ya(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      a.push(b == c);
    }
    function Za(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      "prototype" === b ? a.push(x(c)) : (b = q(c, b), a.push(null === b ? void 0 : l(c, b)));
    }
    function $a(a) {
      a = a.stack;
      var b = E(a);
      a.push(b);
    }
    function ab(a) {
      a = a.stack;
      var b = +a.pop();
      C(b, a.length >> 1);
      for (var c = {}, d = 0;d < b;d++) {
        var h = a.pop(), e = a.pop();
        c.asSetPublicProperty(e, h);
      }
      a.push(c);
    }
    function bb(a) {
      a = a.stack;
      var c = a.pop(), d = a.pop(), h = E(a), e = a.length;
      a.push(void 0);
      if (b.isNullOrUndefined(d)) {
        g("AVM1 warning: method '" + c + "' can't be constructed on undefined object");
      } else {
        var f;
        b.isNullOrUndefined(c) || "" === c ? f = d : (f = q(d, c), f = d.asGetPublicProperty(f));
        h = r(f, h);
        void 0 === h && g("AVM1 warning: method '" + c + "' on object", d, "is not constructible");
        a[e] = h;
        Da(a.length === e + 1);
      }
    }
    function cb(a) {
      var b = a.stack, c = b.pop(), d = E(b), h = b.length;
      b.push(void 0);
      a = J(a, c);
      var e = I(a, d);
      void 0 === e && (e = r(a, d), void 0 === e && g("AVM1 warning: object '" + c + (a ? "' is not constructible" : "' is undefined")));
      Da(b.length === h + 1);
      b[h] = e;
    }
    function db(a) {
      var c = a.stack;
      a = c.pop();
      var d = c.pop(), c = c.pop();
      b.isNullOrUndefined(c) ? g("AVM1 warning: cannot set member '" + d + "' on undefined object") : c.asSetPublicProperty(d, a);
    }
    function eb(a) {
      a = a.stack;
      var b = a.pop();
      a.push("movieclip" === t(b) ? b._target : void 0);
    }
    function fb(a, b) {
      var c = b[0], d = a.stack.pop(), h = a.constantPool, e = a.registers, d = a.scopeContainer.create(Object(d));
      za(c, d, h, e);
    }
    function gb(a) {
      a = a.stack;
      a.push(c(a.pop()));
    }
    function hb(a) {
      a = a.stack;
      a.push(p(a.pop()));
    }
    function ib(a) {
      a = a.stack;
      var b = a.pop();
      a.push(t(b));
    }
    function jb(a) {
      a = a.stack;
      var b = d(a.pop()), h = d(a.pop());
      "string" === typeof b || "string" === typeof h ? a.push(p(h) + p(b)) : a.push(c(h) + c(b));
    }
    function kb(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      a.push(e(c, b));
    }
    function lb(a) {
      a = a.stack;
      var b = c(a.pop()), d = c(a.pop());
      a.push(d % b);
    }
    function mb(a) {
      a = a.stack;
      var b = n(a.pop()), c = n(a.pop());
      a.push(c & b);
    }
    function nb(a) {
      a = a.stack;
      var b = n(a.pop()), c = n(a.pop());
      a.push(c << b);
    }
    function ob(a) {
      a = a.stack;
      var b = n(a.pop()), c = n(a.pop());
      a.push(c | b);
    }
    function pb(a) {
      a = a.stack;
      var b = n(a.pop()), c = n(a.pop());
      a.push(c >> b);
    }
    function qb(a) {
      a = a.stack;
      var b = n(a.pop()), c = n(a.pop());
      a.push(c >>> b);
    }
    function rb(a) {
      a = a.stack;
      var b = n(a.pop()), c = n(a.pop());
      a.push(c ^ b);
    }
    function sb(a) {
      a = a.stack;
      var b = c(a.pop());
      b--;
      a.push(b);
    }
    function tb(a) {
      a = a.stack;
      var b = c(a.pop());
      b++;
      a.push(b);
    }
    function ub(a) {
      a = a.stack;
      a.push(a[a.length - 1]);
    }
    function vb(a) {
      a.isEndOfActions = !0;
    }
    function wb(a) {
      a = a.stack;
      a.push(a.pop(), a.pop());
    }
    function xb(a, b) {
      var c = a.stack;
      a.registers[b[0]] = c[c.length - 1];
    }
    function yb(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      a.push(c instanceof b ? !0 : !1);
    }
    function zb(a) {
      var c = a.stack;
      a = c.pop();
      c.push(null);
      b.isNullOrUndefined(a) ? g("AVM1 warning: cannot iterate over undefined object") : h(a, function(a) {
        c.push(a);
      });
    }
    function Ab(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      a.push(c === b);
    }
    function Bb(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      a.push(e(b, c));
    }
    function Cb(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var c = p(b.pop()), c = p(b.pop()) > c;
      b.push(a ? c : c ? 1 : 0);
    }
    function Db(a, b) {
      var c = a.stack, d = a.scope, h = b[1], e = K(a, b[0], h, b[2], b[3], b[4], b[5]);
      h ? d.asSetPublicProperty(h, e) : c.push(e);
    }
    function Eb(a) {
      var b = a.stack;
      a = b.pop();
      var b = b.pop(), c = Object.create(a.traitsPrototype || u(a), {constructor:{value:b, enumerable:!1}});
      b.__super = a;
      b.prototype = c;
    }
    function Fb(a) {
      a = a.stack;
      var b = a.pop(), c = a.pop();
      a.push(b instanceof c ? b : null);
    }
    function Gb(a) {
      a = a.stack;
      var b = a.pop(), c = +a.pop();
      C(c, a.length);
      for (var d = [], h = 0;h < c;h++) {
        d.push(a.pop());
      }
      b._as2Interfaces = d;
    }
    function Hb(a, b) {
      var c = b[5], d = b[3], h = b[1], e = b[2], f = b[4], g = b[6], k = a.context, l = a.scopeContainer, m = a.scope, n = a.constantPool, r = a.registers, p = k.isTryCatchListening, x;
      try {
        k.isTryCatchListening = !0, za(e, l, n, r);
      } catch (q) {
        k.isTryCatchListening = p, d && q instanceof Ka ? ("string" === typeof h ? m.asSetPublicProperty(h, q.error) : r[h] = q.error, za(f, l, n, r)) : x = q;
      }
      k.isTryCatchListening = p;
      c && za(g, l, n, r);
      if (x) {
        throw x;
      }
    }
    function Ib(a) {
      a = a.stack.pop();
      throw new Ka(a);
    }
    function Jb(a) {
      var b = a.stack, c = a.global, d = E(b);
      a = b.length;
      b.push(void 0);
      c = c.fscommand.apply(null, d);
      b[a] = c;
    }
    function Pb(a, b) {
    }
    function Qb(a) {
      return function(c, d) {
        var h;
        try {
          a(c, d), c.recoveringFromError = !1;
        } catch (e) {
          h = c.context;
          e = w(e);
          if (e instanceof ua) {
            throw e;
          }
          if (e instanceof Ka) {
            throw e;
          }
          Kb.instance.reportTelemetry({topic:"error", error:1});
          if (!c.recoveringFromError) {
            if (1E3 <= h.errorsIgnored++) {
              throw new ua("long running script -- AVM1 errors limit is reached");
            }
            console.log(typeof e);
            console.log(Object.getPrototypeOf(e));
            console.log(Object.getPrototypeOf(Object.getPrototypeOf(e)));
            console.error("AVM1 error: " + e);
            b.AVM2.Runtime.AVM2.instance.exceptions.push({source:"avm1", message:e.message, stack:e.stack});
            c.recoveringFromError = !0;
          }
        }
      };
    }
    function Rb() {
      var a;
      a = k.avm1ErrorsEnabled.value ? function(a) {
        return a;
      } : Qb;
      return{ActionGotoFrame:a(A), ActionGetURL:a(B), ActionNextFrame:a(z), ActionPreviousFrame:a(P), ActionPlay:a(D), ActionStop:a(L), ActionToggleQuality:a(M), ActionStopSounds:a(V), ActionWaitForFrame:a(Q), ActionSetTarget:a(U), ActionGoToLabel:a(S), ActionPush:a(aa), ActionPop:a($), ActionAdd:a(ea), ActionSubtract:a(Z), ActionMultiply:a(v), ActionDivide:a(X), ActionEquals:a(ba), ActionLess:a(R), ActionAnd:a(H), ActionOr:a(Y), ActionNot:a(ga), ActionStringEquals:a(ca), ActionStringLength:a(ka), 
      ActionMBStringLength:a(W), ActionStringAdd:a(ha), ActionStringExtract:a(da), ActionMBStringExtract:a(ja), ActionStringLess:a(N), ActionToInteger:a(ma), ActionCharToAscii:a(T), ActionMBCharToAscii:a(oa), ActionAsciiToChar:a(pa), ActionMBAsciiToChar:a(na), ActionJump:a(fa), ActionIf:a(sa), ActionCall:a(xa), ActionGetVariable:a(la), ActionSetVariable:a(qa), ActionGetURL2:a(ia), ActionGotoFrame2:a(wa), ActionSetTarget2:a(Ia), ActionGetProperty:a(va), ActionSetProperty:a(ya), ActionCloneSprite:a(Ga), 
      ActionRemoveSprite:a(Ha), ActionStartDrag:a(Aa), ActionEndDrag:a(ra), ActionWaitForFrame2:a(ta), ActionTrace:a(Ba), ActionGetTime:a(Ma), ActionRandomNumber:a(Na), ActionCallFunction:a(Oa), ActionCallMethod:a(Pa), ActionConstantPool:a(Qa), ActionDefineFunction:a(Ra), ActionDefineLocal:a(Sa), ActionDefineLocal2:a(Ta), ActionDelete:a(Ua), ActionDelete2:a(Wa), ActionEnumerate:a(Xa), ActionEquals2:a(Ya), ActionGetMember:a(Za), ActionInitArray:a($a), ActionInitObject:a(ab), ActionNewMethod:a(bb), 
      ActionNewObject:a(cb), ActionSetMember:a(db), ActionTargetPath:a(eb), ActionWith:a(fb), ActionToNumber:a(gb), ActionToString:a(hb), ActionTypeOf:a(ib), ActionAdd2:a(jb), ActionLess2:a(kb), ActionModulo:a(lb), ActionBitAnd:a(mb), ActionBitLShift:a(nb), ActionBitOr:a(ob), ActionBitRShift:a(pb), ActionBitURShift:a(qb), ActionBitXor:a(rb), ActionDecrement:a(sb), ActionIncrement:a(tb), ActionPushDuplicate:a(ub), ActionReturn:a(vb), ActionStackSwap:a(wb), ActionStoreRegister:a(xb), ActionInstanceOf:a(yb), 
      ActionEnumerate2:a(zb), ActionStrictEquals:a(Ab), ActionGreater:a(Bb), ActionStringGreater:a(Cb), ActionDefineFunction2:a(Db), ActionExtends:a(Eb), ActionCastOp:a(Fb), ActionImplementsOp:a(Gb), ActionTry:a(Hb), ActionThrow:a(Ib), ActionFSCommand2:a(Jb), ActionStrictMode:a(Pb)};
    }
    function za(a, c, d, h) {
      var e = k.AVM1Context.instance;
      if (!a.ir) {
        var f = new k.ActionsDataStream(a.bytes, e.swfVersion), f = new k.ActionsDataParser(f);
        f.dataId = a.id;
        var g = new k.ActionsDataAnalyzer;
        a.ir = g.analyze(f);
        if (k.avm1CompilerEnabled.value) {
          try {
            var l = new Sb;
            a.ir.compiled = l.generate(a.ir);
          } catch (m) {
            console.error("Unable to compile AVM1 function: " + m);
          }
        }
      }
      a = a.ir;
      var f = a.compiled, l = [], n = 5 <= e.swfVersion, r = Va.get(), g = c.scope;
      c = {context:e, global:e.globals, scopeContainer:c, scope:g, actionTracer:r, constantPool:d, registers:h, stack:l, isSwfVersion5:n, recoveringFromError:!1, isEndOfActions:!1};
      g._nativeAS3Object && g._nativeAS3Object._deferScriptExecution && (e.deferScriptExecution = !0);
      if (f) {
        return f(c);
      }
      d = 0;
      e = e.abortExecutionAt;
      if (k.avm1DebuggerEnabled.value && (k.Debugger.pause || k.Debugger.breakpoints[a.dataId])) {
        debugger;
      }
      for (h = a.actions[0];h && !c.isEndOfActions;) {
        if (0 === d++ % 1E3 && Date.now() >= e) {
          throw new ua("long running script -- AVM1 instruction hang timeout");
        }
        f = c;
        g = n = void 0;
        try {
          var n = f, p = h.action, x = p.actionCode, q = p.args;
          n.actionTracer.print(p, n.stack);
          r = !1;
          switch(x | 0) {
            case 129:
              A(n, q);
              break;
            case 131:
              B(n, q);
              break;
            case 4:
              z(n);
              break;
            case 5:
              P(n);
              break;
            case 6:
              D(n);
              break;
            case 7:
              L(n);
              break;
            case 8:
              M(n);
              break;
            case 9:
              V(n);
              break;
            case 138:
              r = Q(n, q);
              break;
            case 139:
              U(n, q);
              break;
            case 140:
              S(n, q);
              break;
            case 150:
              aa(n, q);
              break;
            case 23:
              $(n);
              break;
            case 10:
              ea(n);
              break;
            case 11:
              Z(n);
              break;
            case 12:
              v(n);
              break;
            case 13:
              X(n);
              break;
            case 14:
              ba(n);
              break;
            case 15:
              R(n);
              break;
            case 16:
              H(n);
              break;
            case 17:
              Y(n);
              break;
            case 18:
              ga(n);
              break;
            case 19:
              ca(n);
              break;
            case 20:
              ka(n);
              break;
            case 49:
              W(n);
              break;
            case 33:
              ha(n);
              break;
            case 21:
              da(n);
              break;
            case 53:
              ja(n);
              break;
            case 41:
              N(n);
              break;
            case 24:
              ma(n);
              break;
            case 50:
              T(n);
              break;
            case 54:
              oa(n);
              break;
            case 51:
              pa(n);
              break;
            case 55:
              na(n);
              break;
            case 153:
              break;
            case 157:
              r = sa(n, q);
              break;
            case 158:
              xa(n);
              break;
            case 28:
              la(n);
              break;
            case 29:
              qa(n);
              break;
            case 154:
              ia(n, q);
              break;
            case 159:
              wa(n, q);
              break;
            case 32:
              Ia(n);
              break;
            case 34:
              va(n);
              break;
            case 35:
              ya(n);
              break;
            case 36:
              Ga(n);
              break;
            case 37:
              Ha(n);
              break;
            case 39:
              Aa(n);
              break;
            case 40:
              ra(n);
              break;
            case 141:
              r = ta(n, q);
              break;
            case 38:
              Ba(n);
              break;
            case 52:
              Ma(n);
              break;
            case 48:
              Na(n);
              break;
            case 61:
              Oa(n);
              break;
            case 82:
              Pa(n);
              break;
            case 136:
              Qa(n, q);
              break;
            case 155:
              Ra(n, q);
              break;
            case 60:
              Sa(n);
              break;
            case 65:
              Ta(n);
              break;
            case 58:
              Ua(n);
              break;
            case 59:
              Wa(n);
              break;
            case 70:
              Xa(n);
              break;
            case 73:
              Ya(n);
              break;
            case 78:
              Za(n);
              break;
            case 66:
              $a(n);
              break;
            case 67:
              ab(n);
              break;
            case 83:
              bb(n);
              break;
            case 64:
              cb(n);
              break;
            case 79:
              db(n);
              break;
            case 69:
              eb(n);
              break;
            case 148:
              fb(n, q);
              break;
            case 74:
              gb(n);
              break;
            case 75:
              hb(n);
              break;
            case 68:
              ib(n);
              break;
            case 71:
              jb(n);
              break;
            case 72:
              kb(n);
              break;
            case 63:
              lb(n);
              break;
            case 96:
              mb(n);
              break;
            case 99:
              nb(n);
              break;
            case 97:
              ob(n);
              break;
            case 100:
              pb(n);
              break;
            case 101:
              qb(n);
              break;
            case 98:
              rb(n);
              break;
            case 81:
              sb(n);
              break;
            case 80:
              tb(n);
              break;
            case 76:
              ub(n);
              break;
            case 62:
              vb(n);
              break;
            case 77:
              wb(n);
              break;
            case 135:
              xb(n, q);
              break;
            case 84:
              yb(n);
              break;
            case 85:
              zb(n);
              break;
            case 102:
              Ab(n);
              break;
            case 103:
              Bb(n);
              break;
            case 104:
              Cb(n);
              break;
            case 142:
              Db(n, q);
              break;
            case 105:
              Eb(n);
              break;
            case 43:
              Fb(n);
              break;
            case 44:
              Gb(n);
              break;
            case 143:
              Hb(n, q);
              break;
            case 42:
              Ib(n);
              break;
            case 45:
              Jb(n);
              break;
            case 137:
              break;
            case 0:
              n.isEndOfActions = !0;
              break;
            default:
              throw Error("Unknown action code: " + x);;
          }
          g = r;
          f.recoveringFromError = !1;
        } catch (u) {
          n = f.context;
          u = w(u);
          if (k.avm1ErrorsEnabled.value && !n.isTryCatchListening || u instanceof ua) {
            throw u;
          }
          if (u instanceof Ka) {
            throw u;
          }
          Kb.instance.reportTelemetry({topic:"error", error:1});
          if (!f.recoveringFromError) {
            if (1E3 <= n.errorsIgnored++) {
              throw new ua("long running script -- AVM1 errors limit is reached");
            }
            console.error("AVM1 error: " + u);
            b.AVM2.Runtime.AVM2.instance.exceptions.push({source:"avm1", message:u.message, stack:u.stack});
            f.recoveringFromError = !0;
          }
        }
        h = g ? h.conditionalJumpTo : h.next;
        h = a.actions[h];
      }
      return l.pop();
    }
    var Lb = b.AVM2.ABC.Multiname, Ob = b.AVM2.Runtime.forEachPublicProperty, Nb = b.AVM2.Runtime.construct, Mb = b.isNumeric, La = b.isFunction, Tb = b.Debug.notImplemented, Ea = b.Options.Option, Kb = b.Telemetry, Da = b.Debug.assert, Fa = b.Settings.shumwayOptions.register(new b.Options.OptionSet("AVM1"));
    k.avm1TraceEnabled = Fa.register(new Ea("t1", "traceAvm1", "boolean", !1, "trace AVM1 execution"));
    k.avm1ErrorsEnabled = Fa.register(new Ea("e1", "errorsAvm1", "boolean", !1, "fail on AVM1 warnings and errors"));
    k.avm1TimeoutDisabled = Fa.register(new Ea("ha1", "nohangAvm1", "boolean", !1, "disable fail on AVM1 hang"));
    k.avm1CompilerEnabled = Fa.register(new Ea("ca1", "compileAvm1", "boolean", !0, "compiles AVM1 code"));
    k.avm1DebuggerEnabled = Fa.register(new Ea("da1", "debugAvm1", "boolean", !1, "allows AVM1 code debugging"));
    k.Debugger = {pause:!1, breakpoints:{}};
    var Ub = function() {
      function a(b, c) {
        this.scope = b;
        this.next = c;
      }
      a.prototype.create = function(b) {
        return new a(b, this);
      };
      return a;
    }(), Vb = function(a) {
      function c(d) {
        a.call(this);
        this.swfVersion = d;
        this.globals = new b.AVM2.AS.avm1lib.AVM1Globals;
        8 <= d && this.globals.asSetPublicProperty("flash", b.AVM2.AS.avm1lib.createFlashObject());
        this.initialScope = new Ub(this.globals, null);
        this.assets = {};
        this.assetsSymbols = [];
        this.assetsClasses = [];
        this.executionProhibited = this.isActive = !1;
        this.stackDepth = this.abortExecutionAt = 0;
        this.isTryCatchListening = !1;
        this.errorsIgnored = 0;
        this.deferScriptExecution = !0;
        this.pendingScripts = [];
      }
      __extends(c, a);
      c.prototype.addAsset = function(a, c, d) {
        this.assets[a] = c;
        this.assetsSymbols[c] && b.Debug.warning("Symbol " + c + " was exported already under different name");
        this.assetsSymbols[c] = d;
      };
      c.prototype.registerClass = function(a, c) {
        var d = this.assets[a];
        void 0 === d ? b.Debug.error("Cannot register " + a + " class for symbol") : this.assetsClasses[d] = c;
      };
      c.prototype.getAsset = function(a) {
        a = this.assets[a];
        return void 0 === a ? void 0 : {symbolId:a, symbolProps:this.assetsSymbols[a], theClass:this.assetsClasses[a]};
      };
      c.prototype.resolveTarget = function(a) {
        var b = this.currentTarget || this.defaultTarget;
        a ? "string" === typeof a && (a = G(a, b, this.globals.asGetPublicProperty("_root"))) : a = b;
        if ("object" !== typeof a || null === a || !("_nativeAS3Object" in a)) {
          throw Error("Invalid AVM1 target object: " + Object.prototype.toString.call(a));
        }
        return a;
      };
      c.prototype.resolveLevel = function(a) {
        return this.resolveTarget(this.globals["_level" + a]);
      };
      c.prototype.addToPendingScripts = function(a) {
        this.deferScriptExecution ? this.pendingScripts.push(a) : a();
      };
      c.prototype.flushPendingScripts = function() {
        for (var a = this.pendingScripts;a.length;) {
          a.shift()();
        }
        this.deferScriptExecution = !1;
      };
      c.prototype.executeActions = function(a, b) {
        y(a, this, b);
      };
      return c;
    }(k.AVM1Context);
    k.AVM1Context.create = function(a) {
      return new Vb(a);
    };
    var Ka = function() {
      return function(a) {
        this.error = a;
      };
    }(), ua = function(a) {
      function b(c, d) {
        a.call(this, c);
        this.error = d;
      }
      __extends(b, a);
      return b;
    }(Error);
    k.executeActions = y;
    var Ja = {}, Sb = function() {
      function a() {
        a.cachedCalls || (a.cachedCalls = Rb());
      }
      a.prototype.convertArgs = function(a, b, c) {
        for (var d = [], h = 0;h < a.length;h++) {
          var e = a[h];
          if ("object" !== typeof e || null === e || Array.isArray(e)) {
            void 0 === e ? d.push("undefined") : d.push(JSON.stringify(e));
          } else {
            if (e instanceof k.ParsedPushConstantAction) {
              var f = "", g = c.constantPool;
              g && (f = g[e.constantIndex], f = void 0 === f ? "undefined" : JSON.stringify(f), f = 0 <= f.indexOf("*/") ? "" : " /* " + f + " */");
              d.push("constantPool[" + e.constantIndex + "]" + f);
            } else {
              e instanceof k.ParsedPushRegisterAction ? d.push("registers[" + e.registerNumber + "]") : e instanceof k.AVM1ActionsData ? (f = "code_" + b + "_" + h, c[f] = e, d.push("res." + f)) : Tb("Unknown AVM1 action argument type");
            }
          }
        }
        return d.join(",");
      };
      a.prototype.convertAction = function(a, b, c) {
        switch(a.action.actionCode) {
          case 153:
          ;
          case 62:
            return "";
          case 136:
            return c.constantPool = a.action.args[0], "  constantPool = [" + this.convertArgs(a.action.args[0], b, c) + "];\n  ectx.constantPool = constantPool;\n";
          case 150:
            return "  stack.push(" + this.convertArgs(a.action.args, b, c) + ");\n";
          case 138:
          ;
          case 141:
            return "  if (calls." + a.action.actionName + "(ectx,[" + this.convertArgs(a.action.args, b, c) + "])) { position = " + a.conditionalJumpTo + "; break; }\n";
          case 157:
            return "  if (!!stack.pop()) { position = " + a.conditionalJumpTo + "; break; }\n";
          default:
            return "  calls." + a.action.actionName + "(ectx" + (a.action.args ? ",[" + this.convertArgs(a.action.args, b, c) + "]" : "") + ");\n";
        }
      };
      a.prototype.checkAvm1Timeout = function(a) {
        if (Date.now() >= a.context.abortExecutionAt) {
          throw new ua("long running script -- AVM1 instruction hang timeout");
        }
      };
      a.prototype.generate = function(b) {
        var c = this, d = b.blocks, h = {}, e = 0;
        b = b.dataId;
        var f = "return function avm1gen_" + b + "(ectx) {\nvar position = 0;\nvar checkTimeAfter = 0;\nvar constantPool = ectx.constantPool, registers = ectx.registers, stack = ectx.stack;\n";
        k.avm1DebuggerEnabled.value && (f += "/* Running " + b + " */ if (Shumway.AVM1.Debugger.pause || Shumway.AVM1.Debugger.breakpoints." + b + ") { debugger; }\n");
        f += "while (!ectx.isEndOfActions) {\nif (checkTimeAfter <= 0) { checkTimeAfter = 1000; checkTimeout(ectx); }\nswitch(position) {\n";
        d.forEach(function(a) {
          f += " case " + a.label + ":\n";
          a.items.forEach(function(a) {
            f += c.convertAction(a, e++, h);
          });
          f += "  position = " + a.jump + ";\n  checkTimeAfter -= " + a.items.length + ";\n  break;\n";
        });
        f += " default: ectx.isEndOfActions = true; break;\n}\n}\nreturn stack.pop();};";
        return(new Function("calls", "res", "checkTimeout", f))(a.cachedCalls, h, this.checkAvm1Timeout);
      };
      return a;
    }(), Va = function() {
      function a() {
      }
      a.get = function() {
        return k.avm1TraceEnabled.value ? a.tracer : a.nullTracer;
      };
      a.tracer = function() {
        var a = 0;
        return{print:function(b, c) {
          for (var d = b.position, h = b.actionCode, e = b.actionName, f = [], g = 0;g < c.length;g++) {
            var k = c[g];
            f.push(k && "object" === typeof k ? "[" + (k.constructor && k.constructor.name ? k.constructor.name : "Object") + "]" : k);
          }
          g = Array(a + 1).join("..");
          console.log("AVM1 trace: " + g + d + ": " + e + "(" + h.toString(16) + "), stack=" + f);
        }, indent:function() {
          a++;
        }, unindent:function() {
          a--;
        }, message:function(a) {
          console.log("AVM1 trace: ------- " + a);
        }};
      }();
      a.nullTracer = {print:function(a, b) {
      }, indent:function() {
      }, unindent:function() {
      }, message:function(a) {
      }};
      return a;
    }();
  })(b.AVM1 || (b.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        var g = b.AVM2.AS.ASObject, k = b.AVM2.AS.flash, m = b.AVM1.AVM1Context, d = function(a) {
          function b() {
          }
          __extends(b, a);
          b.addProperty = function(a, b, c, d, f) {
            "undefined" === typeof f && (f = !0);
            a.asDefinePublicProperty(b, {get:c, set:d || void 0, enumerable:f, configurable:!0});
          };
          b.resolveTarget = function(a) {
            "undefined" === typeof a && (a = void 0);
            return m.instance.resolveTarget(a);
          };
          b.resolveLevel = function(a) {
            return m.instance.resolveLevel(+a);
          };
          Object.defineProperty(b, "currentStage", {get:function() {
            return f.getAVM1Object(m.instance.root._nativeAS3Object.stage);
          }, enumerable:!0, configurable:!0});
          Object.defineProperty(b, "swfVersion", {get:function() {
            return m.instance.swfVersion;
          }, enumerable:!0, configurable:!0});
          b.getAVM1Object = function(a) {
            return f.getAVM1Object(a);
          };
          b._installObjectMethods = function() {
            var a = g.asGetPublicProperty("prototype");
            g.asSetPublicProperty("registerClass", function(a, b) {
              m.instance.registerClass(a, b);
            });
            a.asDefinePublicProperty("addProperty", {value:function(a, b, c) {
              if ("string" !== typeof a || "" === a || "function" !== typeof b || "function" !== typeof c && null !== c) {
                return!1;
              }
              this.asDefinePublicProperty(a, {get:b, set:c || void 0, configurable:!0, enumerable:!0});
              return!0;
            }, writable:!1, enumerable:!1, configurable:!1});
          };
          b.classInitializer = null;
          b.initializer = null;
          b.classSymbols = ["createFlashObject!"];
          b.instanceSymbols = null;
          return b;
        }(b.AVM2.AS.ASNative);
        f.AVM1Utils = d;
        f.initDefaultListeners = function(a) {
          var b = a.asGetPublicProperty("_as2DefaultListeners");
          if (b) {
            for (var d = 0;d < b.length;d++) {
              var f = b[d];
              f.asGetPublicProperty("setter").call(a, f.value);
            }
          }
        };
        f.createFlashObject = function() {
          return d.createFlashObject();
        };
        f.getAVM1Object = function(a) {
          return a ? a._as2Object ? a._as2Object : k.display.MovieClip.isType(a) ? a._avm1SymbolClass ? b.AVM2.AS.avm1lib.AVM1MovieClip._initFromConstructor(a._avm1SymbolClass, a) : new b.AVM2.AS.avm1lib.AVM1MovieClip(a) : k.display.SimpleButton.isType(a) ? new b.AVM2.AS.avm1lib.AVM1Button(a) : k.text.TextField.isType(a) ? new b.AVM2.AS.avm1lib.AVM1TextField(a) : k.display.BitmapData.isType(a) ? new a : null : null;
        };
      })(g.avm1lib || (g.avm1lib = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        var k = b.Debug.somewhatImplemented, s;
        (function(b) {
          b[b.IdleToOverUp = 1] = "IdleToOverUp";
          b[b.OverUpToIdle = 2] = "OverUpToIdle";
          b[b.OverUpToOverDown = 4] = "OverUpToOverDown";
          b[b.OverDownToOverUp = 8] = "OverDownToOverUp";
          b[b.OverDownToOutDown = 16] = "OverDownToOutDown";
          b[b.OutDownToOverDown = 32] = "OutDownToOverDown";
          b[b.OutDownToIdle = 64] = "OutDownToIdle";
          b[b.IdleToOverDown = 128] = "IdleToOverDown";
          b[b.OverDownToIdle = 256] = "OverDownToIdle";
        })(s || (s = {}));
        var m = [-1, 37, 39, 36, 35, 45, 46, -1, 8, -1, -1, -1, -1, 13, 38, 40, 33, 34, 9, 27];
        s = function(d) {
          function a(a) {
            a && this._init(a);
          }
          __extends(a, d);
          a.prototype._init = function(a) {
            this._nativeAS3Object = a;
            f.initDefaultListeners(this);
            if (a._symbol && a._symbol.buttonActions) {
              this._nativeAS3Object.addEventListener("addedToStage", this._addListeners.bind(this));
              this._nativeAS3Object.addEventListener("removedFromStage", this._removeListeners.bind(this));
              var d = this._requiredListeners = Object.create(null);
              a = this._actions = a._symbol.buttonActions;
              for (var g = 0;g < a.length;g++) {
                var e = a[g];
                e.actionsBlock || (e.actionsBlock = new b.AVM1.AVM1ActionsData(e.actionsData, "i" + g));
                if (e.keyCode) {
                  d.keyDown = this._keyDownHandler.bind(this);
                } else {
                  var m;
                  switch(e.stateTransitionFlags) {
                    case 64:
                      m = "releaseOutside";
                      break;
                    case 1:
                      m = "rollOver";
                      break;
                    case 2:
                      m = "rollOut";
                      break;
                    case 4:
                      m = "mouseDown";
                      break;
                    case 8:
                      m = "mouseUp";
                      break;
                    case 16:
                    ;
                    case 32:
                      k("AVM1 drag over/out button actions");
                      break;
                    case 128:
                    ;
                    case 256:
                      k("AVM1 drag trackAsMenu over/out button actions");
                      break;
                    default:
                      warn("Unknown AVM1 button action type: " + e.stateTransitionFlags);
                      continue;
                  }
                  d[m] = this._mouseEventHandler.bind(this, e.stateTransitionFlags);
                }
              }
            }
          };
          a.prototype._addListeners = function() {
            for (var a in this._requiredListeners) {
              ("keyDown" === a ? this._nativeAS3Object.stage : this._nativeAS3Object).addEventListener(a, this._requiredListeners[a]);
            }
          };
          a.prototype._removeListeners = function() {
            for (var a in this._requiredListeners) {
              ("keyDown" === a ? this._nativeAS3Object.stage : this._nativeAS3Object).removeEventListener(a, this._requiredListeners[a]);
            }
          };
          a.prototype._keyDownHandler = function(a) {
            for (var b = this._actions, d = 0;d < b.length;d++) {
              var e = b[d];
              e.keyCode && (32 > e.keyCode && m[e.keyCode] === a.asGetPublicProperty("keyCode") || e.keyCode === a.asGetPublicProperty("charCode")) && this._runAction(e);
            }
          };
          a.prototype._mouseEventHandler = function(a) {
            for (var b = this._actions, d = 0;d < b.length;d++) {
              var e = b[d];
              e.stateTransitionFlags === a && this._runAction(e);
            }
          };
          a.prototype._runAction = function(a) {
            this._nativeAS3Object.loaderInfo._avm1Context.executeActions(a.actionsBlock, f.getAVM1Object(this._nativeAS3Object._parent));
          };
          Object.defineProperty(a.prototype, "_as3Object", {get:function() {
            return this._nativeAS3Object;
          }, enumerable:!0, configurable:!0});
          a.classInitializer = null;
          a.initializer = null;
          a.classSymbols = null;
          a.instanceSymbols = null;
          return a;
        }(g.ASNative);
        f.AVM1Button = s;
      })(g.avm1lib || (g.avm1lib = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        var k = b.Debug.assert, s = b.Debug.notImplemented, m = b.AVM2.AS.flash.text.TextFormat, d = b.AVM1.AVM1Context, a = b.AVM2.AS.Natives, c = function(b) {
          function c() {
            s("Dummy Constructor: public avm1lib.AVM1Globals");
          }
          __extends(c, b);
          c._addInternalClasses = function(a) {
            a.asSetPublicProperty("Object", g.ASObject);
            a.asSetPublicProperty("Function", g.ASFunction);
            a.asSetPublicProperty("Array", g.ASArray);
            a.asSetPublicProperty("Number", g.ASNumber);
            a.asSetPublicProperty("Math", g.ASMath);
            a.asSetPublicProperty("Boolean", g.ASBoolean);
            a.asSetPublicProperty("Date", g.ASDate);
            a.asSetPublicProperty("RegExp", g.ASRegExp);
            a.asSetPublicProperty("String", g.ASString);
          };
          c.prototype.ASSetPropFlags = function(a, b, c, d) {
          };
          c.prototype._addToPendingScripts = function(a, b, c) {
            "undefined" === typeof c && (c = null);
            k(b, "invalid function in _addToPendingScripts");
            d.instance.addToPendingScripts(function() {
              b.apply(a, c);
            });
          };
          c.prototype.escape = function(a) {
            return encodeURIComponent(a).replace(/\!|'|\(|\)|\*|-|\.|_|~/g, function(a) {
              switch(a) {
                case "*":
                  return "%2A";
                case "-":
                  return "%2D";
                case ".":
                  return "%2E";
                case "_":
                  return "%5F";
                default:
                  return globalEscape(a);
              }
            });
          };
          c.prototype.unescape = function(a) {
            return decodeURIComponent(a);
          };
          c.prototype._setLevel = function(a, b) {
          };
          c.prototype.trace = function(b) {
            a.print(b);
          };
          c.classInitializer = null;
          c.initializer = function() {
            m.prototype.asDefinePublicProperty("getTextExtent", {value:f.AVM1TextFormat.prototype._as2GetTextExtent, writable:!1, enumerable:!1, configurable:!1});
          };
          c.classSymbols = null;
          c.instanceSymbols = "_global! flash $asfunction call! chr! clearInterval! clearTimeout! duplicateMovieClip! fscommand! getAVM1Property! getTimer! getURL! getVersion! gotoAndPlay! gotoAndStop! gotoLabel! ifFrameLoaded! int! length! loadMovie! loadMovieNum! loadVariables! mbchr! mblength! mbord! mbsubstring! nextFrame! nextScene! ord! play! prevFrame! prevScene! print! printAsBitmap! printAsBitmapNum! printNum! random! removeMovieClip! setInterval! setAVM1Property! setTimeout! showRedrawRegions! startDrag! stop! stopAllSounds! stopDrag! substring! targetPath! toggleHighQuality! unloadMovie! unloadMovieNum! updateAfterEvent!".split(" ");
          return c;
        }(g.ASNative);
        f.AVM1Globals = c;
      })(g.avm1lib || (g.avm1lib = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
var globalEscape = this.escape;
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        var k = b.Debug.assert, s = b.AVM2.Runtime.construct, m = b.AVM1.AVM1Context, d = function(a) {
          function c(a) {
            this._nativeAS3Object = a;
            this._boundExecuteFrameScripts = this._frameScripts = null;
          }
          __extends(c, a);
          c.prototype._init = function(a) {
            !this._nativeAS3Object && a && (this._nativeAS3Object = a, a._as2Object = this, f.initDefaultListeners(this));
          };
          Object.defineProperty(c.prototype, "context", {set:function(a) {
            k(!this._context);
            this._context = a;
          }, enumerable:!0, configurable:!0});
          c._initFromConstructor = function(a, b) {
            var c = Object.create(a.asGetPublicProperty("prototype"));
            c._nativeAS3Object = b;
            b._as2Object = c;
            f.initDefaultListeners(c);
            a.call(c);
            return c;
          };
          Object.defineProperty(c.prototype, "_as3Object", {get:function() {
            return this._nativeAS3Object;
          }, enumerable:!0, configurable:!0});
          c.prototype.attachBitmap = function(a, b, c, d) {
            "undefined" === typeof c && (c = "auto");
            "undefined" === typeof d && (d = !1);
            a = s(g.flash.display.Bitmap, [a, c, d]);
            this._insertChildAtDepth(a, b);
          };
          c.prototype._constructMovieClipSymbol = function(a, b) {
            var c = m.instance.getAsset(a), d = Object.create(c.symbolProps);
            d.avm1Name = b;
            d.avm1SymbolClass = c.theClass;
            c = g.flash.display.MovieClip.initializeFrom(d);
            g.flash.display.MovieClip.instanceConstructorNoInitialize.call(c);
            return c;
          };
          c.prototype.addFrameActionBlocks = function(a, b) {
            var c = b.initActionBlocks, d = b.actionBlocks;
            c && this._addInitActionBlocks(a, c);
            if (d) {
              for (c = 0;c < d.length;c++) {
                this.addFrameScript(a, d[c]);
              }
            }
          };
          c.prototype.addFrameScript = function(a, c) {
            var d = this._frameScripts;
            d || (k(!this._boundExecuteFrameScripts), this._boundExecuteFrameScripts = this._executeFrameScripts.bind(this), d = this._frameScripts = []);
            var f = d[a + 1];
            f || (f = d[a + 1] = [], this._nativeAS3Object.addFrameScript(a, this._boundExecuteFrameScripts));
            d = new b.AVM1.AVM1ActionsData(c, "f" + a + "i" + f.length);
            f.push(d);
          };
          c.prototype._addInitActionBlocks = function(a, c) {
            function d(k) {
              if (f.currentFrame === a + 1) {
                f.removeEventListener("enterFrame", d);
                k = g._context;
                for (var m = 0;m < c.length;m++) {
                  var r = new b.AVM1.AVM1ActionsData(c[m].actionsData, "f" + a + "i" + m);
                  k.executeActions(r, g);
                }
              }
            }
            var f = this._nativeAS3Object, g = this;
            f.addEventListener("enterFrame", d);
          };
          c.prototype._executeFrameScripts = function() {
            var a = this._context, b = this._frameScripts[this._nativeAS3Object.currentFrame];
            k(b && b.length);
            for (var c = 0;c < b.length;c++) {
              a.executeActions(b[c], this);
            }
          };
          c.prototype._callFrame = function(a) {
          };
          c.prototype._insertChildAtDepth = function(a, b) {
            var c = this._nativeAS3Object;
            c.addTimelineObjectAtDepth(a, Math.min(c.numChildren, b));
            if (!g.flash.display.Bitmap.isType(a)) {
              var c = f.getAVM1Object(a), d = a.name;
              d && void 0 === this.asGetPublicProperty(d) && this.asSetPublicProperty(d, c);
            }
          };
          c.prototype.getInstanceAtDepth = function(a) {
            for (var b = this._nativeAS3Object, c = 0, d = b.numChildren;c < d;c++) {
              var k = b.getChildAt(c);
              if (k && k._depth === a) {
                return g.flash.display.Bitmap.isType(k) ? this : f.getAVM1Object(k);
              }
            }
            return null;
          };
          c.prototype.getNextHighestDepth = function() {
            for (var a = this._nativeAS3Object, b = 0, c = 0, d = a.numChildren;c < d;c++) {
              var f = a.getChildAt(c);
              f._depth > b && (b = f._depth);
            }
            return b + 1;
          };
          c.prototype._duplicate = function(a, b, c) {
          };
          c.prototype._gotoLabel = function(a) {
            this._nativeAS3Object._gotoFrame(a, null);
          };
          c.classInitializer = null;
          c.initializer = null;
          c.classSymbols = null;
          c.instanceSymbols = ["__lookupChild!", "__targetPath!"];
          return c;
        }(g.ASNative);
        f.AVM1MovieClip = d;
      })(g.avm1lib || (g.avm1lib = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        var k = function(b) {
          function f() {
          }
          __extends(f, b);
          Object.defineProperty(f.prototype, "_as3Object", {get:function() {
            return this._nativeAS3Object;
          }, enumerable:!0, configurable:!0});
          f.prototype._setAS3Object = function(b) {
            this._nativeAS3Object = b;
          };
          Object.defineProperty(f.prototype, "_bytesLoaded", {get:function() {
            return this._nativeAS3Object._contentLoaderInfo._bytesLoaded;
          }, enumerable:!0, configurable:!0});
          f.classInitializer = null;
          f.initializer = null;
          f.classSymbols = null;
          f.instanceSymbols = null;
          return f;
        }(b.ASNative);
        f.AVM1MovieClipLoader = k;
      })(b.avm1lib || (b.avm1lib = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        var g = b.AVM2.Runtime.asCoerceString, k = b.AVM1.AVM1Context, m = function(d) {
          function a(a, b, d) {
          }
          __extends(a, d);
          a.loadBitmap = function(c) {
            c = g(c);
            return(c = k.instance.getAsset(c)) && c.symbolProps instanceof b.Timeline.BitmapSymbol ? (c = a.initializeFrom(c), c.class.instanceConstructorNoInitialize.call(c), c) : null;
          };
          a.classInitializer = null;
          a.initializer = null;
          a.classSymbols = null;
          a.instanceSymbols = null;
          return a;
        }(b.AVM2.AS.flash.display.BitmapData);
        f.AVM1BitmapData = m;
      })(g.avm1lib || (g.avm1lib = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      (function(f) {
        var k = function(b) {
          function g(b) {
            this._variable = "";
            this._init(b);
          }
          __extends(g, b);
          g.prototype._init = function(b) {
            this._nativeAS3Object = b;
            b._as2Object = this;
            f.initDefaultListeners(this);
          };
          Object.defineProperty(g.prototype, "_as3Object", {get:function() {
            return this._nativeAS3Object;
          }, enumerable:!0, configurable:!0});
          Object.defineProperty(g.prototype, "variable", {get:function() {
            return this._variable;
          }, set:function(b) {
            if (b !== this._variable) {
              this._variable = b;
              var a = this._nativeAS3Object, c;
              if (0 <= b.indexOf(".") || 0 <= b.indexOf(":")) {
                var g = b.split(/[.:\/]/g);
                b = g.pop();
                "_root" == g[0] || "" === g[0] ? (c = f.getAVM1Object(a.root), g.shift(), "" === g[0] && g.shift()) : c = f.getAVM1Object(a._parent);
                for (;0 < g.length;) {
                  var k = g.shift();
                  c = c.asGetPublicProperty(k) || c[k];
                  if (!c) {
                    throw Error("Cannot find " + k + " variable");
                  }
                }
              } else {
                c = f.getAVM1Object(a._parent);
              }
              c.asHasProperty(void 0, b, 0) || c.asSetPublicProperty(b, a.text);
              a._addEventListener("advanceFrame", function() {
                a.text = "" + c.asGetPublicProperty(b);
              });
            }
          }, enumerable:!0, configurable:!0});
          g.classInitializer = null;
          g.initializer = null;
          g.classSymbols = null;
          g.instanceSymbols = null;
          return g;
        }(b.ASNative);
        f.AVM1TextField = k;
      })(b.avm1lib || (b.avm1lib = {}));
    })(b.AS || (b.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      (function(f) {
        var g = b.AVM2.AS.flash.text.TextField, k = function(b) {
          function d() {
            b.apply(this, arguments);
          }
          __extends(d, b);
          d.prototype._as2GetTextExtent = function(a, b) {
            var f = d._measureTextField;
            f || (f = new g, f.multiline = !0, d._measureTextField = f);
            !isNaN(b) && 0 < b ? (f.width = b + 4, f.wordWrap = !0) : f.wordWrap = !1;
            f.defaultTextFormat = this;
            f.text = a;
            var k = {}, e = f.textWidth, m = f.textHeight;
            k.asSetPublicProperty("width", e);
            k.asSetPublicProperty("height", m);
            k.asSetPublicProperty("textFieldWidth", e + 4);
            k.asSetPublicProperty("textFieldHeight", m + 4);
            f = f.getLineMetrics();
            k.asSetPublicProperty("ascent", f.asGetPublicProperty("ascent"));
            k.asSetPublicProperty("descent", f.asGetPublicProperty("descent"));
            return k;
          };
          return d;
        }(b.AVM2.AS.flash.text.TextFormat);
        f.AVM1TextFormat = k;
      })(g.avm1lib || (g.avm1lib = {}));
    })(k.AS || (k.AS = {}));
  })(b.AVM2 || (b.AVM2 = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load AVM1 Dependencies");
(function(b) {
  (function(k) {
    function g(a, d, h) {
      return c && h ? "string" === typeof d ? (a = b.ColorUtilities.cssStyleToRGBA(d), b.ColorUtilities.rgbaToCSSStyle(h.transformRGBA(a))) : d instanceof CanvasGradient && d._template ? d._template.createCanvasGradient(a, h) : d : d;
    }
    var f = b.Debug.assert, t = b.NumberUtilities.clamp;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.Brief = 1] = "Brief";
      a[a.Verbose = 2] = "Verbose";
    })(k.TraceLevel || (k.TraceLevel = {}));
    var s = b.Metrics.Counter.instance;
    k.frameCounter = new b.Metrics.Counter(!0);
    k.traceLevel = 2;
    k.writer = null;
    k.frameCount = function(a) {
      s.count(a);
      k.frameCounter.count(a);
    };
    k.timelineBuffer = new b.Tools.Profiler.TimelineBuffer("GFX");
    k.enterTimeline = function(a, b) {
    };
    k.leaveTimeline = function(a, b) {
    };
    var m = null, d = null, a = null, c = !0;
    c && "undefined" !== typeof CanvasRenderingContext2D && (m = CanvasGradient.prototype.addColorStop, d = CanvasRenderingContext2D.prototype.createLinearGradient, a = CanvasRenderingContext2D.prototype.createRadialGradient, CanvasRenderingContext2D.prototype.createLinearGradient = function(a, b, c, d) {
      return(new p(a, b, c, d)).createCanvasGradient(this, null);
    }, CanvasRenderingContext2D.prototype.createRadialGradient = function(a, b, c, d, h, f) {
      return(new e(a, b, c, d, h, f)).createCanvasGradient(this, null);
    }, CanvasGradient.prototype.addColorStop = function(a, b) {
      m.call(this, a, b);
      this._template.addColorStop(a, b);
    });
    var n = function() {
      return function(a, b) {
        this.offset = a;
        this.color = b;
      };
    }(), p = function() {
      function a(b, c, d, h) {
        this.x0 = b;
        this.y0 = c;
        this.x1 = d;
        this.y1 = h;
        this.colorStops = [];
      }
      a.prototype.addColorStop = function(a, b) {
        this.colorStops.push(new n(a, b));
      };
      a.prototype.createCanvasGradient = function(a, b) {
        for (var c = d.call(a, this.x0, this.y0, this.x1, this.y1), h = this.colorStops, e = 0;e < h.length;e++) {
          var f = h[e], k = f.offset, f = f.color, f = b ? g(a, f, b) : f;
          m.call(c, k, f);
        }
        c._template = this;
        c._transform = this._transform;
        return c;
      };
      return a;
    }(), e = function() {
      function b(a, c, d, h, f, e) {
        this.x0 = a;
        this.y0 = c;
        this.r0 = d;
        this.x1 = h;
        this.y1 = f;
        this.r1 = e;
        this.colorStops = [];
      }
      b.prototype.addColorStop = function(a, b) {
        this.colorStops.push(new n(a, b));
      };
      b.prototype.createCanvasGradient = function(b, c) {
        for (var d = a.call(b, this.x0, this.y0, this.r0, this.x1, this.y1, this.r1), h = this.colorStops, f = 0;f < h.length;f++) {
          var e = h[f], k = e.offset, e = e.color, e = c ? g(b, e, c) : e;
          m.call(d, k, e);
        }
        d._template = this;
        d._transform = this._transform;
        return d;
      };
      return b;
    }(), q;
    (function(a) {
      a[a.ClosePath = 1] = "ClosePath";
      a[a.MoveTo = 2] = "MoveTo";
      a[a.LineTo = 3] = "LineTo";
      a[a.QuadraticCurveTo = 4] = "QuadraticCurveTo";
      a[a.BezierCurveTo = 5] = "BezierCurveTo";
      a[a.ArcTo = 6] = "ArcTo";
      a[a.Rect = 7] = "Rect";
      a[a.Arc = 8] = "Arc";
      a[a.Save = 9] = "Save";
      a[a.Restore = 10] = "Restore";
      a[a.Transform = 11] = "Transform";
    })(q || (q = {}));
    var l = function() {
      function a(b) {
        this._commands = new Uint8Array(a._arrayBufferPool.acquire(8), 0, 8);
        this._commandPosition = 0;
        this._data = new Float64Array(a._arrayBufferPool.acquire(8 * Float64Array.BYTES_PER_ELEMENT), 0, 8);
        this._dataPosition = 0;
        b instanceof a && this.addPath(b);
      }
      a._apply = function(a, b) {
        var c = a._commands, d = a._data, h = 0, e = 0;
        b.beginPath();
        for (var f = a._commandPosition;h < f;) {
          switch(c[h++]) {
            case 1:
              b.closePath();
              break;
            case 2:
              b.moveTo(d[e++], d[e++]);
              break;
            case 3:
              b.lineTo(d[e++], d[e++]);
              break;
            case 4:
              b.quadraticCurveTo(d[e++], d[e++], d[e++], d[e++]);
              break;
            case 5:
              b.bezierCurveTo(d[e++], d[e++], d[e++], d[e++], d[e++], d[e++]);
              break;
            case 6:
              b.arcTo(d[e++], d[e++], d[e++], d[e++], d[e++]);
              break;
            case 7:
              b.rect(d[e++], d[e++], d[e++], d[e++]);
              break;
            case 8:
              b.arc(d[e++], d[e++], d[e++], d[e++], d[e++], !!d[e++]);
              break;
            case 9:
              b.save();
              break;
            case 10:
              b.restore();
              break;
            case 11:
              b.transform(d[e++], d[e++], d[e++], d[e++], d[e++], d[e++]);
          }
        }
      };
      a.prototype._ensureCommandCapacity = function(b) {
        this._commands = a._arrayBufferPool.ensureUint8ArrayLength(this._commands, b);
      };
      a.prototype._ensureDataCapacity = function(b) {
        this._data = a._arrayBufferPool.ensureFloat64ArrayLength(this._data, b);
      };
      a.prototype._writeCommand = function(a) {
        this._commandPosition >= this._commands.length && this._ensureCommandCapacity(this._commandPosition + 1);
        this._commands[this._commandPosition++] = a;
      };
      a.prototype._writeData = function(a, b, c, d, h, e) {
        var g = arguments.length;
        f(6 >= g && (0 === g % 2 || 5 === g));
        this._dataPosition + g >= this._data.length && this._ensureDataCapacity(this._dataPosition + g);
        var k = this._data, l = this._dataPosition;
        k[l] = a;
        k[l + 1] = b;
        2 < g && (k[l + 2] = c, k[l + 3] = d, 4 < g && (k[l + 4] = h, 6 === g && (k[l + 5] = e)));
        this._dataPosition += g;
      };
      a.prototype.closePath = function() {
        this._writeCommand(1);
      };
      a.prototype.moveTo = function(a, b) {
        this._writeCommand(2);
        this._writeData(a, b);
      };
      a.prototype.lineTo = function(a, b) {
        this._writeCommand(3);
        this._writeData(a, b);
      };
      a.prototype.quadraticCurveTo = function(a, b, c, d) {
        this._writeCommand(4);
        this._writeData(a, b, c, d);
      };
      a.prototype.bezierCurveTo = function(a, b, c, d, h, e) {
        this._writeCommand(5);
        this._writeData(a, b, c, d, h, e);
      };
      a.prototype.arcTo = function(a, b, c, d, h) {
        this._writeCommand(6);
        this._writeData(a, b, c, d, h);
      };
      a.prototype.rect = function(a, b, c, d) {
        this._writeCommand(7);
        this._writeData(a, b, c, d);
      };
      a.prototype.arc = function(a, b, c, d, h, e) {
        this._writeCommand(8);
        this._writeData(a, b, c, d, h, +e);
      };
      a.prototype.addPath = function(a, b) {
        b && (this._writeCommand(9), this._writeCommand(11), this._writeData(b.a, b.b, b.c, b.d, b.e, b.f));
        var c = this._commandPosition + a._commandPosition;
        c >= this._commands.length && this._ensureCommandCapacity(c);
        for (var d = this._commands, h = a._commands, e = this._commandPosition, f = 0;e < c;e++) {
          d[e] = h[f++];
        }
        this._commandPosition = c;
        c = this._dataPosition + a._dataPosition;
        c >= this._data.length && this._ensureDataCapacity(c);
        d = this._data;
        h = a._data;
        e = this._dataPosition;
        for (f = 0;e < c;e++) {
          d[e] = h[f++];
        }
        this._dataPosition = c;
        b && this._writeCommand(10);
      };
      a._arrayBufferPool = new b.ArrayBufferPool;
      return a;
    }();
    k.Path = l;
    if ("undefined" !== typeof CanvasRenderingContext2D && ("undefined" === typeof Path2D || !Path2D.prototype.addPath)) {
      var u = CanvasRenderingContext2D.prototype.fill;
      CanvasRenderingContext2D.prototype.fill = function(a, b) {
        arguments.length && (a instanceof l ? l._apply(a, this) : b = a);
        b ? u.call(this, b) : u.call(this);
      };
      var w = CanvasRenderingContext2D.prototype.stroke;
      CanvasRenderingContext2D.prototype.stroke = function(a, b) {
        arguments.length && (a instanceof l ? l._apply(a, this) : b = a);
        b ? w.call(this, b) : w.call(this);
      };
      var r = CanvasRenderingContext2D.prototype.clip;
      CanvasRenderingContext2D.prototype.clip = function(a, b) {
        arguments.length && (a instanceof l ? l._apply(a, this) : b = a);
        b ? r.call(this, b) : r.call(this);
      };
      window.Path2D = l;
    }
    if ("undefined" !== typeof CanvasPattern && Path2D.prototype.addPath) {
      q = function(a) {
        this._transform = a;
        this._template && (this._template._transform = a);
      };
      CanvasPattern.prototype.setTransform || (CanvasPattern.prototype.setTransform = q);
      CanvasGradient.prototype.setTransform || (CanvasGradient.prototype.setTransform = q);
      var h = CanvasRenderingContext2D.prototype.fill, x = CanvasRenderingContext2D.prototype.stroke;
      CanvasRenderingContext2D.prototype.fill = function(a, b) {
        var c = !!this.fillStyle._transform;
        if ((this.fillStyle instanceof CanvasPattern || this.fillStyle instanceof CanvasGradient) && c && a instanceof Path2D) {
          var c = this.fillStyle._transform, d;
          try {
            d = c.inverse();
          } catch (e) {
            d = c = k.Geometry.Matrix.createIdentitySVGMatrix();
          }
          this.transform(c.a, c.b, c.c, c.d, c.e, c.f);
          c = new Path2D;
          c.addPath(a, d);
          h.call(this, c, b);
          this.transform(d.a, d.b, d.c, d.d, d.e, d.f);
        } else {
          0 === arguments.length ? h.call(this) : 1 === arguments.length ? h.call(this, a) : 2 === arguments.length && h.call(this, a, b);
        }
      };
      CanvasRenderingContext2D.prototype.stroke = function(a) {
        var b = !!this.strokeStyle._transform;
        if ((this.strokeStyle instanceof CanvasPattern || this.strokeStyle instanceof CanvasGradient) && b && a instanceof Path2D) {
          var c = this.strokeStyle._transform, b = c.inverse();
          this.transform(c.a, c.b, c.c, c.d, c.e, c.f);
          c = new Path2D;
          c.addPath(a, b);
          var d = this.lineWidth;
          this.lineWidth *= (b.a + b.d) / 2;
          x.call(this, c);
          this.transform(b.a, b.b, b.c, b.d, b.e, b.f);
          this.lineWidth = d;
        } else {
          0 === arguments.length ? x.call(this) : 1 === arguments.length && x.call(this, a);
        }
      };
    }
    "undefined" !== typeof CanvasRenderingContext2D && function() {
      function a(b) {
        return b.a;
      }
      function b(a) {
        return a.d;
      }
      CanvasRenderingContext2D.prototype.flashStroke = function(c, d) {
        var h = this.currentTransform;
        if (!h) {
          if (h = this.mozCurrentTransform) {
            h = k.Geometry.Matrix.createSVGMatrixFromArray(h);
          } else {
            this.stroke(c);
            return;
          }
        }
        var e = new Path2D;
        e.addPath(c, h);
        var f = this.lineWidth;
        this.setTransform(1, 0, 0, 1, 0, 0);
        switch(d) {
          case 1:
            this.lineWidth = t(f * (a(h) + b(h)) / 2, 1, 1024);
            break;
          case 2:
            this.lineWidth = t(f * b(h), 1, 1024);
            break;
          case 3:
            this.lineWidth = t(f * a(h), 1, 1024);
        }
        this.stroke(e);
        this.setTransform(h.a, h.b, h.c, h.d, h.e, h.f);
        this.lineWidth = f;
      };
    }();
    if ("undefined" !== typeof CanvasRenderingContext2D && void 0 === CanvasRenderingContext2D.prototype.globalColorMatrix) {
      var y = CanvasRenderingContext2D.prototype.fill, G = CanvasRenderingContext2D.prototype.stroke, I = CanvasRenderingContext2D.prototype.fillText, C = CanvasRenderingContext2D.prototype.strokeText;
      Object.defineProperty(CanvasRenderingContext2D.prototype, "globalColorMatrix", {get:function() {
        return this._globalColorMatrix ? this._globalColorMatrix.clone() : null;
      }, set:function(a) {
        a ? this._globalColorMatrix ? this._globalColorMatrix.set(a) : this._globalColorMatrix = a.clone() : this._globalColorMatrix = null;
      }, enumerable:!0, configurable:!0});
      CanvasRenderingContext2D.prototype.fill = function(a, b) {
        var c = null;
        this._globalColorMatrix && (c = this.fillStyle, this.fillStyle = g(this, this.fillStyle, this._globalColorMatrix));
        0 === arguments.length ? y.call(this) : 1 === arguments.length ? y.call(this, a) : 2 === arguments.length && y.call(this, a, b);
        c && (this.fillStyle = c);
      };
      CanvasRenderingContext2D.prototype.stroke = function(a, b) {
        var c = null;
        this._globalColorMatrix && (c = this.strokeStyle, this.strokeStyle = g(this, this.strokeStyle, this._globalColorMatrix));
        0 === arguments.length ? G.call(this) : 1 === arguments.length && G.call(this, a);
        c && (this.strokeStyle = c);
      };
      CanvasRenderingContext2D.prototype.fillText = function(a, c, d, h) {
        var e = null;
        this._globalColorMatrix && (e = this.fillStyle, this.fillStyle = g(this, this.fillStyle, this._globalColorMatrix));
        3 === arguments.length ? I.call(this, a, c, d) : 4 === arguments.length ? I.call(this, a, c, d, h) : b.Debug.unexpected();
        e && (this.fillStyle = e);
      };
      CanvasRenderingContext2D.prototype.strokeText = function(a, c, d, h) {
        var e = null;
        this._globalColorMatrix && (e = this.strokeStyle, this.strokeStyle = g(this, this.strokeStyle, this._globalColorMatrix));
        3 === arguments.length ? C.call(this, a, c, d) : 4 === arguments.length ? C.call(this, a, c, d, h) : b.Debug.unexpected();
        e && (this.strokeStyle = e);
      };
    }
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  var k = b.Debug.assert, g = function() {
    function b() {
      this._count = 0;
      this._head = this._tail = null;
    }
    Object.defineProperty(b.prototype, "count", {get:function() {
      return this._count;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(b.prototype, "head", {get:function() {
      return this._head;
    }, enumerable:!0, configurable:!0});
    b.prototype._unshift = function(b) {
      k(!b.next && !b.previous);
      0 === this._count ? this._head = this._tail = b : (b.next = this._head, this._head = b.next.previous = b);
      this._count++;
    };
    b.prototype._remove = function(b) {
      k(0 < this._count);
      b === this._head && b === this._tail ? this._head = this._tail = null : b === this._head ? (this._head = b.next, this._head.previous = null) : b == this._tail ? (this._tail = b.previous, this._tail.next = null) : (b.previous.next = b.next, b.next.previous = b.previous);
      b.previous = b.next = null;
      this._count--;
    };
    b.prototype.use = function(b) {
      this._head !== b && ((b.next || b.previous || this._tail === b) && this._remove(b), this._unshift(b));
    };
    b.prototype.pop = function() {
      if (!this._tail) {
        return null;
      }
      var b = this._tail;
      this._remove(b);
      return b;
    };
    b.prototype.visit = function(b, f) {
      "undefined" === typeof f && (f = !0);
      for (var g = f ? this._head : this._tail;g && b(g);) {
        g = f ? g.next : g.previous;
      }
    };
    return b;
  }();
  b.LRUList = g;
})(Shumway || (Shumway = {}));
var Shumway$$inline_404 = Shumway || (Shumway = {}), GFX$$inline_405 = Shumway$$inline_404.GFX || (Shumway$$inline_404.GFX = {}), Option$$inline_406 = Shumway$$inline_404.Options.Option, OptionSet$$inline_407 = Shumway$$inline_404.Options.OptionSet, shumwayOptions$$inline_408 = Shumway$$inline_404.Settings.shumwayOptions, rendererOptions$$inline_409 = shumwayOptions$$inline_408.register(new OptionSet$$inline_407("Renderer Options"));
GFX$$inline_405.imageUpdateOption = rendererOptions$$inline_409.register(new Option$$inline_406("", "imageUpdate", "boolean", !0, "Enable image updating."));
GFX$$inline_405.imageConvertOption = rendererOptions$$inline_409.register(new Option$$inline_406("", "imageConvert", "boolean", !0, "Enable image conversion."));
GFX$$inline_405.stageOptions = shumwayOptions$$inline_408.register(new OptionSet$$inline_407("Stage Renderer Options"));
GFX$$inline_405.forcePaint = GFX$$inline_405.stageOptions.register(new Option$$inline_406("", "forcePaint", "boolean", !1, "Force repainting."));
GFX$$inline_405.ignoreViewport = GFX$$inline_405.stageOptions.register(new Option$$inline_406("", "ignoreViewport", "boolean", !1, "Cull elements outside of the viewport."));
GFX$$inline_405.viewportLoupeDiameter = GFX$$inline_405.stageOptions.register(new Option$$inline_406("", "viewportLoupeDiameter", "number", 256, "Size of the viewport loupe.", {range:{min:1, max:1024, step:1}}));
GFX$$inline_405.disableClipping = GFX$$inline_405.stageOptions.register(new Option$$inline_406("", "disableClipping", "boolean", !1, "Disable clipping."));
GFX$$inline_405.debugClipping = GFX$$inline_405.stageOptions.register(new Option$$inline_406("", "debugClipping", "boolean", !1, "Disable clipping."));
GFX$$inline_405.backend = GFX$$inline_405.stageOptions.register(new Option$$inline_406("", "backend", "number", 0, "Backends", {choices:{Canvas2D:0, WebGL:1, Both:2}}));
GFX$$inline_405.hud = GFX$$inline_405.stageOptions.register(new Option$$inline_406("", "hud", "boolean", !1, "Enable HUD."));
var webGLOptions$$inline_410 = GFX$$inline_405.stageOptions.register(new OptionSet$$inline_407("WebGL Options"));
GFX$$inline_405.perspectiveCamera = webGLOptions$$inline_410.register(new Option$$inline_406("", "pc", "boolean", !1, "Use perspective camera."));
GFX$$inline_405.perspectiveCameraFOV = webGLOptions$$inline_410.register(new Option$$inline_406("", "pcFOV", "number", 60, "Perspective Camera FOV."));
GFX$$inline_405.perspectiveCameraDistance = webGLOptions$$inline_410.register(new Option$$inline_406("", "pcDistance", "number", 2, "Perspective Camera Distance."));
GFX$$inline_405.perspectiveCameraAngle = webGLOptions$$inline_410.register(new Option$$inline_406("", "pcAngle", "number", 0, "Perspective Camera Angle."));
GFX$$inline_405.perspectiveCameraAngleRotate = webGLOptions$$inline_410.register(new Option$$inline_406("", "pcRotate", "boolean", !1, "Rotate Use perspective camera."));
GFX$$inline_405.perspectiveCameraSpacing = webGLOptions$$inline_410.register(new Option$$inline_406("", "pcSpacing", "number", .01, "Element Spacing."));
GFX$$inline_405.perspectiveCameraSpacingInflate = webGLOptions$$inline_410.register(new Option$$inline_406("", "pcInflate", "boolean", !1, "Rotate Use perspective camera."));
GFX$$inline_405.drawTiles = webGLOptions$$inline_410.register(new Option$$inline_406("", "drawTiles", "boolean", !1, "Draw WebGL Tiles"));
GFX$$inline_405.drawSurfaces = webGLOptions$$inline_410.register(new Option$$inline_406("", "drawSurfaces", "boolean", !1, "Draw WebGL Surfaces."));
GFX$$inline_405.drawSurface = webGLOptions$$inline_410.register(new Option$$inline_406("", "drawSurface", "number", -1, "Draw WebGL Surface #"));
GFX$$inline_405.drawElements = webGLOptions$$inline_410.register(new Option$$inline_406("", "drawElements", "boolean", !0, "Actually call gl.drawElements. This is useful to test if the GPU is the bottleneck."));
GFX$$inline_405.disableSurfaceUploads = webGLOptions$$inline_410.register(new Option$$inline_406("", "disableSurfaceUploads", "boolean", !1, "Disable surface uploads."));
GFX$$inline_405.premultipliedAlpha = webGLOptions$$inline_410.register(new Option$$inline_406("", "premultipliedAlpha", "boolean", !1, "Set the premultipliedAlpha flag on getContext()."));
GFX$$inline_405.unpackPremultiplyAlpha = webGLOptions$$inline_410.register(new Option$$inline_406("", "unpackPremultiplyAlpha", "boolean", !0, "Use UNPACK_PREMULTIPLY_ALPHA_WEBGL in pixelStorei."));
var factorChoices$$inline_411 = {ZERO:0, ONE:1, SRC_COLOR:768, ONE_MINUS_SRC_COLOR:769, DST_COLOR:774, ONE_MINUS_DST_COLOR:775, SRC_ALPHA:770, ONE_MINUS_SRC_ALPHA:771, DST_ALPHA:772, ONE_MINUS_DST_ALPHA:773, SRC_ALPHA_SATURATE:776, CONSTANT_COLOR:32769, ONE_MINUS_CONSTANT_COLOR:32770, CONSTANT_ALPHA:32771, ONE_MINUS_CONSTANT_ALPHA:32772};
GFX$$inline_405.sourceBlendFactor = webGLOptions$$inline_410.register(new Option$$inline_406("", "sourceBlendFactor", "number", factorChoices$$inline_411.ONE, "", {choices:factorChoices$$inline_411}));
GFX$$inline_405.destinationBlendFactor = webGLOptions$$inline_410.register(new Option$$inline_406("", "destinationBlendFactor", "number", factorChoices$$inline_411.ONE_MINUS_SRC_ALPHA, "", {choices:factorChoices$$inline_411}));
var canvas2DOptions$$inline_412 = GFX$$inline_405.stageOptions.register(new OptionSet$$inline_407("Canvas2D Options"));
GFX$$inline_405.clipDirtyRegions = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "clipDirtyRegions", "boolean", !1, "Clip dirty regions."));
GFX$$inline_405.clipCanvas = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "clipCanvas", "boolean", !1, "Clip Regions."));
GFX$$inline_405.cull = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "cull", "boolean", !1, "Enable culling."));
GFX$$inline_405.compositeMask = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "compositeMask", "boolean", !1, "Composite Mask."));
GFX$$inline_405.snapToDevicePixels = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "snapToDevicePixels", "boolean", !1, ""));
GFX$$inline_405.imageSmoothing = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "imageSmoothing", "boolean", !1, ""));
GFX$$inline_405.blending = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "blending", "boolean", !0, ""));
GFX$$inline_405.cacheShapes = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "cacheShapes", "boolean", !1, ""));
GFX$$inline_405.cacheShapesMaxSize = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "cacheShapesMaxSize", "number", 256, "", {range:{min:1, max:1024, step:1}}));
GFX$$inline_405.cacheShapesThreshold = canvas2DOptions$$inline_412.register(new Option$$inline_406("", "cacheShapesThreshold", "number", 256, "", {range:{min:1, max:1024, step:1}}));
var GFX$$inline_413 = Shumway$$inline_404.GFX;
(function(b) {
  (function(k) {
    (function(g) {
      function f(a, b, c, d) {
        var e = 1 - d;
        return a * e * e + 2 * b * e * d + c * d * d;
      }
      function t(a, b, c, d, e) {
        var f = e * e, g = 1 - e, k = g * g;
        return a * g * k + 3 * b * e * k + 3 * c * g * f + d * e * f;
      }
      var s = b.NumberUtilities.clamp, m = b.NumberUtilities.pow2, d = b.NumberUtilities.epsilonEquals, a = b.Debug.assert;
      g.radianToDegrees = function(a) {
        return 180 * a / Math.PI;
      };
      g.degreesToRadian = function(a) {
        return a * Math.PI / 180;
      };
      g.quadraticBezier = f;
      g.quadraticBezierExtreme = function(a, b, c) {
        var d = (a - b) / (a - 2 * b + c);
        return 0 > d ? a : 1 < d ? c : f(a, b, c, d);
      };
      g.cubicBezier = t;
      g.cubicBezierExtremes = function(a, b, c, d) {
        var e = b - a, f;
        f = 2 * (c - b);
        var g = d - c;
        e + g === f && (g *= 1.0001);
        var k = 2 * e - f, l = f - 2 * e, l = Math.sqrt(l * l - 4 * e * (e - f + g));
        f = 2 * (e - f + g);
        e = (k + l) / f;
        k = (k - l) / f;
        l = [];
        0 <= e && 1 >= e && l.push(t(a, b, c, d, e));
        0 <= k && 1 >= k && l.push(t(a, b, c, d, k));
        return l;
      };
      var c = function() {
        function a(b, c) {
          this.x = b;
          this.y = c;
        }
        a.prototype.setElements = function(a, b) {
          this.x = a;
          this.y = b;
          return this;
        };
        a.prototype.set = function(a) {
          this.x = a.x;
          this.y = a.y;
          return this;
        };
        a.prototype.dot = function(a) {
          return this.x * a.x + this.y * a.y;
        };
        a.prototype.squaredLength = function() {
          return this.dot(this);
        };
        a.prototype.distanceTo = function(a) {
          return Math.sqrt(this.dot(a));
        };
        a.prototype.sub = function(a) {
          this.x -= a.x;
          this.y -= a.y;
          return this;
        };
        a.prototype.mul = function(a) {
          this.x *= a;
          this.y *= a;
          return this;
        };
        a.prototype.clone = function() {
          return new a(this.x, this.y);
        };
        a.prototype.toString = function() {
          return "{x: " + this.x + ", y: " + this.y + "}";
        };
        a.prototype.inTriangle = function(a, b, c) {
          var d = a.y * c.x - a.x * c.y + (c.y - a.y) * this.x + (a.x - c.x) * this.y, e = a.x * b.y - a.y * b.x + (a.y - b.y) * this.x + (b.x - a.x) * this.y;
          if (0 > d != 0 > e) {
            return!1;
          }
          a = -b.y * c.x + a.y * (c.x - b.x) + a.x * (b.y - c.y) + b.x * c.y;
          0 > a && (d = -d, e = -e, a = -a);
          return 0 < d && 0 < e && d + e < a;
        };
        a.createEmpty = function() {
          return new a(0, 0);
        };
        a.createEmptyPoints = function(b) {
          for (var c = [], d = 0;d < b;d++) {
            c.push(new a(0, 0));
          }
          return c;
        };
        return a;
      }();
      g.Point = c;
      var n = function() {
        function a(b, c, d) {
          this.x = b;
          this.y = c;
          this.z = d;
        }
        a.prototype.setElements = function(a, b, c) {
          this.x = a;
          this.y = b;
          this.z = c;
          return this;
        };
        a.prototype.set = function(a) {
          this.x = a.x;
          this.y = a.y;
          this.z = a.z;
          return this;
        };
        a.prototype.dot = function(a) {
          return this.x * a.x + this.y * a.y + this.z * a.z;
        };
        a.prototype.cross = function(a) {
          var b = this.z * a.x - this.x * a.z, c = this.x * a.y - this.y * a.x;
          this.x = this.y * a.z - this.z * a.y;
          this.y = b;
          this.z = c;
          return this;
        };
        a.prototype.squaredLength = function() {
          return this.dot(this);
        };
        a.prototype.sub = function(a) {
          this.x -= a.x;
          this.y -= a.y;
          this.z -= a.z;
          return this;
        };
        a.prototype.mul = function(a) {
          this.x *= a;
          this.y *= a;
          this.z *= a;
          return this;
        };
        a.prototype.normalize = function() {
          var a = Math.sqrt(this.squaredLength());
          1E-5 < a ? this.mul(1 / a) : this.setElements(0, 0, 0);
          return this;
        };
        a.prototype.clone = function() {
          return new a(this.x, this.y, this.z);
        };
        a.prototype.toString = function() {
          return "{x: " + this.x + ", y: " + this.y + ", z: " + this.z + "}";
        };
        a.createEmpty = function() {
          return new a(0, 0, 0);
        };
        a.createEmptyPoints = function(b) {
          for (var c = [], d = 0;d < b;d++) {
            c.push(new a(0, 0, 0));
          }
          return c;
        };
        return a;
      }();
      g.Point3D = n;
      var p = function() {
        function a(b, c, d, e) {
          this.setElements(b, c, d, e);
        }
        a.prototype.setElements = function(a, b, c, d) {
          this.x = a;
          this.y = b;
          this.w = c;
          this.h = d;
        };
        a.prototype.set = function(a) {
          this.x = a.x;
          this.y = a.y;
          this.w = a.w;
          this.h = a.h;
        };
        a.prototype.contains = function(a) {
          var b = a.x + a.w, c = a.y + a.h, d = this.x + this.w, e = this.y + this.h;
          return a.x >= this.x && a.x < d && a.y >= this.y && a.y < e && b > this.x && b <= d && c > this.y && c <= e;
        };
        a.prototype.containsPoint = function(a) {
          return a.x >= this.x && a.x < this.x + this.w && a.y >= this.y && a.y < this.y + this.h;
        };
        a.prototype.isContained = function(a) {
          for (var b = 0;b < a.length;b++) {
            if (a[b].contains(this)) {
              return!0;
            }
          }
          return!1;
        };
        a.prototype.isSmallerThan = function(a) {
          return this.w < a.w && this.h < a.h;
        };
        a.prototype.isLargerThan = function(a) {
          return this.w > a.w && this.h > a.h;
        };
        a.prototype.union = function(a) {
          if (this.isEmpty()) {
            this.set(a);
          } else {
            var b = this.x, c = this.y;
            this.x > a.x && (b = a.x);
            this.y > a.y && (c = a.y);
            var d = this.x + this.w;
            d < a.x + a.w && (d = a.x + a.w);
            var e = this.y + this.h;
            e < a.y + a.h && (e = a.y + a.h);
            this.x = b;
            this.y = c;
            this.w = d - b;
            this.h = e - c;
          }
        };
        a.prototype.isEmpty = function() {
          return 0 >= this.w || 0 >= this.h;
        };
        a.prototype.setEmpty = function() {
          this.h = this.w = 0;
        };
        a.prototype.intersect = function(b) {
          var c = a.createEmpty();
          if (this.isEmpty() || b.isEmpty()) {
            return c.setEmpty(), c;
          }
          c.x = Math.max(this.x, b.x);
          c.y = Math.max(this.y, b.y);
          c.w = Math.min(this.x + this.w, b.x + b.w) - c.x;
          c.h = Math.min(this.y + this.h, b.y + b.h) - c.y;
          c.isEmpty() && c.setEmpty();
          this.set(c);
        };
        a.prototype.intersects = function(a) {
          if (this.isEmpty() || a.isEmpty()) {
            return!1;
          }
          var b = Math.max(this.x, a.x), c = Math.max(this.y, a.y), b = Math.min(this.x + this.w, a.x + a.w) - b;
          a = Math.min(this.y + this.h, a.y + a.h) - c;
          return!(0 >= b || 0 >= a);
        };
        a.prototype.intersectsTransformedAABB = function(b, c) {
          var d = a._temporary;
          d.set(b);
          c.transformRectangleAABB(d);
          return this.intersects(d);
        };
        a.prototype.intersectsTranslated = function(a, b, c) {
          if (this.isEmpty() || a.isEmpty()) {
            return!1;
          }
          var d = Math.max(this.x, a.x + b), e = Math.max(this.y, a.y + c);
          b = Math.min(this.x + this.w, a.x + b + a.w) - d;
          a = Math.min(this.y + this.h, a.y + c + a.h) - e;
          return!(0 >= b || 0 >= a);
        };
        a.prototype.area = function() {
          return this.w * this.h;
        };
        a.prototype.clone = function() {
          return new a(this.x, this.y, this.w, this.h);
        };
        a.prototype.snap = function() {
          var a = Math.ceil(this.x + this.w), b = Math.ceil(this.y + this.h);
          this.x = Math.floor(this.x);
          this.y = Math.floor(this.y);
          this.w = a - this.x;
          this.h = b - this.y;
          return this;
        };
        a.prototype.scale = function(a, b) {
          this.x *= a;
          this.y *= b;
          this.w *= a;
          this.h *= b;
          return this;
        };
        a.prototype.offset = function(a, b) {
          this.x += a;
          this.y += b;
          return this;
        };
        a.prototype.resize = function(a, b) {
          this.w += a;
          this.h += b;
          return this;
        };
        a.prototype.expand = function(a, b) {
          this.offset(-a, -b).resize(2 * a, 2 * b);
          return this;
        };
        a.prototype.getCenter = function() {
          return new c(this.x + this.w / 2, this.y + this.h / 2);
        };
        a.prototype.getAbsoluteBounds = function() {
          return new a(0, 0, this.w, this.h);
        };
        a.prototype.toString = function() {
          return "{" + this.x + ", " + this.y + ", " + this.w + ", " + this.h + "}";
        };
        a.createEmpty = function() {
          return new a(0, 0, 0, 0);
        };
        a.createSquare = function() {
          return new a(-512, -512, 1024, 1024);
        };
        a.createMaxI16 = function() {
          return new a(b.Numbers.MinI16, b.Numbers.MinI16, 65535, 65535);
        };
        a.prototype.getCorners = function(a) {
          a[0].x = this.x;
          a[0].y = this.y;
          a[1].x = this.x + this.w;
          a[1].y = this.y;
          a[2].x = this.x + this.w;
          a[2].y = this.y + this.h;
          a[3].x = this.x;
          a[3].y = this.y + this.h;
        };
        a._temporary = a.createEmpty();
        return a;
      }();
      g.Rectangle = p;
      var e = function() {
        function a(b) {
          this.corners = b.map(function(a) {
            return a.clone();
          });
          this.axes = [b[1].clone().sub(b[0]), b[3].clone().sub(b[0])];
          this.origins = [];
          for (var c = 0;2 > c;c++) {
            this.axes[c].mul(1 / this.axes[c].squaredLength()), this.origins.push(b[0].dot(this.axes[c]));
          }
        }
        a.prototype.getBounds = function() {
          return a.getBounds(this.corners);
        };
        a.getBounds = function(a) {
          for (var b = new c(Number.MAX_VALUE, Number.MAX_VALUE), d = new c(Number.MIN_VALUE, Number.MIN_VALUE), e = 0;4 > e;e++) {
            var f = a[e].x, g = a[e].y;
            b.x = Math.min(b.x, f);
            b.y = Math.min(b.y, g);
            d.x = Math.max(d.x, f);
            d.y = Math.max(d.y, g);
          }
          return new p(b.x, b.y, d.x - b.x, d.y - b.y);
        };
        a.prototype.intersects = function(a) {
          return this.intersectsOneWay(a) && a.intersectsOneWay(this);
        };
        a.prototype.intersectsOneWay = function(a) {
          for (var b = 0;2 > b;b++) {
            for (var c = 0;4 > c;c++) {
              var d = a.corners[c].dot(this.axes[b]), e, f;
              0 === c ? f = e = d : d < e ? e = d : d > f && (f = d);
            }
            if (e > 1 + this.origins[b] || f < this.origins[b]) {
              return!1;
            }
          }
          return!0;
        };
        return a;
      }();
      g.OBB = e;
      var q = function() {
        function a(b, c, d, e, f, g) {
          this._data = new Float64Array(6);
          this.setElements(b, c, d, e, f, g);
        }
        Object.defineProperty(a.prototype, "a", {get:function() {
          return this._data[0];
        }, set:function(a) {
          this._data[0] = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "b", {get:function() {
          return this._data[1];
        }, set:function(a) {
          this._data[1] = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "c", {get:function() {
          return this._data[2];
        }, set:function(a) {
          this._data[2] = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "d", {get:function() {
          return this._data[3];
        }, set:function(a) {
          this._data[3] = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "tx", {get:function() {
          return this._data[4];
        }, set:function(a) {
          this._data[4] = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "ty", {get:function() {
          return this._data[5];
        }, set:function(a) {
          this._data[5] = a;
        }, enumerable:!0, configurable:!0});
        a.prototype.setElements = function(a, b, c, d, e, f) {
          var g = this._data;
          g[0] = a;
          g[1] = b;
          g[2] = c;
          g[3] = d;
          g[4] = e;
          g[5] = f;
        };
        a.prototype.set = function(a) {
          var b = this._data;
          a = a._data;
          b[0] = a[0];
          b[1] = a[1];
          b[2] = a[2];
          b[3] = a[3];
          b[4] = a[4];
          b[5] = a[5];
        };
        a.prototype.emptyArea = function(a) {
          a = this._data;
          return 0 === a[0] || 0 === a[3] ? !0 : !1;
        };
        a.prototype.infiniteArea = function(a) {
          a = this._data;
          return Infinity === Math.abs(a[0]) || Infinity === Math.abs(a[3]) ? !0 : !1;
        };
        a.prototype.isEqual = function(a) {
          var b = this._data;
          a = a._data;
          return b[0] === a[0] && b[1] === a[1] && b[2] === a[2] && b[3] === a[3] && b[4] === a[4] && b[5] === a[5];
        };
        a.prototype.clone = function() {
          var b = this._data;
          return new a(b[0], b[1], b[2], b[3], b[4], b[5]);
        };
        a.prototype.transform = function(a, b, c, d, e, f) {
          var g = this._data, k = g[0], l = g[1], m = g[2], n = g[3], r = g[4], p = g[5];
          g[0] = k * a + m * b;
          g[1] = l * a + n * b;
          g[2] = k * c + m * d;
          g[3] = l * c + n * d;
          g[4] = k * e + m * f + r;
          g[5] = l * e + n * f + p;
          return this;
        };
        a.prototype.transformRectangle = function(a, b) {
          var c = this._data, d = c[0], e = c[1], f = c[2], g = c[3], k = c[4], c = c[5], l = a.x, m = a.y, n = a.w, r = a.h;
          b[0].x = d * l + f * m + k;
          b[0].y = e * l + g * m + c;
          b[1].x = d * (l + n) + f * m + k;
          b[1].y = e * (l + n) + g * m + c;
          b[2].x = d * (l + n) + f * (m + r) + k;
          b[2].y = e * (l + n) + g * (m + r) + c;
          b[3].x = d * l + f * (m + r) + k;
          b[3].y = e * l + g * (m + r) + c;
        };
        a.prototype.isTranslationOnly = function() {
          var a = this._data;
          return 1 === a[0] && 0 === a[1] && 0 === a[2] && 1 === a[3] || d(a[0], 1) && d(a[1], 0) && d(a[2], 0) && d(a[3], 1) ? !0 : !1;
        };
        a.prototype.transformRectangleAABB = function(a) {
          var b = this._data, c = b[0], d = b[1], e = b[2], f = b[3], g = b[4], k = b[5], l = a.x, m = a.y, n = a.w, r = a.h, b = c * l + e * m + g, p = d * l + f * m + k, q = c * (l + n) + e * m + g, u = d * (l + n) + f * m + k, s = c * (l + n) + e * (m + r) + g, n = d * (l + n) + f * (m + r) + k, c = c * l + e * (m + r) + g, d = d * l + f * (m + r) + k, f = 0;
          b > q && (f = b, b = q, q = f);
          s > c && (f = s, s = c, c = f);
          a.x = b < s ? b : s;
          a.w = (q > c ? q : c) - a.x;
          p > u && (f = p, p = u, u = f);
          n > d && (f = n, n = d, d = f);
          a.y = p < n ? p : n;
          a.h = (u > d ? u : d) - a.y;
        };
        a.prototype.scale = function(a, b) {
          var c = this._data;
          c[0] *= a;
          c[1] *= b;
          c[2] *= a;
          c[3] *= b;
          c[4] *= a;
          c[5] *= b;
          return this;
        };
        a.prototype.scaleClone = function(a, b) {
          return 1 === a && 1 === b ? this : this.clone().scale(a, b);
        };
        a.prototype.rotate = function(a) {
          var b = this._data, c = b[0], d = b[1], e = b[2], f = b[3], g = b[4], k = b[5], l = Math.cos(a);
          a = Math.sin(a);
          b[0] = l * c - a * d;
          b[1] = a * c + l * d;
          b[2] = l * e - a * f;
          b[3] = a * e + l * f;
          b[4] = l * g - a * k;
          b[5] = a * g + l * k;
          return this;
        };
        a.prototype.concat = function(a) {
          var b = this._data;
          a = a._data;
          var c = b[0] * a[0], d = 0, e = 0, f = b[3] * a[3], g = b[4] * a[0] + a[4], k = b[5] * a[3] + a[5];
          if (0 !== b[1] || 0 !== b[2] || 0 !== a[1] || 0 !== a[2]) {
            c += b[1] * a[2], f += b[2] * a[1], d += b[0] * a[1] + b[1] * a[3], e += b[2] * a[0] + b[3] * a[2], g += b[5] * a[2], k += b[4] * a[1];
          }
          b[0] = c;
          b[1] = d;
          b[2] = e;
          b[3] = f;
          b[4] = g;
          b[5] = k;
        };
        a.prototype.preMultiply = function(a) {
          var b = this._data;
          a = a._data;
          var c = a[0] * b[0], d = 0, e = 0, f = a[3] * b[3], g = a[4] * b[0] + b[4], k = a[5] * b[3] + b[5];
          if (0 !== a[1] || 0 !== a[2] || 0 !== b[1] || 0 !== b[2]) {
            c += a[1] * b[2], f += a[2] * b[1], d += a[0] * b[1] + a[1] * b[3], e += a[2] * b[0] + a[3] * b[2], g += a[5] * b[2], k += a[4] * b[1];
          }
          b[0] = c;
          b[1] = d;
          b[2] = e;
          b[3] = f;
          b[4] = g;
          b[5] = k;
        };
        a.prototype.translate = function(a, b) {
          var c = this._data;
          c[4] += a;
          c[5] += b;
          return this;
        };
        a.prototype.setIdentity = function() {
          var a = this._data;
          a[0] = 1;
          a[1] = 0;
          a[2] = 0;
          a[3] = 1;
          a[4] = 0;
          a[5] = 0;
        };
        a.prototype.isIdentity = function() {
          var a = this._data;
          return 1 === a[0] && 0 === a[1] && 0 === a[2] && 1 === a[3] && 0 === a[4] && 0 === a[5];
        };
        a.prototype.transformPoint = function(a) {
          var b = this._data, c = a.x, d = a.y;
          a.x = b[0] * c + b[2] * d + b[4];
          a.y = b[1] * c + b[3] * d + b[5];
        };
        a.prototype.transformPoints = function(a) {
          for (var b = 0;b < a.length;b++) {
            this.transformPoint(a[b]);
          }
        };
        a.prototype.deltaTransformPoint = function(a) {
          var b = this._data, c = a.x, d = a.y;
          a.x = b[0] * c + b[2] * d;
          a.y = b[1] * c + b[3] * d;
        };
        a.prototype.inverse = function(a) {
          var b = this._data, c = a._data, d = b[1], e = b[2], f = b[4], g = b[5];
          if (0 === d && 0 === e) {
            var k = c[0] = 1 / b[0], b = c[3] = 1 / b[3];
            c[1] = 0;
            c[2] = 0;
            c[4] = -k * f;
            c[5] = -b * g;
          } else {
            var k = b[0], b = b[3], l = k * b - d * e;
            0 === l ? a.setIdentity() : (l = 1 / l, c[0] = b * l, d = c[1] = -d * l, e = c[2] = -e * l, b = c[3] = k * l, c[4] = -(c[0] * f + e * g), c[5] = -(d * f + b * g));
          }
        };
        a.prototype.getTranslateX = function() {
          return this._data[4];
        };
        a.prototype.getTranslateY = function() {
          return this._data[4];
        };
        a.prototype.getScaleX = function() {
          var a = this._data;
          if (1 === a[0] && 0 === a[1]) {
            return 1;
          }
          var b = Math.sqrt(a[0] * a[0] + a[1] * a[1]);
          return 0 < a[0] ? b : -b;
        };
        a.prototype.getScaleY = function() {
          var a = this._data;
          if (0 === a[2] && 1 === a[3]) {
            return 1;
          }
          var b = Math.sqrt(a[2] * a[2] + a[3] * a[3]);
          return 0 < a[3] ? b : -b;
        };
        a.prototype.getAbsoluteScaleX = function() {
          return Math.abs(this.getScaleX());
        };
        a.prototype.getAbsoluteScaleY = function() {
          return Math.abs(this.getScaleY());
        };
        a.prototype.getRotation = function() {
          var a = this._data;
          return 180 * Math.atan(a[1] / a[0]) / Math.PI;
        };
        a.prototype.isScaleOrRotation = function() {
          var a = this._data;
          return.01 > Math.abs(a[0] * a[2] + a[1] * a[3]);
        };
        a.prototype.toString = function() {
          var a = this._data;
          return "{" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " + a[4] + ", " + a[5] + "}";
        };
        a.prototype.toWebGLMatrix = function() {
          var a = this._data;
          return new Float32Array([a[0], a[1], 0, a[2], a[3], 0, a[4], a[5], 1]);
        };
        a.prototype.toCSSTransform = function() {
          var a = this._data;
          return "matrix(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " + a[4] + ", " + a[5] + ")";
        };
        a.createIdentity = function() {
          return new a(1, 0, 0, 1, 0, 0);
        };
        a.prototype.toSVGMatrix = function() {
          var b = this._data, c = a._svg.createSVGMatrix();
          c.a = b[0];
          c.b = b[1];
          c.c = b[2];
          c.d = b[3];
          c.e = b[4];
          c.f = b[5];
          return c;
        };
        a.prototype.snap = function() {
          var a = this._data;
          return this.isTranslationOnly() ? (a[0] = 1, a[1] = 0, a[2] = 0, a[3] = 1, a[4] = Math.round(a[4]), a[5] = Math.round(a[5]), !0) : !1;
        };
        a.createIdentitySVGMatrix = function() {
          return a._svg.createSVGMatrix();
        };
        a.createSVGMatrixFromArray = function(b) {
          var c = a._svg.createSVGMatrix();
          c.a = b[0];
          c.b = b[1];
          c.c = b[2];
          c.d = b[3];
          c.e = b[4];
          c.f = b[5];
          return c;
        };
        a._svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
        a.multiply = function(a, b) {
          var c = b._data;
          a.transform(c[0], c[1], c[2], c[3], c[4], c[5]);
        };
        return a;
      }();
      g.Matrix = q;
      q = function() {
        function a(b) {
          this._m = new Float32Array(b);
        }
        a.prototype.asWebGLMatrix = function() {
          return this._m;
        };
        a.createCameraLookAt = function(b, c, d) {
          c = b.clone().sub(c).normalize();
          d = d.clone().cross(c).normalize();
          var e = c.clone().cross(d);
          return new a([d.x, d.y, d.z, 0, e.x, e.y, e.z, 0, c.x, c.y, c.z, 0, b.x, b.y, b.z, 1]);
        };
        a.createLookAt = function(b, c, d) {
          c = b.clone().sub(c).normalize();
          d = d.clone().cross(c).normalize();
          var e = c.clone().cross(d);
          return new a([d.x, e.x, c.x, 0, e.x, e.y, c.y, 0, c.x, e.z, c.z, 0, -d.dot(b), -e.dot(b), -c.dot(b), 1]);
        };
        a.prototype.mul = function(a) {
          a = [a.x, a.y, a.z, 0];
          for (var b = this._m, c = [], d = 0;4 > d;d++) {
            c[d] = 0;
            for (var e = 4 * d, f = 0;4 > f;f++) {
              c[d] += b[e + f] * a[f];
            }
          }
          return new n(c[0], c[1], c[2]);
        };
        a.create2DProjection = function(b, c, d) {
          return new a([2 / b, 0, 0, 0, 0, -2 / c, 0, 0, 0, 0, 2 / d, 0, -1, 1, 0, 1]);
        };
        a.createPerspective = function(b, c, d, e) {
          b = Math.tan(.5 * Math.PI - .5 * b);
          var f = 1 / (d - e);
          return new a([b / c, 0, 0, 0, 0, b, 0, 0, 0, 0, (d + e) * f, -1, 0, 0, d * e * f * 2, 0]);
        };
        a.createIdentity = function() {
          return a.createTranslation();
        };
        a.createTranslation = function() {
          return new a([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
        };
        a.createXRotation = function(b) {
          var c = Math.cos(b);
          b = Math.sin(b);
          return new a([1, 0, 0, 0, 0, c, b, 0, 0, -b, c, 0, 0, 0, 0, 1]);
        };
        a.createYRotation = function(b) {
          var c = Math.cos(b);
          b = Math.sin(b);
          return new a([c, 0, -b, 0, 0, 1, 0, 0, b, 0, c, 0, 0, 0, 0, 1]);
        };
        a.createZRotation = function(b) {
          var c = Math.cos(b);
          b = Math.sin(b);
          return new a([c, b, 0, 0, -b, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
        };
        a.createScale = function(b, c, d) {
          return new a([b, 0, 0, 0, 0, c, 0, 0, 0, 0, d, 0, 0, 0, 0, 1]);
        };
        a.createMultiply = function(b, c) {
          var d = b._m, e = c._m, f = d[0], g = d[1], k = d[2], l = d[3], m = d[4], n = d[5], p = d[6], q = d[7], u = d[8], s = d[9], w = d[10], t = d[11], L = d[12], M = d[13], V = d[14], d = d[15], Q = e[0], U = e[1], S = e[2], aa = e[3], $ = e[4], ea = e[5], Z = e[6], v = e[7], X = e[8], ba = e[9], R = e[10], H = e[11], Y = e[12], ga = e[13], ca = e[14], e = e[15];
          return new a([f * Q + g * $ + k * X + l * Y, f * U + g * ea + k * ba + l * ga, f * S + g * Z + k * R + l * ca, f * aa + g * v + k * H + l * e, m * Q + n * $ + p * X + q * Y, m * U + n * ea + p * ba + q * ga, m * S + n * Z + p * R + q * ca, m * aa + n * v + p * H + q * e, u * Q + s * $ + w * X + t * Y, u * U + s * ea + w * ba + t * ga, u * S + s * Z + w * R + t * ca, u * aa + s * v + w * H + t * e, L * Q + M * $ + V * X + d * Y, L * U + M * ea + V * ba + d * ga, L * S + M * Z + V * R + d * 
          ca, L * aa + M * v + V * H + d * e]);
        };
        a.createInverse = function(b) {
          var c = b._m;
          b = c[0];
          var d = c[1], e = c[2], f = c[3], g = c[4], k = c[5], l = c[6], m = c[7], n = c[8], p = c[9], q = c[10], u = c[11], s = c[12], w = c[13], t = c[14], c = c[15], L = q * c, M = t * u, V = l * c, Q = t * m, U = l * u, S = q * m, aa = e * c, $ = t * f, ea = e * u, Z = q * f, v = e * m, X = l * f, ba = n * w, R = s * p, H = g * w, Y = s * k, ga = g * p, ca = n * k, ka = b * w, W = s * d, ha = b * p, da = n * d, ja = b * k, N = g * d, ma = L * k + Q * p + U * w - (M * k + V * p + S * w), T = 
          M * d + aa * p + Z * w - (L * d + $ * p + ea * w), w = V * d + $ * k + v * w - (Q * d + aa * k + X * w), d = S * d + ea * k + X * p - (U * d + Z * k + v * p), k = 1 / (b * ma + g * T + n * w + s * d);
          return new a([k * ma, k * T, k * w, k * d, k * (M * g + V * n + S * s - (L * g + Q * n + U * s)), k * (L * b + $ * n + ea * s - (M * b + aa * n + Z * s)), k * (Q * b + aa * g + X * s - (V * b + $ * g + v * s)), k * (U * b + Z * g + v * n - (S * b + ea * g + X * n)), k * (ba * m + Y * u + ga * c - (R * m + H * u + ca * c)), k * (R * f + ka * u + da * c - (ba * f + W * u + ha * c)), k * (H * f + W * m + ja * c - (Y * f + ka * m + N * c)), k * (ca * f + ha * m + N * u - (ga * f + da * m + 
          ja * u)), k * (H * q + ca * t + R * l - (ga * t + ba * l + Y * q)), k * (ha * t + ba * e + W * q - (ka * q + da * t + R * e)), k * (ka * l + N * t + Y * e - (ja * t + H * e + W * l)), k * (ja * q + ga * e + da * l - (ha * l + N * q + ca * e))]);
        };
        return a;
      }();
      g.Matrix3D = q;
      q = function() {
        function a(b, c, d) {
          "undefined" === typeof d && (d = 7);
          var e = this.size = 1 << d;
          this.sizeInBits = d;
          this.w = b;
          this.h = c;
          this.c = Math.ceil(b / e);
          this.r = Math.ceil(c / e);
          this.grid = [];
          for (b = 0;b < this.r;b++) {
            for (this.grid.push([]), c = 0;c < this.c;c++) {
              this.grid[b][c] = new a.Cell(new p(c * e, b * e, e, e));
            }
          }
        }
        a.prototype.clear = function() {
          for (var a = 0;a < this.r;a++) {
            for (var b = 0;b < this.c;b++) {
              this.grid[a][b].clear();
            }
          }
        };
        a.prototype.getBounds = function() {
          return new p(0, 0, this.w, this.h);
        };
        a.prototype.addDirtyRectangle = function(a) {
          var b = a.x >> this.sizeInBits, c = a.y >> this.sizeInBits;
          if (!(b >= this.c || c >= this.r)) {
            0 > b && (b = 0);
            0 > c && (c = 0);
            var d = this.grid[c][b];
            a = a.clone();
            a.snap();
            if (d.region.contains(a)) {
              d.bounds.isEmpty() ? d.bounds.set(a) : d.bounds.contains(a) || d.bounds.union(a);
            } else {
              for (var e = Math.min(this.c, Math.ceil((a.x + a.w) / this.size)) - b, f = Math.min(this.r, Math.ceil((a.y + a.h) / this.size)) - c, g = 0;g < e;g++) {
                for (var k = 0;k < f;k++) {
                  d = this.grid[c + k][b + g], d = d.region.clone(), d.intersect(a), d.isEmpty() || this.addDirtyRectangle(d);
                }
              }
            }
          }
        };
        a.prototype.gatherRegions = function(a) {
          for (var b = 0;b < this.r;b++) {
            for (var c = 0;c < this.c;c++) {
              this.grid[b][c].bounds.isEmpty() || a.push(this.grid[b][c].bounds);
            }
          }
        };
        a.prototype.gatherOptimizedRegions = function(a) {
          this.gatherRegions(a);
        };
        a.prototype.getDirtyRatio = function() {
          var a = this.w * this.h;
          if (0 === a) {
            return 0;
          }
          for (var b = 0, c = 0;c < this.r;c++) {
            for (var d = 0;d < this.c;d++) {
              b += this.grid[c][d].region.area();
            }
          }
          return b / a;
        };
        a.prototype.render = function(a, b) {
          function c(b) {
            a.rect(b.x, b.y, b.w, b.h);
          }
          if (b && b.drawGrid) {
            a.strokeStyle = "white";
            for (var d = 0;d < this.r;d++) {
              for (var e = 0;e < this.c;e++) {
                var f = this.grid[d][e];
                a.beginPath();
                c(f.region);
                a.closePath();
                a.stroke();
              }
            }
          }
          a.strokeStyle = "#E0F8D8";
          for (d = 0;d < this.r;d++) {
            for (e = 0;e < this.c;e++) {
              f = this.grid[d][e], a.beginPath(), c(f.bounds), a.closePath(), a.stroke();
            }
          }
        };
        a.tmpRectangle = p.createEmpty();
        return a;
      }();
      g.DirtyRegion = q;
      (function(a) {
        var b = function() {
          function a(b) {
            this.region = b;
            this.bounds = p.createEmpty();
          }
          a.prototype.clear = function() {
            this.bounds.setEmpty();
          };
          return a;
        }();
        a.Cell = b;
      })(g.DirtyRegion || (g.DirtyRegion = {}));
      var q = g.DirtyRegion, l = function() {
        function a(b, c, d, e, f, g) {
          this.index = b;
          this.x = c;
          this.y = d;
          this.scale = g;
          this.bounds = new p(c * e, d * f, e, f);
        }
        a.prototype.getOBB = function() {
          if (this._obb) {
            return this._obb;
          }
          this.bounds.getCorners(a.corners);
          return this._obb = new e(a.corners);
        };
        a.corners = c.createEmptyPoints(4);
        return a;
      }();
      g.Tile = l;
      var u = function() {
        function b(c, d, e, f, g) {
          this.tileW = e;
          this.tileH = f;
          this.scale = g;
          this.w = c;
          this.h = d;
          this.rows = Math.ceil(d / f);
          this.columns = Math.ceil(c / e);
          a(2048 > this.rows && 2048 > this.columns);
          this.tiles = [];
          for (d = c = 0;d < this.rows;d++) {
            for (var k = 0;k < this.columns;k++) {
              this.tiles.push(new l(c++, k, d, e, f, g));
            }
          }
        }
        b.prototype.getTiles = function(a, b) {
          if (b.emptyArea(a)) {
            return[];
          }
          if (b.infiniteArea(a)) {
            return this.tiles;
          }
          var c = this.columns * this.rows;
          return 40 > c && b.isScaleOrRotation() ? this.getFewTiles(a, b, 10 < c) : this.getManyTiles(a, b);
        };
        b.prototype.getFewTiles = function(a, c, d) {
          "undefined" === typeof d && (d = !0);
          if (c.isTranslationOnly() && 1 === this.tiles.length) {
            return this.tiles[0].bounds.intersectsTranslated(a, c.tx, c.ty) ? [this.tiles[0]] : [];
          }
          c.transformRectangle(a, b._points);
          var f;
          a = new p(0, 0, this.w, this.h);
          d && (f = new e(b._points));
          a.intersect(e.getBounds(b._points));
          if (a.isEmpty()) {
            return[];
          }
          var g = a.x / this.tileW | 0;
          c = a.y / this.tileH | 0;
          var k = Math.ceil((a.x + a.w) / this.tileW) | 0, l = Math.ceil((a.y + a.h) / this.tileH) | 0, g = s(g, 0, this.columns), k = s(k, 0, this.columns);
          c = s(c, 0, this.rows);
          for (var l = s(l, 0, this.rows), m = [];g < k;g++) {
            for (var n = c;n < l;n++) {
              var q = this.tiles[n * this.columns + g];
              q.bounds.intersects(a) && (d ? q.getOBB().intersects(f) : 1) && m.push(q);
            }
          }
          return m;
        };
        b.prototype.getManyTiles = function(a, c) {
          function d(a, b, c) {
            return(a - b.x) * (c.y - b.y) / (c.x - b.x) + b.y;
          }
          function e(a, b, c, d, f) {
            if (!(0 > c || c >= b.columns)) {
              for (d = s(d, 0, b.rows), f = s(f + 1, 0, b.rows);d < f;d++) {
                a.push(b.tiles[d * b.columns + c]);
              }
            }
          }
          var f = b._points;
          c.transformRectangle(a, f);
          for (var g = f[0].x < f[1].x ? 0 : 1, k = f[2].x < f[3].x ? 2 : 3, k = f[g].x < f[k].x ? g : k, g = [], l = 0;5 > l;l++, k++) {
            g.push(f[k % 4]);
          }
          (g[1].x - g[0].x) * (g[3].y - g[0].y) < (g[1].y - g[0].y) * (g[3].x - g[0].x) && (f = g[1], g[1] = g[3], g[3] = f);
          var f = [], m, n, k = Math.floor(g[0].x / this.tileW), l = (k + 1) * this.tileW;
          if (g[2].x < l) {
            m = Math.min(g[0].y, g[1].y, g[2].y, g[3].y);
            n = Math.max(g[0].y, g[1].y, g[2].y, g[3].y);
            var p = Math.floor(m / this.tileH), q = Math.floor(n / this.tileH);
            e(f, this, k, p, q);
            return f;
          }
          var u = 0, w = 4, t = !1;
          if (g[0].x === g[1].x || g[0].x === g[3].x) {
            g[0].x === g[1].x ? (t = !0, u++) : w--, m = d(l, g[u], g[u + 1]), n = d(l, g[w], g[w - 1]), p = Math.floor(g[u].y / this.tileH), q = Math.floor(g[w].y / this.tileH), e(f, this, k, p, q), k++;
          }
          do {
            var D, L, M, V;
            g[u + 1].x < l ? (D = g[u + 1].y, M = !0) : (D = d(l, g[u], g[u + 1]), M = !1);
            g[w - 1].x < l ? (L = g[w - 1].y, V = !0) : (L = d(l, g[w], g[w - 1]), V = !1);
            p = Math.floor((g[u].y < g[u + 1].y ? m : D) / this.tileH);
            q = Math.floor((g[w].y > g[w - 1].y ? n : L) / this.tileH);
            e(f, this, k, p, q);
            if (M && t) {
              break;
            }
            M ? (t = !0, u++, m = d(l, g[u], g[u + 1])) : m = D;
            V ? (w--, n = d(l, g[w], g[w - 1])) : n = L;
            k++;
            l = (k + 1) * this.tileW;
          } while (u < w);
          return f;
        };
        b._points = c.createEmptyPoints(4);
        return b;
      }();
      g.TileCache = u;
      q = function() {
        function b(a, c, d) {
          this._cacheLevels = [];
          this._source = a;
          this._tileSize = c;
          this._minUntiledSize = d;
        }
        b.prototype._getTilesAtScale = function(b, c, d) {
          var e = Math.max(c.getAbsoluteScaleX(), c.getAbsoluteScaleY()), f = 0;
          1 !== e && (f = s(Math.round(Math.log(1 / e) / Math.LN2), -5, 3));
          e = m(f);
          if (this._source.hasFlags(1)) {
            for (;;) {
              e = m(f);
              if (d.contains(this._source.getBounds().getAbsoluteBounds().clone().scale(e, e))) {
                break;
              }
              f--;
              a(-5 <= f);
            }
          }
          this._source.hasFlags(4) || (f = s(f, -5, 0));
          e = m(f);
          d = 5 + f;
          f = this._cacheLevels[d];
          if (!f) {
            var f = this._source.getBounds().getAbsoluteBounds().clone().scale(e, e), g, k;
            this._source.hasFlags(1) || !this._source.hasFlags(8) || Math.max(f.w, f.h) <= this._minUntiledSize ? (g = f.w, k = f.h) : g = k = this._tileSize;
            f = this._cacheLevels[d] = new u(f.w, f.h, g, k, e);
          }
          return f.getTiles(b, c.scaleClone(e, e));
        };
        b.prototype.fetchTiles = function(a, b, c, d) {
          var e = new p(0, 0, c.canvas.width, c.canvas.height);
          a = this._getTilesAtScale(a, b, e);
          var f;
          b = this._source;
          for (var g = 0;g < a.length;g++) {
            var k = a[g];
            k.cachedSurfaceRegion && k.cachedSurfaceRegion.surface && !b.hasFlags(3) || (f || (f = []), f.push(k));
          }
          f && this._cacheTiles(c, f, d, e);
          b.removeFlags(2);
          return a;
        };
        b.prototype._getTileBounds = function(a) {
          for (var b = p.createEmpty(), c = 0;c < a.length;c++) {
            b.union(a[c].bounds);
          }
          return b;
        };
        b.prototype._cacheTiles = function(b, c, d, e, f) {
          "undefined" === typeof f && (f = 4);
          a(0 < f, "Infinite recursion is likely.");
          var g = this._getTileBounds(c);
          b.save();
          b.setTransform(1, 0, 0, 1, 0, 0);
          b.clearRect(0, 0, e.w, e.h);
          b.translate(-g.x, -g.y);
          b.scale(c[0].scale, c[0].scale);
          var l = this._source.getBounds();
          b.translate(-l.x, -l.y);
          2 <= k.traceLevel && k.writer && k.writer.writeLn("Rendering Tiles: " + g);
          this._source.render(b);
          b.restore();
          for (var l = null, m = 0;m < c.length;m++) {
            var n = c[m], p = n.bounds.clone();
            p.x -= g.x;
            p.y -= g.y;
            e.contains(p) || (l || (l = []), l.push(n));
            n.cachedSurfaceRegion = d(n.cachedSurfaceRegion, b, p);
          }
          l && (2 <= l.length ? (c = l.slice(0, l.length / 2 | 0), g = l.slice(c.length), this._cacheTiles(b, c, d, e, f - 1), this._cacheTiles(b, g, d, e, f - 1)) : this._cacheTiles(b, l, d, e, f - 1));
        };
        return b;
      }();
      g.RenderableTileCache = q;
      var w = function() {
        return function(a, b) {
          this.surfaceRegion = a;
          this.scale = b;
        };
      }();
      g.MipMapLevel = w;
      q = function() {
        function a(b, c, d) {
          this._source = b;
          this._levels = [];
          this._surfaceRegionAllocator = c;
          this._size = d;
        }
        a.prototype.render = function(a) {
        };
        a.prototype.getLevel = function(a) {
          a = Math.max(a.getAbsoluteScaleX(), a.getAbsoluteScaleY());
          var b = 0;
          1 !== a && (b = s(Math.round(Math.log(a) / Math.LN2), -5, 3));
          this._source.hasFlags(4) || (b = s(b, -5, 0));
          a = m(b);
          var c = 5 + b, d = this._levels[c];
          if (!d) {
            b = this._source.getBounds().clone();
            b.scale(a, a);
            b.snap();
            var d = this._surfaceRegionAllocator.allocate(b.w, b.h), e = d.region, d = this._levels[c] = new w(d, a), c = d.surfaceRegion.surface.context;
            c.save();
            c.beginPath();
            c.rect(e.x, e.y, e.w, e.h);
            c.clip();
            c.setTransform(a, 0, 0, a, e.x - b.x, e.y - b.y);
            this._source.render(c);
            c.restore();
          }
          return d;
        };
        return a;
      }();
      g.MipMap = q;
    })(k.Geometry || (k.Geometry = {}));
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(b, k) {
  function g() {
    this.constructor = b;
  }
  for (var f in k) {
    k.hasOwnProperty(f) && (b[f] = k[f]);
  }
  g.prototype = k.prototype;
  b.prototype = new g;
};
(function(b) {
  (function(k) {
    var g = b.IntegerUtilities.roundToMultipleOfPowerOfTwo, f = b.Debug.assert, t = k.Geometry.Rectangle;
    (function(b) {
      var m = function(a) {
        function b() {
          a.apply(this, arguments);
        }
        __extends(b, a);
        return b;
      }(k.Geometry.Rectangle);
      b.Region = m;
      var d = function() {
        function b(c, d) {
          this._root = new a(0, 0, c | 0, d | 0, !1);
        }
        b.prototype.allocate = function(a, b) {
          a = Math.ceil(a);
          b = Math.ceil(b);
          f(0 < a && 0 < b);
          var c = this._root.insert(a, b);
          c && (c.allocator = this, c.allocated = !0);
          return c;
        };
        b.prototype.free = function(a) {
          f(a.allocator === this);
          a.clear();
          a.allocated = !1;
        };
        b.RANDOM_ORIENTATION = !0;
        b.MAX_DEPTH = 256;
        return b;
      }();
      b.CompactAllocator = d;
      var a = function(a) {
        function b(c, d, e, f, g) {
          a.call(this, c, d, e, f);
          this._children = null;
          this._horizontal = g;
          this.allocated = !1;
        }
        __extends(b, a);
        b.prototype.clear = function() {
          this._children = null;
          this.allocated = !1;
        };
        b.prototype.insert = function(a, b) {
          return this._insert(a, b, 0);
        };
        b.prototype._insert = function(a, c, e) {
          if (!(e > d.MAX_DEPTH || this.allocated || this.w < a || this.h < c)) {
            if (this._children) {
              var f;
              if ((f = this._children[0]._insert(a, c, e + 1)) || (f = this._children[1]._insert(a, c, e + 1))) {
                return f;
              }
            } else {
              return f = !this._horizontal, d.RANDOM_ORIENTATION && (f = .5 <= Math.random()), this._children = this._horizontal ? [new b(this.x, this.y, this.w, c, !1), new b(this.x, this.y + c, this.w, this.h - c, f)] : [new b(this.x, this.y, a, this.h, !0), new b(this.x + a, this.y, this.w - a, this.h, f)], f = this._children[0], f.w === a && f.h === c ? (f.allocated = !0, f) : this._insert(a, c, e + 1);
            }
          }
        };
        return b;
      }(b.Region), c = function() {
        function a(b, c, d, e) {
          this._columns = b / d | 0;
          this._rows = c / e | 0;
          this._sizeW = d;
          this._sizeH = e;
          this._freeList = [];
          this._index = 0;
          this._total = this._columns * this._rows;
        }
        a.prototype.allocate = function(a, b) {
          a = Math.ceil(a);
          b = Math.ceil(b);
          f(0 < a && 0 < b);
          var c = this._sizeW, d = this._sizeH;
          if (a > c || b > d) {
            return null;
          }
          var e = this._freeList, g = this._index;
          return 0 < e.length ? (c = e.pop(), f(!1 === c.allocated), c.allocated = !0, c) : g < this._total ? (e = g / this._columns | 0, c = new n((g - e * this._columns) * c, e * d, a, b), c.index = g, c.allocator = this, c.allocated = !0, this._index++, c) : null;
        };
        a.prototype.free = function(a) {
          f(a.allocator === this);
          a.allocated = !1;
          this._freeList.push(a);
        };
        return a;
      }();
      b.GridAllocator = c;
      var n = function(a) {
        function b(c, d, e, f) {
          a.call(this, c, d, e, f);
          this.index = -1;
        }
        __extends(b, a);
        return b;
      }(b.Region);
      b.GridCell = n;
      var p = function() {
        return function(a, b, c) {
          this.size = a;
          this.region = b;
          this.allocator = c;
        };
      }(), e = function(a) {
        function b(c, d, e, f, g) {
          a.call(this, c, d, e, f);
          this.region = g;
        }
        __extends(b, a);
        return b;
      }(b.Region);
      b.BucketCell = e;
      m = function() {
        function a(b, c) {
          f(0 < b && 0 < c);
          this._buckets = [];
          this._w = b | 0;
          this._h = c | 0;
          this._filled = 0;
        }
        a.prototype.allocate = function(a, b) {
          a = Math.ceil(a);
          b = Math.ceil(b);
          f(0 < a && 0 < b);
          var d = Math.max(a, b);
          if (a > this._w || b > this._h) {
            return null;
          }
          var k = null, h, m = this._buckets;
          do {
            for (var n = 0;n < m.length && !(m[n].size >= d && (h = m[n], k = h.allocator.allocate(a, b)));n++) {
            }
            if (!k) {
              var q = this._h - this._filled;
              if (q < b) {
                return null;
              }
              var n = g(d, 2), s = 2 * n;
              s > q && (s = q);
              if (s < n) {
                return null;
              }
              q = new t(0, this._filled, this._w, s);
              this._buckets.push(new p(n, q, new c(q.w, q.h, n, n)));
              this._filled += s;
            }
          } while (!k);
          return new e(h.region.x + k.x, h.region.y + k.y, k.w, k.h, k);
        };
        a.prototype.free = function(a) {
          a.region.allocator.free(a.region);
        };
        return a;
      }();
      b.BucketAllocator = m;
    })(k.RegionAllocator || (k.RegionAllocator = {}));
    (function(b) {
      var f = function() {
        function b(a) {
          this._createSurface = a;
          this._surfaces = [];
        }
        Object.defineProperty(b.prototype, "surfaces", {get:function() {
          return this._surfaces;
        }, enumerable:!0, configurable:!0});
        b.prototype._createNewSurface = function(a, b) {
          var d = this._createSurface(a, b);
          this._surfaces.push(d);
          return d;
        };
        b.prototype.addSurface = function(a) {
          this._surfaces.push(a);
        };
        b.prototype.allocate = function(a, b) {
          for (var d = 0;d < this._surfaces.length;d++) {
            var f = this._surfaces[d].allocate(a, b);
            if (f) {
              return f;
            }
          }
          return this._createNewSurface(a, b).allocate(a, b);
        };
        b.prototype.free = function(a) {
        };
        return b;
      }();
      b.SimpleAllocator = f;
    })(k.SurfaceRegionAllocator || (k.SurfaceRegionAllocator = {}));
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = k.Geometry.Point, f = k.Geometry.Matrix, t = b.Debug.assert, s = b.Debug.unexpected;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.Upward = 1] = "Upward";
      a[a.Downward = 2] = "Downward";
    })(k.Direction || (k.Direction = {}));
    (function(a) {
      a[a.Never = 0] = "Never";
      a[a.Always = 1] = "Always";
      a[a.Auto = 2] = "Auto";
    })(k.PixelSnapping || (k.PixelSnapping = {}));
    (function(a) {
      a[a.Never = 0] = "Never";
      a[a.Always = 1] = "Always";
    })(k.Smoothing || (k.Smoothing = {}));
    (function(a) {
      a[a.Empty = 0] = "Empty";
      a[a.Dirty = 1] = "Dirty";
      a[a.IsMask = 2] = "IsMask";
      a[a.IgnoreMask = 8] = "IgnoreMask";
      a[a.IgnoreQuery = 16] = "IgnoreQuery";
      a[a.InvalidBounds = 32] = "InvalidBounds";
      a[a.InvalidConcatenatedMatrix = 64] = "InvalidConcatenatedMatrix";
      a[a.InvalidInvertedConcatenatedMatrix = 128] = "InvalidInvertedConcatenatedMatrix";
      a[a.InvalidConcatenatedColorMatrix = 256] = "InvalidConcatenatedColorMatrix";
      a[a.InvalidPaint = 512] = "InvalidPaint";
      a[a.EnterClip = 4096] = "EnterClip";
      a[a.LeaveClip = 8192] = "LeaveClip";
      a[a.Visible = 16384] = "Visible";
      a[a.Transparent = 32768] = "Transparent";
    })(k.FrameFlags || (k.FrameFlags = {}));
    (function(a) {
      a[a.None = 0] = "None";
      a[a.AllowMatrixWrite = 1] = "AllowMatrixWrite";
      a[a.AllowColorMatrixWrite = 2] = "AllowColorMatrixWrite";
      a[a.AllowBlendModeWrite = 4] = "AllowBlendModeWrite";
      a[a.AllowFiltersWrite = 8] = "AllowFiltersWrite";
      a[a.AllowMaskWrite = 16] = "AllowMaskWrite";
      a[a.AllowChildrenWrite = 32] = "AllowChildrenWrite";
      a[a.AllowClipWrite = 64] = "AllowClipWrite";
      a[a.AllowAllWrite = a.AllowMatrixWrite | a.AllowColorMatrixWrite | a.AllowBlendModeWrite | a.AllowFiltersWrite | a.AllowMaskWrite | a.AllowChildrenWrite | a.AllowClipWrite] = "AllowAllWrite";
    })(k.FrameCapabilityFlags || (k.FrameCapabilityFlags = {}));
    var m = k.FrameCapabilityFlags, d = function() {
      function a() {
        this._id = a._nextID++;
        this._flags = 17376;
        this._capability = m.AllowAllWrite;
        this._parent = null;
        this._clip = -1;
        this._blendMode = 1;
        this._filters = [];
        this._mask = null;
        this._matrix = f.createIdentity();
        this._concatenatedMatrix = f.createIdentity();
        this._invertedConcatenatedMatrix = null;
        this._colorMatrix = k.ColorMatrix.createIdentity();
        this._concatenatedColorMatrix = k.ColorMatrix.createIdentity();
        this._pixelSnapping = this._smoothing = 0;
      }
      a._getAncestors = function(b, d) {
        "undefined" === typeof d && (d = null);
        var f = a._path;
        for (f.length = 0;b && b !== d;) {
          t(b !== b._parent), f.push(b), b = b._parent;
        }
        t(b === d, "Last ancestor is not an ancestor.");
        return f;
      };
      Object.defineProperty(a.prototype, "parent", {get:function() {
        return this._parent;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "id", {get:function() {
        return this._id;
      }, enumerable:!0, configurable:!0});
      a.prototype._setFlags = function(a) {
        this._flags |= a;
      };
      a.prototype._removeFlags = function(a) {
        this._flags &= ~a;
      };
      a.prototype._hasFlags = function(a) {
        return(this._flags & a) === a;
      };
      a.prototype._toggleFlags = function(a, b) {
        this._flags = b ? this._flags | a : this._flags & ~a;
      };
      a.prototype._hasAnyFlags = function(a) {
        return!!(this._flags & a);
      };
      a.prototype._findClosestAncestor = function(a) {
        for (var b = this;b;) {
          if (!1 === b._hasFlags(a)) {
            return b;
          }
          t(b !== b._parent);
          b = b._parent;
        }
        return null;
      };
      a.prototype._isAncestor = function(a) {
        for (;a;) {
          if (a === this) {
            return!0;
          }
          t(a !== a._parent);
          a = a._parent;
        }
        return!1;
      };
      a.prototype.setCapability = function(a, b, d) {
        "undefined" === typeof b && (b = !0);
        "undefined" === typeof d && (d = 0);
        this._capability = b ? this._capability | a : this._capability & ~a;
        if (1 === d && this._parent) {
          this._parent.setCapability(a, b, d);
        } else {
          if (2 === d && this instanceof k.FrameContainer) {
            for (var e = this._children, f = 0;f < e.length;f++) {
              e[f].setCapability(a, b, d);
            }
          }
        }
      };
      a.prototype.removeCapability = function(a) {
        this.setCapability(a, !1);
      };
      a.prototype.hasCapability = function(a) {
        return this._capability & a;
      };
      a.prototype.checkCapability = function(a) {
        this._capability & a || s("Frame doesn't have capability: " + m[a]);
      };
      a.prototype._propagateFlagsUp = function(a) {
        if (!this._hasFlags(a)) {
          this._setFlags(a);
          var b = this._parent;
          b && b._propagateFlagsUp(a);
        }
      };
      a.prototype._propagateFlagsDown = function(a) {
        this._setFlags(a);
      };
      a.prototype._invalidatePosition = function() {
        this._propagateFlagsDown(192);
        this._parent && this._parent._invalidateBounds();
        this._invalidateParentPaint();
      };
      a.prototype.invalidatePaint = function() {
        this._propagateFlagsUp(512);
      };
      a.prototype._invalidateParentPaint = function() {
        this._parent && this._parent._propagateFlagsUp(512);
      };
      a.prototype._invalidateBounds = function() {
        this._propagateFlagsUp(32);
      };
      Object.defineProperty(a.prototype, "properties", {get:function() {
        return this._properties || (this._properties = Object.create(null));
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "x", {get:function() {
        return this._matrix.tx;
      }, set:function(a) {
        this.checkCapability(1);
        this._matrix.tx = a;
        this._invalidatePosition();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "y", {get:function() {
        return this._matrix.ty;
      }, set:function(a) {
        this.checkCapability(1);
        this._matrix.ty = a;
        this._invalidatePosition();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "matrix", {get:function() {
        return this._matrix;
      }, set:function(a) {
        this.checkCapability(1);
        this._matrix.set(a);
        this._invalidatePosition();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "blendMode", {get:function() {
        return this._blendMode;
      }, set:function(a) {
        a |= 0;
        this.checkCapability(4);
        this._blendMode = a;
        this._invalidateParentPaint();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "filters", {get:function() {
        return this._filters;
      }, set:function(a) {
        this.checkCapability(8);
        this._filters = a;
        this._invalidateParentPaint();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "colorMatrix", {get:function() {
        return this._colorMatrix;
      }, set:function(a) {
        this.checkCapability(2);
        this._colorMatrix.set(a);
        this._propagateFlagsDown(256);
        this._invalidateParentPaint();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "mask", {get:function() {
        return this._mask;
      }, set:function(a) {
        this.checkCapability(16);
        this._mask && this._mask !== a && this._mask._removeFlags(2);
        if (this._mask = a) {
          this._mask._setFlags(2), this._mask.invalidate();
        }
        this.invalidate();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "clip", {get:function() {
        return this._clip;
      }, set:function(a) {
        this.checkCapability(64);
        this._clip = a;
      }, enumerable:!0, configurable:!0});
      a.prototype.getBounds = function() {
        t(!1, "Override this.");
        return null;
      };
      a.prototype.gatherPreviousDirtyRegions = function() {
        var a = this.stage;
        a.trackDirtyRegions && this.visit(function(b) {
          if (b instanceof k.FrameContainer) {
            return 0;
          }
          b._previouslyRenderedAABB && a.dirtyRegion.addDirtyRectangle(b._previouslyRenderedAABB);
          return 0;
        });
      };
      a.prototype.getConcatenatedColorMatrix = function() {
        if (!this._parent) {
          return this._colorMatrix;
        }
        if (this._hasFlags(256)) {
          for (var b = this._findClosestAncestor(256), d = a._getAncestors(this, b), f = b ? b._concatenatedColorMatrix.clone() : k.ColorMatrix.createIdentity(), e = d.length - 1;0 <= e;e--) {
            b = d[e], t(b._hasFlags(256)), f.multiply(b._colorMatrix), b._concatenatedColorMatrix.set(f), b._removeFlags(256);
          }
        }
        return this._concatenatedColorMatrix;
      };
      a.prototype.getConcatenatedAlpha = function(a) {
        "undefined" === typeof a && (a = null);
        for (var b = this, d = 1;b && b !== a;) {
          d *= b._colorMatrix.alphaMultiplier, b = b._parent;
        }
        return d;
      };
      Object.defineProperty(a.prototype, "stage", {get:function() {
        for (var a = this;a._parent;) {
          a = a._parent;
        }
        return a instanceof k.Stage ? a : null;
      }, enumerable:!0, configurable:!0});
      a.prototype.getConcatenatedMatrix = function() {
        if (this._hasFlags(64)) {
          for (var b = this._findClosestAncestor(64), d = a._getAncestors(this, b), g = b ? b._concatenatedMatrix.clone() : f.createIdentity(), e = d.length - 1;0 <= e;e--) {
            b = d[e], t(b._hasFlags(64)), g.preMultiply(b._matrix), b._concatenatedMatrix.set(g), b._removeFlags(64);
          }
        }
        return this._concatenatedMatrix;
      };
      a.prototype._getInvertedConcatenatedMatrix = function() {
        this._hasFlags(128) && (this._invertedConcatenatedMatrix || (this._invertedConcatenatedMatrix = f.createIdentity()), this._invertedConcatenatedMatrix.set(this.getConcatenatedMatrix()), this._invertedConcatenatedMatrix.inverse(this._invertedConcatenatedMatrix), this._removeFlags(128));
        return this._invertedConcatenatedMatrix;
      };
      a.prototype.invalidate = function() {
        this._setFlags(1);
      };
      a.prototype.visit = function(a, b, d, e) {
        "undefined" === typeof d && (d = 0);
        "undefined" === typeof e && (e = 0);
        var f, g, m = e & 8;
        f = [this];
        var s, r = !!b;
        r && (s = [b.clone()]);
        for (var h = [d];0 < f.length;) {
          g = f.pop();
          r && (b = s.pop());
          d = h.pop() | g._flags;
          var x = a(g, b, d);
          if (0 === x) {
            if (g instanceof k.FrameContainer) {
              var y = g._children.length;
              if (e & 16 && !k.disableClipping.value) {
                for (var x = g.gatherLeaveClipEvents(), G = y - 1;0 <= G;G--) {
                  if (x && x[G]) {
                    for (;x[G].length;) {
                      if (y = x[G].shift(), f.push(y), h.push(8192), r) {
                        var I = b.clone();
                        I.preMultiply(y.matrix);
                        s.push(I);
                      }
                    }
                  }
                  var C = g._children[G];
                  t(C);
                  f.push(C);
                  r && (I = b.clone(), I.preMultiply(C.matrix), s.push(I));
                  0 <= C.clip ? h.push(d | 4096) : h.push(d);
                }
              } else {
                for (G = 0;G < y;G++) {
                  if (C = g._children[m ? G : y - 1 - G]) {
                    f.push(C), r && (I = b.clone(), I.preMultiply(C.matrix), s.push(I)), h.push(d);
                  }
                }
              }
            }
          } else {
            if (1 === x) {
              break;
            }
          }
        }
      };
      a.prototype.getDepth = function() {
        for (var a = 0, b = this;b._parent;) {
          a++, b = b._parent;
        }
        return a;
      };
      Object.defineProperty(a.prototype, "smoothing", {get:function() {
        return this._smoothing;
      }, set:function(a) {
        this._smoothing = a;
        this.invalidate();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "pixelSnapping", {get:function() {
        return this._pixelSnapping;
      }, set:function(a) {
        this._pixelSnapping = a;
        this.invalidate();
      }, enumerable:!0, configurable:!0});
      a.prototype.queryFramesByPoint = function(a, b, d) {
        "undefined" === typeof b && (b = !1);
        "undefined" === typeof d && (d = !1);
        var e = f.createIdentity(), m = g.createEmpty(), l = [];
        this.visit(function(f, g, r) {
          if (r & 16) {
            return 2;
          }
          g.inverse(e);
          m.set(a);
          e.transformPoint(m);
          if (f.getBounds().containsPoint(m)) {
            if (f instanceof k.FrameContainer) {
              if (d && (l.push(f), !b)) {
                return 1;
              }
            } else {
              if (l.push(f), !b) {
                return 1;
              }
            }
            return 0;
          }
          return 2;
        }, f.createIdentity(), 0);
        l.reverse();
        return l;
      };
      a._path = [];
      a._nextID = 0;
      return a;
    }();
    k.Frame = d;
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = k.Geometry.Rectangle, f = b.Debug.assert, t = function(b) {
      function k() {
        b.call(this);
        this._children = [];
      }
      __extends(k, b);
      k.prototype.addChild = function(b) {
        this.checkCapability(32);
        b && (f(b !== this), b._parent = this, b._invalidatePosition());
        this._children.push(b);
        return b;
      };
      k.prototype.addChildAt = function(b, a) {
        this.checkCapability(32);
        f(0 <= a && a <= this._children.length);
        a === this._children.length ? this._children.push(b) : this._children.splice(a, 0, b);
        b && (f(b !== this), b._parent = this, b._invalidatePosition());
        return b;
      };
      k.prototype.removeChild = function(b) {
        this.checkCapability(32);
        b._parent === this && (b = this._children.indexOf(b), this.removeChildAt(b));
      };
      k.prototype.removeChildAt = function(b) {
        this.checkCapability(32);
        f(0 <= b && b < this._children.length);
        if (b = this._children.splice(b, 1)[0]) {
          b._parent = null, b._invalidatePosition();
        }
      };
      k.prototype.clearChildren = function() {
        this.checkCapability(32);
        for (var b = 0;b < this._children.length;b++) {
          var a = this._children[b];
          a && a._invalidatePosition();
        }
        this._children.length = 0;
      };
      k.prototype._propagateFlagsDown = function(b) {
        if (!this._hasFlags(b)) {
          this._setFlags(b);
          for (var a = this._children, c = 0;c < a.length;c++) {
            a[c]._propagateFlagsDown(b);
          }
        }
      };
      k.prototype.getBounds = function() {
        if (!this._hasFlags(32)) {
          return this._bounds;
        }
        for (var b = g.createEmpty(), a = 0;a < this._children.length;a++) {
          var c = this._children[a], f = c.getBounds().clone();
          c.matrix.transformRectangleAABB(f);
          b.union(f);
        }
        this._bounds = b;
        this._removeFlags(32);
        return b;
      };
      k.prototype.gatherLeaveClipEvents = function() {
        for (var b = this._children.length, a = null, c = 0;c < b;c++) {
          var f = this._children[c];
          if (0 <= f.clip) {
            var g = c + f.clip, a = a || [];
            a[g] || (a[g] = []);
            a[g].push(f);
          }
        }
        return a;
      };
      return k;
    }(k.Frame);
    k.FrameContainer = t;
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = k.Geometry.Rectangle, f = k.Geometry.DirtyRegion, t = b.Debug.assert;
    (function(b) {
      b[b.Normal = 1] = "Normal";
      b[b.Layer = 2] = "Layer";
      b[b.Multiply = 3] = "Multiply";
      b[b.Screen = 4] = "Screen";
      b[b.Lighten = 5] = "Lighten";
      b[b.Darken = 6] = "Darken";
      b[b.Difference = 7] = "Difference";
      b[b.Add = 8] = "Add";
      b[b.Subtract = 9] = "Subtract";
      b[b.Invert = 10] = "Invert";
      b[b.Alpha = 11] = "Alpha";
      b[b.Erase = 12] = "Erase";
      b[b.Overlay = 13] = "Overlay";
      b[b.HardLight = 14] = "HardLight";
    })(k.BlendMode || (k.BlendMode = {}));
    (function(b) {
      b[b.None = 0] = "None";
      b[b.Continue = 0] = "Continue";
      b[b.Stop = 1] = "Stop";
      b[b.Skip = 2] = "Skip";
      b[b.FrontToBack = 8] = "FrontToBack";
      b[b.Clips = 16] = "Clips";
    })(k.VisitorFlags || (k.VisitorFlags = {}));
    k.StageRendererOptions = function() {
      return function() {
        this.debug = !1;
        this.paintRenderable = !0;
        this.paintViewport = this.paintFlashing = this.paintBounds = !1;
      };
    }();
    (function(b) {
      b[b.Canvas2D = 0] = "Canvas2D";
      b[b.WebGL = 1] = "WebGL";
      b[b.Both = 2] = "Both";
      b[b.DOM = 3] = "DOM";
      b[b.SVG = 4] = "SVG";
    })(k.Backend || (k.Backend = {}));
    var s = function() {
      function b(d, a, c) {
        this._canvas = d;
        this._stage = a;
        this._options = c;
        this._viewport = g.createSquare();
      }
      Object.defineProperty(b.prototype, "viewport", {set:function(b) {
        this._viewport.set(b);
      }, enumerable:!0, configurable:!0});
      b.prototype.render = function() {
      };
      b.prototype.resize = function() {
      };
      return b;
    }();
    k.StageRenderer = s;
    s = function(b) {
      function d(a, c, d) {
        "undefined" === typeof d && (d = !1);
        b.call(this);
        this.w = a;
        this.h = c;
        this.dirtyRegion = new f(a, c);
        this.trackDirtyRegions = d;
        this._setFlags(1);
      }
      __extends(d, b);
      d.prototype.readyToRender = function(a) {
        "undefined" === typeof a && (a = !0);
        if (!this._hasFlags(512)) {
          return!1;
        }
        a && (k.enterTimeline("readyToRender"), this.visit(function(a) {
          return a._hasFlags(512) ? (a._toggleFlags(512, !1), 0) : 2;
        }), k.leaveTimeline());
        return!0;
      };
      d.prototype.gatherMarkedDirtyRegions = function(a) {
        var b = this;
        this.visit(function(a, d, e) {
          a._removeFlags(1);
          if (a instanceof k.FrameContainer) {
            return 0;
          }
          e & 1 && (e = a.getBounds().clone(), d.transformRectangleAABB(e), b.dirtyRegion.addDirtyRectangle(e), a._previouslyRenderedAABB && b.dirtyRegion.addDirtyRectangle(a._previouslyRenderedAABB));
          return 0;
        }, a, 0);
      };
      d.prototype.gatherFrames = function() {
        var a = [];
        this.visit(function(b, d) {
          b instanceof k.FrameContainer || a.push(b);
          return 0;
        }, this.matrix);
        return a;
      };
      d.prototype.gatherLayers = function() {
        var a = [], b;
        this.visit(function(d, f) {
          if (d instanceof k.FrameContainer) {
            return 0;
          }
          var e = d.getBounds().clone();
          f.transformRectangleAABB(e);
          d._hasFlags(1) ? (b && a.push(b), a.push(e.clone()), b = null) : b ? b.union(e) : b = e.clone();
          return 0;
        }, this.matrix);
        b && a.push(b);
        return a;
      };
      return d;
    }(k.FrameContainer);
    k.Stage = s;
    s = function(f) {
      function d(a, c) {
        f.call(this);
        this.color = b.Color.None;
        this._bounds = new g(0, 0, a, c);
      }
      __extends(d, f);
      d.prototype.setBounds = function(a) {
        this._bounds.set(a);
      };
      d.prototype.getBounds = function() {
        return this._bounds;
      };
      return d;
    }(k.FrameContainer);
    k.ClipRectangle = s;
    s = function(b) {
      function d(a) {
        b.call(this);
        t(a);
        this._source = a;
      }
      __extends(d, b);
      Object.defineProperty(d.prototype, "source", {get:function() {
        return this._source;
      }, enumerable:!0, configurable:!0});
      d.prototype.getBounds = function() {
        return this.source.getBounds();
      };
      return d;
    }(k.Frame);
    k.Shape = s;
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = k.Geometry.Rectangle, f = k.Geometry.Matrix, t = b.Debug.assertUnreachable, s = b.Debug.assert, m = b.Debug.unexpected, d = b.ArrayUtilities.indexOf;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.Dynamic = 1] = "Dynamic";
      a[a.Dirty = 2] = "Dirty";
      a[a.Scalable = 4] = "Scalable";
      a[a.Tileable = 8] = "Tileable";
      a[a.Loading = 16] = "Loading";
    })(k.RenderableFlags || (k.RenderableFlags = {}));
    var a = function() {
      function a(b) {
        this._flags = 0;
        this.properties = {};
        this._frameReferrers = [];
        this._renderableReferrers = [];
        this._bounds = b.clone();
      }
      a.prototype.setFlags = function(a) {
        this._flags |= a;
      };
      a.prototype.hasFlags = function(a) {
        return(this._flags & a) === a;
      };
      a.prototype.removeFlags = function(a) {
        this._flags &= ~a;
      };
      a.prototype.addFrameReferrer = function(a) {
        d(this._frameReferrers, a);
        this._frameReferrers.push(a);
      };
      a.prototype.addRenderableReferrer = function(a) {
        d(this._renderableReferrers, a);
        this._renderableReferrers.push(a);
      };
      a.prototype.invalidatePaint = function() {
        this.setFlags(2);
        for (var a = this._frameReferrers, b = 0;b < a.length;b++) {
          a[b].invalidatePaint();
        }
        a = this._renderableReferrers;
        for (b = 0;b < a.length;b++) {
          a[b].invalidatePaint();
        }
      };
      a.prototype.getBounds = function() {
        return this._bounds;
      };
      a.prototype.render = function(a, b, c) {
      };
      return a;
    }();
    k.Renderable = a;
    var c = function(a) {
      function b(c, d) {
        a.call(this, c);
        this.render = d;
      }
      __extends(b, a);
      return b;
    }(a);
    k.CustomRenderable = c;
    c = function(a) {
      function b(c, d) {
        a.call(this, d);
        this._flags = 3;
        this._lastCurrentTime = 0;
        this._video = document.createElement("video");
        this._video.src = c;
        this._video.loop = !0;
        this._video.play();
        b._renderableVideos.push(this);
      }
      __extends(b, a);
      b.prototype.invalidatePaintCheck = function() {
        this._lastCurrentTime !== this._video.currentTime && this.invalidatePaint();
        this._lastCurrentTime = this._video.currentTime;
      };
      b.invalidateVideos = function() {
        for (var a = b._renderableVideos, c = 0;c < a.length;c++) {
          a[c].invalidatePaintCheck();
        }
      };
      b.prototype.render = function(a, b) {
        k.enterTimeline("RenderableVideo.render");
        this._video && a.drawImage(this._video, 0, 0);
        k.leaveTimeline("RenderableVideo.render");
      };
      b._renderableVideos = [];
      return b;
    }(a);
    k.RenderableVideo = c;
    c = function(a) {
      function c(b, d) {
        a.call(this, d);
        this._flags = 3;
        this.properties = {};
        this._canvas = b;
        this._context = this._canvas.getContext("2d");
        this._imageData = this._context.createImageData(this._bounds.w, this._bounds.h);
      }
      __extends(c, a);
      c.FromDataBuffer = function(a, b, d) {
        k.enterTimeline("RenderableBitmap.FromDataBuffer");
        var e = document.createElement("canvas");
        e.width = d.w;
        e.height = d.h;
        d = new c(e, d);
        d.updateFromDataBuffer(a, b);
        k.leaveTimeline("RenderableBitmap.FromDataBuffer");
        return d;
      };
      c.FromFrame = function(a, b, d, e, f) {
        k.enterTimeline("RenderableBitmap.FromFrame");
        var g = document.createElement("canvas"), l = a.getBounds();
        g.width = l.w;
        g.height = l.h;
        g = new c(g, l);
        g.drawFrame(a, b, d, e, f);
        k.leaveTimeline("RenderableBitmap.FromFrame");
        return g;
      };
      c.prototype.updateFromDataBuffer = function(a, c) {
        if (k.imageUpdateOption.value) {
          k.enterTimeline("RenderableBitmap.updateFromDataBuffer", {length:c.length});
          if (4 === a || 5 === a || 6 === a) {
            var d = this;
            d.setFlags(16);
            var e = new Image;
            e.src = URL.createObjectURL(c.toBlob());
            e.onload = function() {
              d._context.drawImage(e, 0, 0);
              d.removeFlags(16);
              d.invalidatePaint();
            };
            e.onerror = function() {
              m("Image loading error: " + b.ImageType[a]);
            };
          } else {
            k.imageConvertOption.value && (k.enterTimeline("ColorUtilities.convertImage"), b.ColorUtilities.convertImage(a, 3, new Int32Array(c.buffer), new Int32Array(this._imageData.data.buffer)), k.leaveTimeline("ColorUtilities.convertImage")), k.enterTimeline("putImageData"), this._context.putImageData(this._imageData, 0, 0), k.leaveTimeline("putImageData");
          }
          this.invalidatePaint();
          k.leaveTimeline("RenderableBitmap.updateFromDataBuffer");
        }
      };
      c.prototype.readImageData = function(a) {
        var b = this._context.getImageData(0, 0, this._canvas.width, this._canvas.height).data;
        a.writeRawBytes(b);
      };
      c.prototype.render = function(a, b) {
        k.enterTimeline("RenderableBitmap.render");
        this._canvas ? a.drawImage(this._canvas, 0, 0) : this._renderFallback(a);
        k.leaveTimeline("RenderableBitmap.render");
      };
      c.prototype.drawFrame = function(a, b, c, d, e) {
        k.enterTimeline("RenderableBitmap.drawFrame");
        c = k.Canvas2D;
        d = this.getBounds();
        var f = new c.Canvas2DStageRendererOptions;
        f.cacheShapes = !0;
        (new c.Canvas2DStageRenderer(this._canvas, null, f)).renderFrame(a, e || d, b);
        k.leaveTimeline("RenderableBitmap.drawFrame");
      };
      c.prototype._renderFallback = function(a) {
        this.fillStyle || (this.fillStyle = b.ColorStyle.randomStyle());
        var c = this._bounds;
        a.save();
        a.beginPath();
        a.lineWidth = 2;
        a.fillStyle = this.fillStyle;
        a.fillRect(c.x, c.y, c.w, c.h);
        a.restore();
      };
      return c;
    }(a);
    k.RenderableBitmap = c;
    var n;
    (function(a) {
      a[a.Fill = 0] = "Fill";
      a[a.Stroke = 1] = "Stroke";
      a[a.StrokeFill = 2] = "StrokeFill";
    })(n || (n = {}));
    var p = function() {
      return function(a, b, c, d) {
        this.type = a;
        this.style = b;
        this.smoothImage = c;
        this.strokeProperties = d;
        this.path = new Path2D;
        s(1 === a === !!d);
      };
    }(), e = function() {
      return function(a, b, c, d, e) {
        this.thickness = a;
        this.scaleMode = b;
        this.capsStyle = c;
        this.jointsStyle = d;
        this.miterLimit = e;
      };
    }();
    n = function(a) {
      function c(b, d, e, f) {
        a.call(this, f);
        this._flags = 14;
        this.properties = {};
        this._id = b;
        this._pathData = d;
        this._textures = e;
        e.length && this.setFlags(1);
      }
      __extends(c, a);
      c.prototype.update = function(a, b, c) {
        this._bounds = c;
        this._pathData = a;
        this._paths = null;
        this._textures = b;
      };
      c.prototype.getBounds = function() {
        return this._bounds;
      };
      c.prototype.render = function(a, b, c) {
        "undefined" === typeof c && (c = !1);
        a.fillStyle = a.strokeStyle = "transparent";
        var d = this._textures;
        for (b = 0;b < d.length;b++) {
          if (d[b].hasFlags(16)) {
            return;
          }
        }
        (b = this._pathData) && this._deserializePaths(b, a);
        d = this._paths;
        s(d);
        k.enterTimeline("RenderableShape.render", this);
        for (b = 0;b < d.length;b++) {
          var e = d[b];
          a.mozImageSmoothingEnabled = a.msImageSmoothingEnabled = a.imageSmoothingEnabled = e.smoothImage;
          if (0 === e.type) {
            a.fillStyle = e.style, c ? a.clip(e.path, "evenodd") : a.fill(e.path, "evenodd"), a.fillStyle = "transparent";
          } else {
            if (!c) {
              a.strokeStyle = e.style;
              var f = 1;
              e.strokeProperties && (f = e.strokeProperties.scaleMode, a.lineWidth = e.strokeProperties.thickness, a.lineCap = e.strokeProperties.capsStyle, a.lineJoin = e.strokeProperties.jointsStyle, a.miterLimit = e.strokeProperties.miterLimit);
              var g = a.lineWidth;
              (g = 1 === g || 3 === g) && a.translate(.5, .5);
              a.flashStroke(e.path, f);
              g && a.translate(-.5, -.5);
              a.strokeStyle = "transparent";
            }
          }
        }
        k.leaveTimeline("RenderableShape.render");
      };
      c.prototype._deserializePaths = function(a, d) {
        s(!this._paths);
        k.enterTimeline("RenderableShape.deserializePaths");
        this._paths = [];
        for (var f = null, g = null, l = 0, m = 0, n, p, q = !1, u = 0, F = 0, J = a.commands, A = a.coordinates, B = a.styles, z = B.position = 0, P = a.commandsPosition, D = 0;D < P;D++) {
          switch(n = J[D], n) {
            case 9:
              s(z <= a.coordinatesPosition - 2);
              q && f && (f.lineTo(u, F), g && g.lineTo(u, F));
              q = !0;
              l = u = A[z++] / 20;
              m = F = A[z++] / 20;
              f && f.moveTo(l, m);
              g && g.moveTo(l, m);
              break;
            case 10:
              s(z <= a.coordinatesPosition - 2);
              l = A[z++] / 20;
              m = A[z++] / 20;
              f && f.lineTo(l, m);
              g && g.lineTo(l, m);
              break;
            case 11:
              s(z <= a.coordinatesPosition - 4);
              n = A[z++] / 20;
              p = A[z++] / 20;
              l = A[z++] / 20;
              m = A[z++] / 20;
              f && f.quadraticCurveTo(n, p, l, m);
              g && g.quadraticCurveTo(n, p, l, m);
              break;
            case 12:
              s(z <= a.coordinatesPosition - 6);
              n = A[z++] / 20;
              p = A[z++] / 20;
              var L = A[z++] / 20, M = A[z++] / 20, l = A[z++] / 20, m = A[z++] / 20;
              f && f.bezierCurveTo(n, p, L, M, l, m);
              g && g.bezierCurveTo(n, p, L, M, l, m);
              break;
            case 1:
              s(4 <= B.bytesAvailable);
              f = this._createPath(0, b.ColorUtilities.rgbaToCSSStyle(B.readUnsignedInt()), !1, null, l, m);
              break;
            case 3:
              n = this._readBitmap(B, d);
              f = this._createPath(0, n.style, n.smoothImage, null, l, m);
              break;
            case 2:
              f = this._createPath(0, this._readGradient(B, d), !1, null, l, m);
              break;
            case 4:
              f = null;
              break;
            case 5:
              g = b.ColorUtilities.rgbaToCSSStyle(B.readUnsignedInt());
              B.position += 1;
              n = B.readByte();
              p = c.LINE_CAPS_STYLES[B.readByte()];
              L = c.LINE_JOINTS_STYLES[B.readByte()];
              n = new e(A[z++] / 20, n, p, L, B.readByte());
              g = this._createPath(1, g, !1, n, l, m);
              break;
            case 6:
              g = this._createPath(2, this._readGradient(B, d), !1, null, l, m);
              break;
            case 7:
              n = this._readBitmap(B, d);
              g = this._createPath(2, n.style, n.smoothImage, null, l, m);
              break;
            case 8:
              g = null;
              break;
            default:
              t("Invalid command " + n + " encountered at index" + D + " of " + P);
          }
        }
        s(0 === B.bytesAvailable);
        s(D === P);
        s(z === a.coordinatesPosition);
        q && f && (f.lineTo(u, F), g && g.lineTo(u, F));
        this._pathData = null;
        k.leaveTimeline("RenderableShape.deserializePaths");
      };
      c.prototype._createPath = function(a, b, c, d, e, f) {
        a = new p(a, b, c, d);
        this._paths.push(a);
        a.path.moveTo(e, f);
        return a.path;
      };
      c.prototype._readMatrix = function(a) {
        return new f(a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat());
      };
      c.prototype._readGradient = function(a, c) {
        s(34 <= a.bytesAvailable);
        var d = a.readUnsignedByte(), e = 2 * a.readShort() / 255;
        s(-1 <= e && 1 >= e);
        var f = this._readMatrix(a), d = 16 === d ? c.createLinearGradient(-1, 0, 1, 0) : c.createRadialGradient(e, 0, 0, 0, 0, 1);
        d.setTransform && d.setTransform(f.toSVGMatrix());
        f = a.readUnsignedByte();
        for (e = 0;e < f;e++) {
          var g = a.readUnsignedByte() / 255, k = b.ColorUtilities.rgbaToCSSStyle(a.readUnsignedInt());
          d.addColorStop(g, k);
        }
        a.position += 2;
        return d;
      };
      c.prototype._readBitmap = function(a, b) {
        s(30 <= a.bytesAvailable);
        var c = a.readUnsignedInt(), d = this._readMatrix(a), e = a.readBoolean() ? "repeat" : "no-repeat", f = a.readBoolean(), c = this._textures[c];
        s(c._canvas);
        e = b.createPattern(c._canvas, e);
        e.setTransform(d.toSVGMatrix());
        return{style:e, smoothImage:f};
      };
      c.prototype._renderFallback = function(a) {
        this.fillStyle || (this.fillStyle = b.ColorStyle.randomStyle());
        var c = this._bounds;
        a.save();
        a.beginPath();
        a.lineWidth = 2;
        a.fillStyle = this.fillStyle;
        a.fillRect(c.x, c.y, c.w, c.h);
        a.restore();
      };
      c.LINE_CAPS_STYLES = ["round", "butt", "square"];
      c.LINE_JOINTS_STYLES = ["round", "bevel", "miter"];
      return c;
    }(a);
    k.RenderableShape = n;
    var q = function() {
      function a() {
        this.align = this.leading = this.descent = this.ascent = this.width = this.y = this.x = 0;
        this.runs = [];
      }
      a.prototype.addRun = function(b, c, d, e) {
        if (d) {
          a._measureContext.font = b;
          var f = a._measureContext.measureText(d).width | 0;
          this.runs.push(new l(b, c, d, f, e));
          this.width += f;
        }
      };
      a.prototype.wrap = function(b) {
        var c = [this], d = this.runs, e = this;
        e.width = 0;
        e.runs = [];
        for (var f = a._measureContext, g = 0;g < d.length;g++) {
          var k = d[g], m = k.text;
          k.text = "";
          k.width = 0;
          f.font = k.font;
          for (var n = b, p = m.split(/[\s.-]/), q = 0, s = 0;s < p.length;s++) {
            var t = p[s], A = m.substr(q, t.length + 1), B = f.measureText(A).width | 0;
            if (B > n) {
              do {
                if (e.runs.push(k), e.width += k.width, k = new l(k.font, k.fillStyle, "", 0, k.underline), n = new a, n.y = e.y + e.descent + e.leading + e.ascent | 0, n.ascent = e.ascent, n.descent = e.descent, n.leading = e.leading, n.align = e.align, c.push(n), e = n, n = b - B, 0 > n) {
                  var B = A.length, z, P;
                  do {
                    B--, z = A.substr(0, B), P = f.measureText(z).width | 0;
                  } while (P > b);
                  k.text = z;
                  k.width = P;
                  A = A.substr(B);
                  B = f.measureText(A).width | 0;
                }
              } while (0 > n);
            } else {
              n -= B;
            }
            k.text += A;
            k.width += B;
            q += t.length + 1;
          }
          e.runs.push(k);
          e.width += k.width;
        }
        return c;
      };
      a._measureContext = document.createElement("canvas").getContext("2d");
      return a;
    }();
    k.TextLine = q;
    var l = function() {
      return function(a, b, c, d, e) {
        "undefined" === typeof a && (a = "");
        "undefined" === typeof b && (b = "");
        "undefined" === typeof c && (c = "");
        "undefined" === typeof d && (d = 0);
        "undefined" === typeof e && (e = !1);
        this.font = a;
        this.fillStyle = b;
        this.text = c;
        this.width = d;
        this.underline = e;
      };
    }();
    k.TextRun = l;
    n = function(a) {
      function c(b) {
        a.call(this, b);
        this._flags = 3;
        this.properties = {};
        this._textBounds = b.clone();
        this._textRunData = null;
        this._plainText = "";
        this._borderColor = this._backgroundColor = 0;
        this._matrix = f.createIdentity();
        this._coords = null;
        this.textRect = b.clone();
        this.lines = [];
      }
      __extends(c, a);
      c.prototype.setBounds = function(a) {
        this._bounds.set(a);
        this._textBounds.set(a);
        this.textRect.setElements(a.x + 2, a.y + 2, a.x - 2, a.x - 2);
      };
      c.prototype.setContent = function(a, b, c, d) {
        this._textRunData = b;
        this._plainText = a;
        this._matrix.set(c);
        this._coords = d;
        this.lines = [];
      };
      c.prototype.setStyle = function(a, b) {
        this._backgroundColor = a;
        this._borderColor = b;
      };
      c.prototype.reflow = function(a, c) {
        var d = this._textRunData;
        if (d) {
          var e = this._bounds, f = e.w - 4, g = this._plainText, l = this.lines, m = new q, n = 0, p = 0, s = 0, u = 0, w = 0, t = -1;
          for (k.enterTimeline("RenderableText.reflow");d.position < d.length;) {
            var z = d.readInt(), P = d.readInt(), D = d.readInt(), L = d.readInt(), L = L ? "swffont" + L : d.readUTF(), M = d.readInt(), V = d.readInt(), Q = d.readInt();
            M > s && (s = M);
            V > u && (u = V);
            Q > w && (w = Q);
            M = d.readBoolean();
            V = "";
            d.readBoolean() && (V += "italic");
            M && (V += " bold");
            D = V + " " + D + "px " + L;
            L = d.readInt();
            L = b.ColorUtilities.rgbToHex(L);
            M = d.readInt();
            -1 === t && (t = M);
            d.readBoolean();
            d.readInt();
            d.readInt();
            d.readInt();
            d.readInt();
            d.readInt();
            for (var M = d.readBoolean(), U = "", V = !1;!V;z++) {
              V = z >= P - 1;
              Q = g[z];
              if ("\r" !== Q && "\n" !== Q && (U += Q, z < g.length - 1)) {
                continue;
              }
              m.addRun(D, L, U, M);
              if (m.runs.length) {
                n += s;
                m.y = n | 0;
                n += u + w;
                m.ascent = s;
                m.descent = u;
                m.leading = w;
                m.align = t;
                if (c && m.width > f) {
                  for (m = m.wrap(f), U = 0;U < m.length;U++) {
                    var S = m[U], n = S.y + S.descent + S.leading;
                    l.push(S);
                    S.width > p && (p = S.width);
                  }
                } else {
                  l.push(m), m.width > p && (p = m.width);
                }
                m = new q;
              } else {
                n += s + u + w;
              }
              U = "";
              if (V) {
                w = u = s = 0;
                t = -1;
                break;
              }
              "\r" === Q && "\n" === g[z + 1] && z++;
            }
            m.addRun(D, L, U, M);
          }
          d = this.textRect;
          d.w = p;
          d.h = n;
          if (a) {
            if (!c) {
              f = p;
              p = e.w;
              switch(a) {
                case 1:
                  d.x = p - (f + 4) >> 1;
                  break;
                case 3:
                  d.x = p - (f + 4);
              }
              this._textBounds.setElements(d.x - 2, d.y - 2, d.w + 4, d.h + 4);
            }
            e.h = n + 4;
          } else {
            this._textBounds = e;
          }
          for (z = 0;z < l.length;z++) {
            if (e = l[z], e.width < f) {
              switch(e.align) {
                case 1:
                  e.x = f - e.width | 0;
                  break;
                case 2:
                  e.x = (f - e.width) / 2 | 0;
              }
            }
          }
          this.invalidatePaint();
          k.leaveTimeline("RenderableText.reflow");
        }
      };
      c.prototype.getBounds = function() {
        return this._bounds;
      };
      c.prototype.render = function(a) {
        k.enterTimeline("RenderableText.render");
        a.save();
        var c = this._textBounds;
        this._backgroundColor && (a.fillStyle = b.ColorUtilities.rgbaToCSSStyle(this._backgroundColor), a.fillRect(c.x, c.y, c.w, c.h));
        this._borderColor && (a.strokeStyle = b.ColorUtilities.rgbaToCSSStyle(this._borderColor), a.lineCap = "square", a.lineWidth = 1, a.strokeRect(c.x, c.y, c.w, c.h));
        this._coords ? this._renderChars(a) : this._renderLines(a);
        a.restore();
        k.leaveTimeline("RenderableText.render");
      };
      c.prototype._renderChars = function(a) {
        if (this._matrix) {
          var b = this._matrix;
          a.transform(b.a, b.b, b.c, b.d, b.tx, b.ty);
        }
        for (var b = this.lines, c = this._coords, d = c.position = 0;d < b.length;d++) {
          for (var e = b[d].runs, f = 0;f < e.length;f++) {
            var g = e[f];
            a.font = g.font;
            a.fillStyle = g.fillStyle;
            for (var g = g.text, k = 0;k < g.length;k++) {
              var l = c.readInt() / 20, m = c.readInt() / 20;
              a.fillText(g[k], l, m);
            }
          }
        }
      };
      c.prototype._renderLines = function(a) {
        var b = this._textBounds;
        a.beginPath();
        a.rect(b.x, b.y, b.w, b.h);
        a.clip();
        a.translate(b.x + 2, b.y + 2);
        for (var b = this.lines, c = 0;c < b.length;c++) {
          for (var d = b[c], e = d.x, f = d.y, g = d.runs, k = 0;k < g.length;k++) {
            var l = g[k];
            a.font = l.font;
            a.fillStyle = l.fillStyle;
            l.underline && a.fillRect(e, f + d.descent / 2 | 0, l.width, 1);
            a.fillText(l.text, e, f);
            e += l.width;
          }
        }
      };
      return c;
    }(a);
    k.RenderableText = n;
    n = function(a) {
      function b(c, d) {
        a.call(this, new g(0, 0, c, d));
        this._flags = 5;
        this.properties = {};
      }
      __extends(b, a);
      Object.defineProperty(b.prototype, "text", {get:function() {
        return this._text;
      }, set:function(a) {
        this._text = a;
      }, enumerable:!0, configurable:!0});
      b.prototype.render = function(a, b) {
        a.save();
        a.textBaseline = "top";
        a.fillStyle = "white";
        a.fillText(this.text, 0, 0);
        a.restore();
      };
      return b;
    }(a);
    k.Label = n;
    a = function(a) {
      function c() {
        a.call(this, g.createMaxI16());
        this._flags = 14;
        this.properties = {};
      }
      __extends(c, a);
      c.prototype.render = function(a, c) {
        function d(b) {
          for (var c = Math.ceil((e.x + e.w) / b) * b, f = Math.floor(e.x / b) * b;f < c;f += b) {
            a.moveTo(f + .5, e.y), a.lineTo(f + .5, e.y + e.h);
          }
          c = Math.ceil((e.y + e.h) / b) * b;
          for (f = Math.floor(e.y / b) * b;f < c;f += b) {
            a.moveTo(e.x, f + .5), a.lineTo(e.x + e.w, f + .5);
          }
        }
        a.save();
        var e = c || this.getBounds();
        a.fillStyle = b.ColorStyle.VeryDark;
        a.fillRect(e.x, e.y, e.w, e.h);
        a.beginPath();
        d(100);
        a.lineWidth = 1;
        a.strokeStyle = b.ColorStyle.Dark;
        a.stroke();
        a.beginPath();
        d(500);
        a.lineWidth = 1;
        a.strokeStyle = b.ColorStyle.TabToolbar;
        a.stroke();
        a.beginPath();
        d(1E3);
        a.lineWidth = 3;
        a.strokeStyle = b.ColorStyle.Toolbars;
        a.stroke();
        a.lineWidth = 3;
        a.beginPath();
        a.moveTo(-1048576, .5);
        a.lineTo(1048576, .5);
        a.moveTo(.5, -1048576);
        a.lineTo(.5, 1048576);
        a.strokeStyle = b.ColorStyle.Orange;
        a.stroke();
        a.restore();
      };
      return c;
    }(a);
    k.Grid = a;
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = b.ColorUtilities.clampByte, f = b.Debug.assert, t = function() {
      return function() {
      };
    }();
    k.Filter = t;
    var s = function(b) {
      function d(a, c, d) {
        b.call(this);
        this.blurX = a;
        this.blurY = c;
        this.quality = d;
      }
      __extends(d, b);
      return d;
    }(t);
    k.BlurFilter = s;
    s = function(b) {
      function d(a, c, d, f, e, g, k, s, w, r, h) {
        b.call(this);
        this.alpha = a;
        this.angle = c;
        this.blurX = d;
        this.blurY = f;
        this.color = e;
        this.distance = g;
        this.hideObject = k;
        this.inner = s;
        this.knockout = w;
        this.quality = r;
        this.strength = h;
      }
      __extends(d, b);
      return d;
    }(t);
    k.DropshadowFilter = s;
    t = function(b) {
      function d(a, c, d, f, e, g, k, s) {
        b.call(this);
        this.alpha = a;
        this.blurX = c;
        this.blurY = d;
        this.color = f;
        this.inner = e;
        this.knockout = g;
        this.quality = k;
        this.strength = s;
      }
      __extends(d, b);
      return d;
    }(t);
    k.GlowFilter = t;
    t = function() {
      function b(d) {
        f(20 === d.length);
        this._m = new Float32Array(d);
      }
      b.prototype.clone = function() {
        return new b(this._m);
      };
      b.prototype.set = function(b) {
        this._m.set(b._m);
      };
      b.prototype.toWebGLMatrix = function() {
        return new Float32Array(this._m);
      };
      b.prototype.asWebGLMatrix = function() {
        return this._m.subarray(0, 16);
      };
      b.prototype.asWebGLVector = function() {
        return this._m.subarray(16, 20);
      };
      b.prototype.getColorMatrix = function() {
        var b = new Float32Array(20), a = this._m;
        b[0] = a[0];
        b[1] = a[4];
        b[2] = a[8];
        b[3] = a[12];
        b[4] = 255 * a[16];
        b[5] = a[1];
        b[6] = a[5];
        b[7] = a[9];
        b[8] = a[13];
        b[9] = 255 * a[17];
        b[10] = a[2];
        b[11] = a[6];
        b[12] = a[10];
        b[13] = a[14];
        b[14] = 255 * a[18];
        b[15] = a[3];
        b[16] = a[7];
        b[17] = a[11];
        b[18] = a[15];
        b[19] = 255 * a[19];
        return b;
      };
      b.prototype.getColorTransform = function() {
        var b = new Float32Array(8), a = this._m;
        b[0] = a[0];
        b[1] = a[5];
        b[2] = a[10];
        b[3] = a[15];
        b[4] = 255 * a[16];
        b[5] = 255 * a[17];
        b[6] = 255 * a[18];
        b[7] = 255 * a[19];
        return b;
      };
      b.prototype.isIdentity = function() {
        var b = this._m;
        return 1 == b[0] && 0 == b[1] && 0 == b[2] && 0 == b[3] && 0 == b[4] && 1 == b[5] && 0 == b[6] && 0 == b[7] && 0 == b[8] && 0 == b[9] && 1 == b[10] && 0 == b[11] && 0 == b[12] && 0 == b[13] && 0 == b[14] && 1 == b[15] && 0 == b[16] && 0 == b[17] && 0 == b[18] && 0 == b[19];
      };
      b.createIdentity = function() {
        return new b([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0]);
      };
      b.prototype.setMultipliersAndOffsets = function(b, a, c, f, g, e, k, l) {
        for (var m = this._m, s = 0;s < m.length;s++) {
          m[s] = 0;
        }
        m[0] = b;
        m[5] = a;
        m[10] = c;
        m[15] = f;
        m[16] = g;
        m[17] = e;
        m[18] = k;
        m[19] = l;
      };
      b.prototype.transformRGBA = function(b) {
        var a = b >> 24 & 255, c = b >> 16 & 255, f = b >> 8 & 255, k = b & 255, e = this._m;
        b = g(a * e[0] + c * e[1] + f * e[2] + k * e[3] + e[16]);
        var m = g(a * e[4] + c * e[5] + f * e[6] + k * e[7] + e[17]), l = g(a * e[8] + c * e[9] + f * e[10] + k * e[11] + e[18]), a = g(a * e[12] + c * e[13] + f * e[14] + k * e[15] + e[19]);
        return b << 24 | m << 16 | l << 8 | a;
      };
      b.prototype.multiply = function(b) {
        var a = this._m, c = b._m;
        b = a[0];
        var f = a[1], g = a[2], e = a[3], k = a[4], l = a[5], m = a[6], s = a[7], r = a[8], h = a[9], t = a[10], y = a[11], G = a[12], I = a[13], C = a[14], E = a[15], O = a[16], K = a[17], F = a[18], J = a[19], A = c[0], B = c[1], z = c[2], P = c[3], D = c[4], L = c[5], M = c[6], V = c[7], Q = c[8], U = c[9], S = c[10], aa = c[11], $ = c[12], ea = c[13], Z = c[14], v = c[15], X = c[16], ba = c[17], R = c[18], c = c[19];
        a[0] = b * A + k * B + r * z + G * P;
        a[1] = f * A + l * B + h * z + I * P;
        a[2] = g * A + m * B + t * z + C * P;
        a[3] = e * A + s * B + y * z + E * P;
        a[4] = b * D + k * L + r * M + G * V;
        a[5] = f * D + l * L + h * M + I * V;
        a[6] = g * D + m * L + t * M + C * V;
        a[7] = e * D + s * L + y * M + E * V;
        a[8] = b * Q + k * U + r * S + G * aa;
        a[9] = f * Q + l * U + h * S + I * aa;
        a[10] = g * Q + m * U + t * S + C * aa;
        a[11] = e * Q + s * U + y * S + E * aa;
        a[12] = b * $ + k * ea + r * Z + G * v;
        a[13] = f * $ + l * ea + h * Z + I * v;
        a[14] = g * $ + m * ea + t * Z + C * v;
        a[15] = e * $ + s * ea + y * Z + E * v;
        a[16] = b * X + k * ba + r * R + G * c + O;
        a[17] = f * X + l * ba + h * R + I * c + K;
        a[18] = g * X + m * ba + t * R + C * c + F;
        a[19] = e * X + s * ba + y * R + E * c + J;
      };
      Object.defineProperty(b.prototype, "alphaMultiplier", {get:function() {
        return this._m[15];
      }, enumerable:!0, configurable:!0});
      b.prototype.hasOnlyAlphaMultiplier = function() {
        var b = this._m;
        return 1 == b[0] && 0 == b[1] && 0 == b[2] && 0 == b[3] && 0 == b[4] && 1 == b[5] && 0 == b[6] && 0 == b[7] && 0 == b[8] && 0 == b[9] && 1 == b[10] && 0 == b[11] && 0 == b[12] && 0 == b[13] && 0 == b[14] && 0 == b[16] && 0 == b[17] && 0 == b[18] && 0 == b[19];
      };
      b.prototype.equals = function(b) {
        if (!b) {
          return!1;
        }
        var a = this._m;
        b = b._m;
        for (var c = 0;20 > c;c++) {
          if (.001 < Math.abs(a[c] - b[c])) {
            return!1;
          }
        }
        return!0;
      };
      return b;
    }();
    k.ColorMatrix = t;
  })(b.GFX || (b.GFX = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    k.timelineBuffer = new b.Tools.Profiler.TimelineBuffer("Player");
    k.counter = new b.Metrics.Counter(!0);
    k.writer = null;
    k.enterTimeline = function(b, f) {
      k.writer && k.writer.enter(b);
    };
    k.leaveTimeline = function(b, f) {
      k.writer && k.writer.leave(b);
    };
  })(b.Player || (b.Player = {}));
})(Shumway || (Shumway = {}));
var Shumway$$inline_284 = Shumway || (Shumway = {});
Shumway$$inline_284.playerOptions = Shumway$$inline_284.Settings.shumwayOptions.register(new Shumway$$inline_284.Options.OptionSet("Player Options"));
Shumway$$inline_284.frameEnabledOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Enable Frame Execution", "boolean", !0, "Enable frame execution."));
Shumway$$inline_284.timerEnabledOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Enable Timers", "boolean", !0, "Enable timer events."));
Shumway$$inline_284.pumpEnabledOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Enable Pump", "boolean", !0, "Enable display tree serialization."));
Shumway$$inline_284.pumpRateOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Pump Rate", "number", 80, "Number of times / second that the display list is synchronized.", {range:{min:1, max:120, step:1}}));
Shumway$$inline_284.frameRateOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Frame Rate", "number", -1, "Override a movie's frame rate, set to -1 to use the movies default frame rate.", {range:{min:-1, max:120, step:1}}));
Shumway$$inline_284.tracePlayerOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("tp", "Trace Player", "number", 0, "Trace player every n frames.", {range:{min:0, max:512, step:1}}));
Shumway$$inline_284.traceMouseEventOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("tme", "Trace Mouse Events", "boolean", !1, "Trace mouse events."));
Shumway$$inline_284.frameRateMultiplierOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Frame Rate Multiplier", "number", 1, "Play frames at a faster rate.", {range:{min:1, max:16, step:1}}));
Shumway$$inline_284.dontSkipFramesOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Disables Frame Skipping", "boolean", !1, "Play all frames, e.g. no skipping frame during throttle."));
Shumway$$inline_284.playAllSymbolsOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Play Symbols", "boolean", !1, "Plays all SWF symbols automatically."));
Shumway$$inline_284.playSymbolOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Play Symbol Number", "number", 0, "Select symbol by Id.", {range:{min:0, max:2E4, step:1}}));
Shumway$$inline_284.playSymbolFrameDurationOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Play Symbol Duration", "number", 0, "How many frames to play, 0 for all frames of the movie clip.", {range:{min:0, max:128, step:1}}));
Shumway$$inline_284.playSymbolCountOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Play Symbol Count", "number", -1, "Select symbol count.", {range:{min:0, max:2E4, step:1}}));
Shumway$$inline_284.stageScaleOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("", "Stage Scale", "number", 1, "Scales the symbols.", {range:{min:.1, max:16, step:.01}}));
Shumway$$inline_284.useParsingWorkerOption = Shumway$$inline_284.playerOptions.register(new Shumway$$inline_284.Options.Option("useWorker", "Use Parsing Worker", "boolean", !0, "Determines whether to spawn a DOM worker thread for parsing"));
(function(b) {
  var k = function() {
    function b() {
      this._expectedNextFrameAt = performance.now();
      this._drawStats = [];
      this._drawsSkipped = this._drawStarted = this._drawStatsSum = 0;
      this._expectedNextFrameAt = performance.now();
      this._onTime = !0;
      this._trackDelta = !1;
      this._onTimeDelta = this._delta = 0;
    }
    Object.defineProperty(b.prototype, "shallSkipDraw", {get:function() {
      if (this._drawsSkipped >= b.MAX_DRAWS_TO_SKIP) {
        return!1;
      }
      var f = this._drawStats.length < b.STATS_TO_REMEMBER ? 0 : this._drawStatsSum / this._drawStats.length;
      return performance.now() + f + b.INTERVAL_PADDING_MS > this._expectedNextFrameAt;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(b.prototype, "nextFrameIn", {get:function() {
      return Math.max(0, this._expectedNextFrameAt - performance.now());
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(b.prototype, "isOnTime", {get:function() {
      return this._onTime;
    }, enumerable:!0, configurable:!0});
    b.prototype.startFrame = function(f) {
      var k = f = 1E3 / f, s = this._onTimeDelta + this._delta;
      0 !== s && (0 > s ? k *= b.SPEED_ADJUST_RATE : 0 < s && (k /= b.SPEED_ADJUST_RATE), this._onTimeDelta += f - k);
      this._expectedNextFrameAt += k;
      this._onTime = !0;
    };
    b.prototype.endFrame = function() {
      var f = performance.now() + b.INTERVAL_PADDING_MS;
      f > this._expectedNextFrameAt && (this._trackDelta && (this._onTimeDelta += this._expectedNextFrameAt - f, console.log(this._onTimeDelta)), this._expectedNextFrameAt = f, this._onTime = !1);
    };
    b.prototype.startDraw = function() {
      this._drawsSkipped = 0;
      this._drawStarted = performance.now();
    };
    b.prototype.endDraw = function() {
      var f = performance.now() - this._drawStarted;
      this._drawStats.push(f);
      for (this._drawStatsSum += f;this._drawStats.length > b.STATS_TO_REMEMBER;) {
        this._drawStatsSum -= this._drawStats.shift();
      }
    };
    b.prototype.skipDraw = function() {
      this._drawsSkipped++;
    };
    b.prototype.setDelta = function(b) {
      this._trackDelta && (this._delta = b);
    };
    b.prototype.startTrackDelta = function() {
      this._trackDelta = !0;
    };
    b.prototype.endTrackDelta = function() {
      this._trackDelta && (this._trackDelta = !1, this._onTimeDelta = this._delta = 0);
    };
    b.STATS_TO_REMEMBER = 50;
    b.MAX_DRAWS_TO_SKIP = 2;
    b.INTERVAL_PADDING_MS = 4;
    b.SPEED_ADJUST_RATE = .9;
    return b;
  }();
  b.FrameScheduler = k;
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.AVM2.AS.flash, k = b.AVM2.AS.flash.display, s = b.AVM2.AS.flash.display.BitmapData, m = b.AVM2.AS.flash.display.DisplayObjectFlags, d = b.AVM2.AS.flash.display.BlendMode, a = b.AVM2.AS.flash.display.PixelSnapping, c = b.AVM2.AS.flash.geom.Point, n = b.Bounds, p = b.Debug.assert, e = b.Player.writer, q = function() {
        function c() {
          this.phase = 0;
          this.roots = null;
        }
        c.prototype.begin = function(a) {
          this.roots = [a];
        };
        c.prototype.remoteObjects = function() {
          this.phase = 0;
          for (var a = this.roots, c = 0;c < a.length;c++) {
            b.Player.enterTimeline("remoting objects"), this.writeDisplayObject(a[c]), b.Player.leaveTimeline("remoting objects");
          }
        };
        c.prototype.remoteReferences = function() {
          this.phase = 1;
          for (var a = this.roots, c = 0;c < a.length;c++) {
            b.Player.enterTimeline("remoting references"), this.writeDisplayObject(a[c]), b.Player.leaveTimeline("remoting references");
          }
        };
        c.prototype.writeDisplayObject = function(a) {
          var c = this, d = this.roots;
          a.visit(function(a) {
            c.writeUpdateFrame(a);
            d && a.mask && b.ArrayUtilities.pushUnique(d, a.mask._findFurthestAncestorOrSelf());
            return 0;
          }, 16, m.Dirty);
        };
        c.prototype.writeStage = function(a) {
          e && e.writeLn("Sending Stage");
          this.output.writeInt(104);
          this.output.writeInt(a._id);
          this.output.writeInt(a.color);
          this._writeRectangle(new n(0, 0, 20 * a.stageWidth, 20 * a.stageHeight));
        };
        c.prototype.writeGraphics = function(a) {
          if (a._isDirty) {
            e && e.writeLn("Sending Graphics: " + a._id);
            for (var b = a._textures, c = b.length, d = 0;d < c;d++) {
              this.writeBitmapData(b[d]);
            }
            this.output.writeInt(101);
            this.output.writeInt(a._id);
            this.output.writeInt(-1);
            this._writeRectangle(a._getContentBounds());
            this._writeAsset(a._graphicsData.toPlainObject());
            this.output.writeInt(c);
            for (d = 0;d < c;d++) {
              this.output.writeInt(b[d]._id);
            }
            a._isDirty = !1;
          }
        };
        c.prototype.writeNetStream = function(a) {
          a._isDirty && (e && e.writeLn("Sending NetStream: " + a._id), this.output.writeInt(105), this.output.writeInt(a._id), this.output.writeUTF(a._url), a._isDirty = !1);
        };
        c.prototype.writeBitmapData = function(a) {
          a._isDirty && (e && e.writeLn("Sending BitmapData: " + a._id), this.output.writeInt(102), this.output.writeInt(a._id), this.output.writeInt(a._symbol ? a._symbol.id : -1), this._writeRectangle(a._getContentBounds()), this.output.writeInt(a._type), this._writeAsset(a._dataBuffer.toPlainObject()), a._isDirty = !1);
        };
        c.prototype.writeTextContent = function(a) {
          if (a.flags & b.TextContentFlags.Dirty) {
            e && e.writeLn("Sending TextContent: " + a._id);
            this.output.writeInt(103);
            this.output.writeInt(a._id);
            this.output.writeInt(-1);
            this._writeRectangle(a.bounds);
            this._writeMatrix(a.matrix || f.geom.Matrix.FROZEN_IDENTITY_MATRIX);
            this.output.writeInt(a.backgroundColor);
            this.output.writeInt(a.borderColor);
            this.output.writeInt(a.autoSize);
            this.output.writeBoolean(a.wordWrap);
            this._writeAsset(a.plainText);
            this._writeAsset(a.textRunData.toPlainObject());
            var c = a.coords;
            if (c) {
              var d = c.length;
              this.output.writeInt(d);
              for (var g = 0;g < d;g++) {
                this.output.writeInt(c[g]);
              }
            } else {
              this.output.writeInt(0);
            }
            a.flags &= ~b.TextContentFlags.Dirty;
          }
        };
        c.prototype.writeFont = function(a) {
          if ("embedded" === a.fontType) {
            e && e.writeLn("Sending Font: " + a._id);
            var b = a._symbol;
            p(b);
            this.output.writeInt(200);
            this.output.writeInt(a._id);
            this.output.writeBoolean(b.bold);
            this.output.writeBoolean(b.italic);
            this._writeAsset(b.data);
          }
        };
        c.prototype.writeClip = function(a) {
          if (0 <= a._clipDepth && a._parent) {
            var b = a._parent.getChildIndex(a);
            a = a._parent.getClipDepthIndex(a._clipDepth);
            for (var c = b + 1;c <= b;c++) {
            }
            p(0 <= a - b);
            this.output.writeInt(a - b);
          } else {
            this.output.writeInt(-1);
          }
        };
        c.prototype.writeUpdateFrame = function(b) {
          this.output.writeInt(100);
          this.output.writeInt(b._id);
          e && e.writeLn("Sending UpdateFrame: " + b.debugName());
          var c = !1, g = b._hasFlags(1048576), h = b._hasFlags(67108864), l = b._hasFlags(536870912), n = null;
          f.media.Video.isType(b) && (n = b);
          var p = !1;
          1 === this.phase && (p = b._hasAnyFlags(65011712), c = b._hasFlags(134217728));
          var q = null;
          k.Bitmap.isType(b) && (q = b);
          var s = b._hasFlags(268435456), E;
          E = 0 | (g ? 1 : 0) | (h ? 8 : 0);
          E |= c ? 64 : 0;
          E |= s ? 128 : 0;
          E |= l ? 32 : 0;
          E |= p ? 4 : 0;
          this.output.writeInt(E);
          g && this._writeMatrix(b._getMatrix());
          h && this._writeColorTransform(b._colorTransform);
          c && this.output.writeInt(b.mask ? b.mask._id : -1);
          s && this.writeClip(b);
          l && (this.output.writeInt(d.toNumber(b._blendMode)), this.output.writeBoolean(b._hasFlags(1)), q ? (this.output.writeInt(a.toNumber(q.pixelSnapping)), this.output.writeInt(q.smoothing ? 1 : 0)) : (this.output.writeInt(a.toNumber(a.AUTO)), this.output.writeInt(1)));
          c = b._getGraphics();
          g = b._getTextContent();
          if (p) {
            e && e.enter("Children: {");
            if (q) {
              q.bitmapData ? (this.output.writeInt(1), this.output.writeInt(134217728 | q.bitmapData._id)) : this.output.writeInt(0);
            } else {
              if (n) {
                n._netStream ? (this.output.writeInt(1), this.output.writeInt(134217728 | n._netStream._id)) : this.output.writeInt(0);
              } else {
                if (h = c || g ? 1 : 0, (p = b._children) && (h += p.length), this.output.writeInt(h), c ? (e && e.writeLn("Reference Graphics: " + c._id), this.output.writeInt(134217728 | c._id)) : g && (e && e.writeLn("Reference TextContent: " + g._id), this.output.writeInt(134217728 | g._id)), p) {
                  for (h = 0;h < p.length;h++) {
                    e && e.writeLn("Reference DisplayObject: " + p[h].debugName()), this.output.writeInt(p[h]._id), 0 <= p[h]._clipDepth && p[h]._setFlags(268435456);
                  }
                }
              }
            }
            e && e.leave("}");
          }
          1 === this.phase && b._removeFlags(m.Dirty);
          c ? this.writeGraphics(c) : g ? this.writeTextContent(g) : q ? q.bitmapData && this.writeBitmapData(q.bitmapData) : n && n._netStream && this.writeNetStream(n._netStream);
        };
        c.prototype.writeDrawToBitmap = function(a, b, c, e, f, g, k) {
          "undefined" === typeof c && (c = null);
          "undefined" === typeof e && (e = null);
          "undefined" === typeof f && (f = null);
          "undefined" === typeof g && (g = null);
          "undefined" === typeof k && (k = !1);
          this.output.writeInt(201);
          this.output.writeInt(a._id);
          s.isType(b) ? this.output.writeInt(134217728 | b._id) : this.output.writeInt(b._id);
          a = 0 | (c ? 1 : 0) | (e ? 8 : 0);
          a |= g ? 16 : 0;
          this.output.writeInt(a);
          c && this._writeMatrix(c);
          e && this._writeColorTransform(e);
          g && this._writeRectangle(n.FromRectangle(g));
          this.output.writeInt(d.toNumber(f));
          this.output.writeBoolean(k);
        };
        c.prototype._writeMatrix = function(a) {
          this.output.write6Floats(a.a, a.b, a.c, a.d, a.tx, a.ty);
        };
        c.prototype._writeRectangle = function(a) {
          this.output.write4Ints(a.xMin, a.yMin, a.width, a.height);
        };
        c.prototype._writeAsset = function(a) {
          this.output.writeInt(this.outputAssets.length);
          this.outputAssets.push(a);
        };
        c.prototype._writeColorTransform = function(a) {
          var b = this.output, c = a.redMultiplier, d = a.greenMultiplier, e = a.blueMultiplier, f = a.alphaMultiplier, g = a.redOffset, k = a.greenOffset, l = a.blueOffset;
          a = a.alphaOffset;
          g === k && k === l && l === a && 0 === a && c === d && d === e && 1 === e ? 1 === f ? b.writeInt(0) : (b.writeInt(1), b.writeFloat(f)) : (b.writeInt(2), b.writeFloat(c), b.writeFloat(d), b.writeFloat(e), b.writeFloat(f), b.writeInt(g), b.writeInt(k), b.writeInt(l), b.writeInt(a));
        };
        c.prototype.writeRequestBitmapData = function(a) {
          e && e.writeLn("Sending BitmapData Request");
          this.output.writeInt(106);
          this.output.writeInt(a._id);
        };
        c.prototype.writeDecodeImage = function(a, b, c) {
          e && e.writeLn("Sending DecodeImage");
          this.output.writeInt(107);
          this.output.writeInt(a);
          this.output.writeInt(b);
          this._writeAsset(c);
        };
        return c;
      }();
      g.PlayerChannelSerializer = q;
      q = function() {
        function a() {
        }
        a.prototype._readAsset = function() {
          var a = this.input.readInt(), b = this.inputAssets[a];
          this.inputAssets[a] = null;
          return b;
        };
        a.prototype.read = function() {
          var a = this.input.readInt();
          switch(a) {
            case 300:
              return this._readMouseEvent();
            case 301:
              return this._readKeyboardEvent();
            case 302:
              return this._readFocusEvent();
            case 108:
              return this._readDecodeImageResponse();
          }
          p(!1, "Unknown MessageReader tag: " + a);
        };
        a.prototype._readDecodeImageResponse = function() {
          var a = this.input, b = a.readInt(), c = a.readInt(), d = this._readAsset(), e = a.readInt(), a = a.readInt();
          return{tag:108, promiseId:b, type:c, data:d, width:e, height:a};
        };
        a.prototype._readFocusEvent = function() {
          return{tag:302, type:this.input.readInt()};
        };
        a.prototype._readMouseEvent = function() {
          var a = this.input, d = a.readInt(), d = b.Remoting.MouseEventNames[d], e = a.readFloat(), f = a.readFloat(), g = a.readInt(), a = a.readInt();
          return{tag:300, type:d, point:new c(e, f), ctrlKey:!!(a & 1), altKey:!!(a & 2), shiftKey:!!(a & 4), buttons:g};
        };
        a.prototype._readKeyboardEvent = function() {
          var a = this.input, c = a.readInt(), c = b.Remoting.KeyboardEventNames[c], d = a.readInt(), e = a.readInt(), f = a.readInt(), a = a.readInt();
          return{tag:301, type:c, keyCode:d, charCode:e, location:f, ctrlKey:!!(a & 1), altKey:!!(a & 2), shiftKey:!!(a & 4)};
        };
        return a;
      }();
      g.PlayerChannelDeserializer = q;
    })(k.Player || (k.Player = {}));
  })(b.Remoting || (b.Remoting = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    var g = b.Debug.assert, f = b.AVM2.AS.flash, t = b.ArrayUtilities.DataBuffer, s = b.AVM2.Runtime.AVM2, m = b.AVM2.AS.avm1lib, d = b.AVM2.AS.flash.events.Event, a = b.AVM2.AS.flash.display.DisplayObject, c = b.AVM2.AS.flash.events.EventDispatcher, n = b.AVM2.AS.flash.display.MovieClip, p = b.AVM2.AS.flash.display.Loader, e = b.AVM2.AS.flash.ui.MouseEventDispatcher, q = b.AVM2.AS.flash.ui.KeyboardEventDispatcher, l = function() {
      function l() {
        this._framesPlayed = 0;
        this._pendingPromises = [];
        this.externalCallback = null;
        this._lastPumpTime = 0;
        this._hasFocus = this._isPageVisible = !0;
        this._keyboardEventDispatcher = new q;
        this._mouseEventDispatcher = new e;
        this._writer = new b.IndentingWriter;
        s.instance.globals["Shumway.Player.Utils"] = this;
      }
      l.prototype._getNextAvailablePromiseId = function() {
        for (var a = this._pendingPromises.length, b = 0;b < a;b++) {
          if (!this._pendingPromises[b]) {
            return b;
          }
        }
        return a;
      };
      l.prototype.onSendUpdates = function(a, b, c) {
        throw Error("This method is abstract");
      };
      l.prototype._shouldThrottleDownRendering = function() {
        return!this._isPageVisible;
      };
      l.prototype._shouldThrottleDownFrameExecution = function() {
        return!this._isPageVisible;
      };
      l.prototype.load = function(a, c) {
        g(!this._loader, "Can't load twice.");
        var d = this, e = this._stage = new f.display.Stage, k = this._loader = f.display.Loader.getRootLoader(), l = this._loaderInfo = k.contentLoaderInfo;
        b.playAllSymbolsOption.value ? (this._playAllSymbols(), l._allowCodeExecution = !1) : k._startPromise.then(function() {
          l.actionScriptVersion === f.display.ActionScriptVersion.ACTIONSCRIPT2 ? (m.AVM1Key.asCallPublicProperty("__bind", [e]), m.AVM1Mouse.asCallPublicProperty("__bind", [e]), n.frameNavigationModel = 1) : 10 > l.swfVersion && (n.frameNavigationModel = 2);
          var a = void 0 !== d.defaultStageColor ? d.defaultStageColor : l._colorRGBA, c = k.content;
          e._loaderInfo = l;
          e.frameRate = l.frameRate;
          e.setStageWidth(l.width);
          e.setStageHeight(l.height);
          e.setStageColor(b.ColorUtilities.RGBAToARGB(a));
          e.addTimelineObjectAtDepth(c, 0);
          d._enterLoops();
        });
        if (c) {
          var p = b.Timeline.BinarySymbol.FromData({id:-1, data:c}), q = p.symbolClass.initializeFrom(p);
          p.symbolClass.instanceConstructorNoInitialize.call(q);
          this._loader.loadBytes(q);
        } else {
          this._loader.load(new f.net.URLRequest(a));
        }
      };
      l.prototype.processUpdates = function(a, e) {
        var f = new b.Remoting.Player.PlayerChannelDeserializer;
        f.input = a;
        f.inputAssets = e;
        f = f.read();
        switch(f.tag) {
          case 301:
            var k = this._stage.focus ? this._stage.focus : this._stage;
            this._keyboardEventDispatcher.target = k;
            this._keyboardEventDispatcher.dispatchKeyboardEvent(f);
            break;
          case 300:
            this._mouseEventDispatcher.stage = this._stage;
            k = this._mouseEventDispatcher.handleMouseEvent(f);
            b.traceMouseEventOption.value && this._writer.writeLn("Mouse Event: type: " + f.type + ", target: " + k + ", name: " + k._name);
            break;
          case 302:
            switch(f.type) {
              case 0:
                this._isPageVisible = !1;
                break;
              case 1:
                this._isPageVisible = !0;
                break;
              case 2:
                this._hasFocus = !1;
                break;
              case 3:
                c.broadcastEventDispatchQueue.dispatchEvent(d.getBroadcastInstance(d.ACTIVATE)), this._hasFocus = !0;
            }
            break;
          case 108:
            var k = f.promiseId, l = this._pendingPromises[k];
            g(l, "We should be resolving an unresolved decode image promise at this point.");
            l.resolve(f);
            this._pendingPromises[k] = null;
        }
      };
      l.prototype._enterLoops = function() {
        this._enterEventLoop();
      };
      l.prototype._pumpDisplayListUpdates = function() {
        this.syncDisplayObject(this._stage);
      };
      l.prototype.syncDisplayObject = function(a, c) {
        "undefined" === typeof c && (c = !0);
        var d = new t, e = [], g = new b.Remoting.Player.PlayerChannelSerializer;
        g.output = d;
        g.outputAssets = e;
        f.display.Stage.isType(a) && g.writeStage(a);
        g.begin(a);
        g.remoteObjects();
        g.remoteReferences();
        d.writeInt(0);
        k.enterTimeline("remoting assets");
        d = this.onSendUpdates(d, e, c);
        k.leaveTimeline("remoting assets");
        return d;
      };
      l.prototype.requestBitmapData = function(a) {
        var c = new t, d = [], e = new b.Remoting.Player.PlayerChannelSerializer;
        e.output = c;
        e.outputAssets = d;
        e.writeRequestBitmapData(a);
        c.writeInt(0);
        return this.onSendUpdates(c, d, !1);
      };
      l.prototype.decodeImage = function(a, c) {
        g(5 === a.type || 6 === a.type || 4 === a.type, "No need to decode any other image formats.");
        var d = new t, e = [], f = new b.Remoting.Player.PlayerChannelSerializer;
        f.output = d;
        f.outputAssets = e;
        var k = this._getNextAvailablePromiseId();
        f.writeDecodeImage(k, a.type, a.data);
        d.writeInt(0);
        this.onSendUpdates(d, e);
        (this._pendingPromises[k] = new b.PromiseWrapper).promise.then(function(b) {
          a.data = b.data;
          a.type = b.type;
          a.width = b.width;
          a.height = b.height;
          c(void 0);
        });
      };
      l.prototype.registerFont = function(a) {
        var c = new t, d = [], e = new b.Remoting.Player.PlayerChannelSerializer;
        e.output = c;
        e.outputAssets = d;
        e.writeFont(a);
        this.onSendUpdates(c, d);
      };
      l.prototype.drawToBitmap = function(a, c, d, e, g, l, m) {
        "undefined" === typeof d && (d = null);
        "undefined" === typeof e && (e = null);
        "undefined" === typeof g && (g = null);
        "undefined" === typeof l && (l = null);
        "undefined" === typeof m && (m = !1);
        var n = new t, p = [], q = new b.Remoting.Player.PlayerChannelSerializer;
        q.output = n;
        q.outputAssets = p;
        q.writeBitmapData(a);
        f.display.BitmapData.isType(c) ? q.writeBitmapData(c) : (q.begin(c), q.remoteObjects(), q.remoteReferences());
        q.writeDrawToBitmap(a, c, d, e, g, l, m);
        n.writeInt(0);
        k.enterTimeline("sendUpdates");
        this.onSendUpdates(n, p, !1);
        k.leaveTimeline("sendUpdates");
      };
      l.prototype.executeFSCommand = function(a, b) {
        switch(a) {
          case "quit":
            this._leaveEventLoop();
        }
        this.onFSCommand(a, b);
      };
      l.prototype.requestRendering = function() {
        this._pumpDisplayListUpdates();
      };
      l.prototype._pumpUpdates = function() {
        if (b.dontSkipFramesOption.value || !(this._shouldThrottleDownRendering() || performance.now() - this._lastPumpTime < 1E3 / b.pumpRateOption.value)) {
          k.enterTimeline("pump"), b.pumpEnabledOption.value && (this._pumpDisplayListUpdates(), this._lastPumpTime = performance.now()), k.leaveTimeline("pump");
        }
      };
      l.prototype._leaveSyncLoop = function() {
        g(-1 < this._frameTimeout);
        clearInterval(this._frameTimeout);
      };
      l.prototype._getFrameInterval = function() {
        var a = b.frameRateOption.value;
        0 > a && (a = this._stage.frameRate);
        return Math.floor(1E3 / a);
      };
      l.prototype._enterEventLoop = function() {
        this._eventLoopIsRunning = !0;
        this._eventLoopTick = this._eventLoopTick.bind(this);
        this._eventLoopTick();
      };
      l.prototype._eventLoopTick = function() {
        var c = !b.playAllSymbolsOption.value, d = b.dontSkipFramesOption.value;
        this._frameTimeout = setTimeout(this._eventLoopTick, this._getFrameInterval());
        if (d || !(!b.frameEnabledOption.value && c || this._shouldThrottleDownFrameExecution())) {
          this._stage.scaleX = this._stage.scaleY = b.stageScaleOption.value;
          a._stage = this._stage;
          for (d = 0;d < b.frameRateMultiplierOption.value;d++) {
            k.enterTimeline("eventLoop");
            var e = performance.now();
            a.performFrameNavigation(!0, c);
            k.counter.count("performFrameNavigation", 1, performance.now() - e);
            this._framesPlayed++;
            p.progress();
            0 < b.tracePlayerOption.value && 0 === this._framesPlayed % b.tracePlayerOption.value && this._tracePlayer();
            k.leaveTimeline("eventLoop");
          }
          this._rootInitialized ? this._stage.render() : this._rootInitialized = !0;
          this._pumpUpdates();
          this.onFrameProcessed();
        }
      };
      l.prototype._tracePlayer = function() {
        var a = this._writer;
        a.enter("Frame: " + this._framesPlayed);
        b.AVM2.counter.traceSorted(a);
        b.AVM2.counter.clear();
        b.Player.counter.traceSorted(a);
        b.Player.counter.clear();
        a.writeLn("advancableInstances: " + f.display.DisplayObject._advancableInstances.length);
        a.outdent();
      };
      l.prototype._leaveEventLoop = function() {
        g(this._eventLoopIsRunning);
        clearTimeout(this._frameTimeout);
        this._eventLoopIsRunning = !1;
      };
      l.prototype._playAllSymbols = function() {
        var a = this._stage, c = this._loader, d = this._loaderInfo, e = this;
        d.addEventListener(f.events.ProgressEvent.PROGRESS, function G() {
          c.content && (d.removeEventListener(f.events.ProgressEvent.PROGRESS, G), e._enterLoops());
        });
        d.addEventListener(f.events.Event.COMPLETE, function() {
          function c() {
            var l;
            0 < b.playSymbolOption.value ? (l = d.getSymbolById(b.playSymbolOption.value), l instanceof b.Timeline.DisplaySymbol || (l = null)) : (l = g[k++], k === g.length && (k = 0), 0 <= b.playSymbolCountOption.value && k > b.playSymbolCountOption.value && (k = 0));
            var m = 1;
            if (l && 0 < l.id) {
              var n = l;
              f.display.DisplayObject.reset();
              f.display.MovieClip.reset();
              var p = n.symbolClass.initializeFrom(n);
              n.symbolClass.instanceConstructorNoInitialize.call(p);
              for (n instanceof b.Timeline.BitmapSymbol && (p = new f.display.Bitmap(p));0 < a.numChildren;) {
                a.removeChildAt(0);
              }
              a.addChild(p);
              l instanceof b.Timeline.SpriteSymbol && (m = l.numFrames);
            }
            0 < b.playSymbolFrameDurationOption.value && (m = b.playSymbolFrameDurationOption.value);
            setTimeout(c, e._getFrameInterval() * m);
          }
          a.setStageWidth(1024);
          a.setStageHeight(1024);
          var g = [];
          d._dictionary.forEach(function(a, c) {
            a instanceof b.Timeline.DisplaySymbol && g.push(a);
          });
          var k = 0;
          setTimeout(c, e._getFrameInterval());
        });
      };
      l.prototype.processExternalCallback = function(a) {
        if (this.externalCallback) {
          try {
            a.result = this.externalCallback(a.functionName, a.args);
          } catch (b) {
            a.error = b.message;
          }
        }
      };
      l.prototype.onExternalCommand = function(a) {
        throw Error("This method is abstract");
      };
      l.prototype.onFSCommand = function(a, b) {
        throw Error("This method is abstract");
      };
      l.prototype.onFrameProcessed = function() {
        throw Error("This method is abstract");
      };
      l.prototype.createExternalInterfaceService = function() {
        var a, b = this;
        return{get enabled() {
          if (void 0 === a) {
            var c = {action:"isEnabled"};
            b.onExternalCommand(c);
            a = c.result;
          }
          return a;
        }, initJS:function(a) {
          b.externalCallback = a;
          b.onExternalCommand({action:"initJS"});
        }, registerCallback:function(a) {
          b.onExternalCommand({action:"register", functionName:a, remove:!1});
        }, unregisterCallback:function(a) {
          b.onExternalCommand({action:"register", functionName:a, remove:!0});
        }, eval:function(a) {
          a = {action:"eval", expression:a};
          b.onExternalCommand(a);
          return a.result;
        }, call:function(a) {
          a = {action:"call", request:a};
          b.onExternalCommand(a);
          return a.result;
        }, getId:function() {
          var a = {action:"getId"};
          b.onExternalCommand(a);
          return a.result;
        }};
      };
      return l;
    }();
    k.Player = l;
  })(b.Player || (b.Player = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  var k = b.BinaryFileReader, g = b.AVM2.ABC.AbcFile, f = b.AVM2.Runtime.AVM2, t = b.Debug.assert;
  b.createAVM2 = function(s, m, d, a, c, n) {
    function p(a) {
      (new k(d)).readAll(function(b) {
        e.systemDomain.executeAbc(new g(new Uint8Array(b), d));
        a();
      });
    }
    var e;
    t(s);
    (new k(s)).readAll(function(q) {
      f.initialize(a, c, d ? p : null);
      e = f.instance;
      b.AVM2.AS.linkNatives(e);
      console.time("Execute builtin.abc");
      e.builtinsLoaded = !1;
      e.systemDomain.executeAbc(new g(new Uint8Array(q), "builtin.abc"));
      e.builtinsLoaded = !0;
      console.timeEnd("Execute builtin.abc");
      "string" === typeof m ? (new k(m)).readAll(function(a) {
        e.systemDomain.executeAbc(new g(new Uint8Array(a), m));
        n(e);
      }) : f.isPlayerglobalLoaded() || f.loadPlayerglobal(m.abcs, m.catalog).then(function() {
        n(e);
      });
    });
  };
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(b, k) {
  function g() {
    this.constructor = b;
  }
  for (var f in k) {
    k.hasOwnProperty(f) && (b[f] = k[f]);
  }
  g.prototype = k.prototype;
  b.prototype = new g;
};
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.ArrayUtilities.DataBuffer, k = function(g) {
        function k(b, a) {
          g.call(this);
          this._window = b;
          this._parent = a || b.parent;
          this._window.addEventListener("message", function(a) {
            this.onWindowMessage(a.data, !0);
          }.bind(this));
          this._window.addEventListener("syncmessage", function(a) {
            this.onWindowMessage(a.detail, !1);
          }.bind(this));
        }
        __extends(k, g);
        k.prototype.onSendUpdates = function(b, a, c) {
          "undefined" === typeof c && (c = !0);
          b = b.getBytes();
          a = {type:"player", updates:b, assets:a, result:void 0};
          b = [b.buffer];
          if (!c) {
            return c = this._parent.document.createEvent("CustomEvent"), c.initCustomEvent("syncmessage", !1, !1, a), this._parent.dispatchEvent(c), f.FromPlainObject(a.result);
          }
          this._parent.postMessage(a, "*", b);
          return null;
        };
        k.prototype.onExternalCommand = function(b) {
          var a = this._parent.document.createEvent("CustomEvent");
          a.initCustomEvent("syncmessage", !1, !1, {type:"external", request:b});
          this._parent.dispatchEvent(a);
        };
        k.prototype.onFSCommand = function(b, a) {
          this._parent.postMessage({type:"fscommand", command:b, args:a}, "*");
        };
        k.prototype.onFrameProcessed = function() {
          this._parent.postMessage({type:"frame"}, "*");
        };
        k.prototype.onWindowMessage = function(d, a) {
          if ("object" === typeof d && null !== d) {
            switch(d.type) {
              case "gfx":
                var c = b.ArrayUtilities.DataBuffer.FromArrayBuffer(d.updates.buffer);
                this.processUpdates(c, d.assets);
                break;
              case "externalCallback":
                this.processExternalCallback(d.request);
                break;
              case "options":
                b.Settings.setSettings(d.settings);
                break;
              case "timeline":
                switch(d.request) {
                  case "AVM2":
                    if ("clear" === d.cmd) {
                      b.AVM2.timelineBuffer.reset();
                      break;
                    }
                    this._parent.postMessage({type:"timelineResponse", request:d.request, timeline:b.AVM2.timelineBuffer}, "*");
                    break;
                  case "Player":
                    if ("clear" === d.cmd) {
                      b.Player.timelineBuffer.reset();
                      break;
                    }
                    this._parent.postMessage({type:"timelineResponse", request:d.request, timeline:b.Player.timelineBuffer}, "*");
                    break;
                  case "SWF":
                    if ("clear" === d.cmd) {
                      b.SWF.timelineBuffer.reset();
                      break;
                    }
                    this._parent.postMessage({type:"timelineResponse", request:d.request, timeline:b.SWF.timelineBuffer}, "*");
                }
              ;
            }
          }
        };
        return k;
      }(b.Player.Player);
      g.WindowPlayer = k;
    })(k.Window || (k.Window = {}));
  })(b.Player || (b.Player = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(k) {
    (function(g) {
      var f = b.ArrayUtilities.DataBuffer, k = function(g) {
        function k() {
          g.call(this);
          this._worker = b.Player.Test.FakeSyncWorker.instance;
          this._worker.addEventListener("message", this._onWorkerMessage.bind(this));
          this._worker.addEventListener("syncmessage", this._onSyncWorkerMessage.bind(this));
        }
        __extends(k, g);
        k.prototype.onSendUpdates = function(b, a, c) {
          "undefined" === typeof c && (c = !0);
          b = b.getBytes();
          a = {type:"player", updates:b, assets:a};
          b = [b.buffer];
          if (!c) {
            return c = this._worker.postSyncMessage(a, b), f.FromPlainObject(c);
          }
          this._worker.postMessage(a, b);
          return null;
        };
        k.prototype.onExternalCommand = function(b) {
          this._worker.postSyncMessage({type:"external", command:b});
        };
        k.prototype.onFSCommand = function(b, a) {
          this._worker.postMessage({type:"fscommand", command:b, args:a});
        };
        k.prototype.onFrameProcessed = function() {
          this._worker.postMessage({type:"frame"});
        };
        k.prototype._onWorkerMessage = function(b) {
          var a = b.data;
          if ("object" === typeof a && null !== a) {
            switch(a.type) {
              case "gfx":
                a = f.FromArrayBuffer(b.data.updates.buffer);
                this.processUpdates(a, b.data.assets);
                break;
              case "externalCallback":
                this.processExternalCallback(a.request), b.handled = !0;
            }
          }
        };
        k.prototype._onSyncWorkerMessage = function(b) {
          return this._onWorkerMessage(b);
        };
        return k;
      }(b.Player.Player);
      g.TestPlayer = k;
    })(k.Test || (k.Test = {}));
  })(b.Player || (b.Player = {}));
})(Shumway || (Shumway = {}));
(function(b) {
  (function(b) {
    (function(b) {
      var f = function() {
        function b() {
          this._worker = new Worker(b.WORKER_PATH);
          this._onsyncmessageListeners = [];
        }
        Object.defineProperty(b, "instance", {get:function() {
          b._singelton || (b._singelton = new b);
          return b._singelton;
        }, enumerable:!0, configurable:!0});
        b.prototype.addEventListener = function(b, f, d) {
          "syncmessage" !== b ? this._worker.addEventListener(b, f, d) : this._onsyncmessageListeners.push(f);
        };
        b.prototype.removeEventListener = function(b, f, d) {
          "syncmessage" === b ? (b = this._onsyncmessageListeners.indexOf(f), 0 <= b && this._onsyncmessageListeners.splice(b, 1)) : this._worker.removeEventListener(b, f, d);
        };
        b.prototype.postMessage = function(b, f) {
          this._worker.postMessage(b, f);
        };
        b.prototype.postSyncMessage = function(b, f) {
          var d;
          this._onsyncmessageListeners.some(function(a) {
            var c = {data:b, result:void 0, handled:!1};
            "function" === typeof a ? a(c) : a.handleEvent(c);
            if (!c.handled) {
              return!1;
            }
            d = c.result;
            return!0;
          });
          return d;
        };
        b.WORKER_PATH = "../../src/player/fakechannel.js";
        return b;
      }();
      b.FakeSyncWorker = f;
    })(b.Test || (b.Test = {}));
  })(b.Player || (b.Player = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load Player Dependencies");

