Merge inbound to m-c a=merge
authorWes Kocher <wkocher@mozilla.com>
Thu, 04 Sep 2014 18:30:01 -0700
changeset 226883 db7212847c14f56dc02dd5cab57efc1ce23dca69
parent 226820 4e7e1ce170ab031653d6ee4c96d57765b2e1276e (current diff)
parent 226882 3fe58eba40c1ed9d2d0edcf3f3ed710b6502ea56 (diff)
child 226884 dddbe46f3ceb247018a0ec37fa43525ba3bfdb16
child 226939 b6f79b0ae7c377f9abdb916f9b63905d287054de
child 227012 19a76cb966351e70c200071a4a12a7d3d435c77a
child 227037 9aa7c2b35358a83545f0a2124e980e3ddcc1ed36
push id4187
push userbhearsum@mozilla.com
push dateFri, 28 Nov 2014 15:29:12 +0000
treeherdermozilla-beta@f23cc6a30c11 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone35.0a1
first release with
nightly linux32
db7212847c14 / 35.0a1 / 20140905030206 / files
nightly linux64
db7212847c14 / 35.0a1 / 20140905030206 / files
nightly mac
db7212847c14 / 35.0a1 / 20140905030206 / files
nightly win32
db7212847c14 / 35.0a1 / 20140905030206 / files
nightly win64
db7212847c14 / 35.0a1 / 20140905030206 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge inbound to m-c a=merge
browser/extensions/shumway/content/shumway-worker.js
browser/extensions/shumway/content/shumway.js
browser/extensions/shumway/content/web/avm-sandbox.js
browser/extensions/shumway/content/web/preview.js
browser/extensions/shumway/content/web/simple.html
build/clang-plugin/configure
dom/canvas/ImageEncoder.cpp
dom/canvas/ImageEncoder.h
dom/ipc/TabChild.cpp
--- a/.gitignore
+++ b/.gitignore
@@ -56,8 +56,11 @@ python/psutil/build/
 browser/devtools/chrome.manifest
 toolkit/devtools/chrome.manifest
 
 # Tag files generated by GNU Global
 GTAGS
 GRTAGS
 GSYMS
 GPATH
+
+# Git clone directory for updating web-platform-tests
+testing/web-platform/sync/
--- a/.hgignore
+++ b/.hgignore
@@ -70,8 +70,11 @@
 GTAGS
 GRTAGS
 GSYMS
 GPATH
 
 # Unit tests for Loop
 ^browser/components/loop/standalone/content/config\.js$
 ^browser/components/loop/standalone/node_modules/
+
+# Git clone directory for updating web-platform-tests
+^testing/web-platform/sync/
--- a/Makefile.in
+++ b/Makefile.in
@@ -310,32 +310,9 @@ source-package install:
 
 # Every export rule depends on config/export, but the rule for config/export
 # doesn't exist when building js non-standalone.
 .PHONY: config/export
 config/export:
 
 endif
 
-# Interdependencies for parallel export.
-js/xpconnect/src/export: dom/bindings/export xpcom/xpidl/export
-accessible/xpcom/export: xpcom/xpidl/export
-ifdef ENABLE_CLANG_PLUGIN
-js/src/export config/host: build/clang-plugin/export
-endif
-
-# Interdependencies that moz.build world don't know about yet for compilation.
-# Note some others are hardcoded or "guessed" in recursivemake.py and emitter.py
-ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3)
-toolkit/library/target: widget/gtk/mozgtk/gtk3/target
-endif
-ifdef MOZ_LDAP_XPCOM
-ldap/target: config/external/nss/target mozglue/build/target
-toolkit/library/target: ldap/target
-endif
-ifndef MOZ_FOLD_LIBS
-ifndef MOZ_NATIVE_SQLITE
-config/external/nss/target: db/sqlite3/src/target
-endif
-endif
-ifeq ($(MOZ_REPLACE_MALLOC_LINKAGE),dummy library)
-mozglue/build/target: memory/replace/dummy/target
-endif
+# There used to be build interdependencies here. They are now in config/recurse.mk
--- a/accessible/base/nsAccessiblePivot.cpp
+++ b/accessible/base/nsAccessiblePivot.cpp
@@ -672,16 +672,23 @@ nsAccessiblePivot::AdjustStartPosition(A
       NS_ENSURE_SUCCESS(*aResult, nullptr);
       if (filtered & nsIAccessibleTraversalRule::FILTER_IGNORE_SUBTREE) {
         *aFilterResult = filtered;
         matched = temp;
       }
     }
   }
 
+  if (aAccessible == mPosition && mStartOffset != -1 && mEndOffset != -1) {
+    HyperTextAccessible* text = aAccessible->AsHyperText();
+    if (text) {
+      matched = text->GetChildAtOffset(mStartOffset);
+    }
+  }
+
   return matched;
 }
 
 Accessible*
 nsAccessiblePivot::SearchBackward(Accessible* aAccessible,
                                   nsIAccessibleTraversalRule* aRule,
                                   bool aSearchCurrent,
                                   nsresult* aResult)
--- a/accessible/tests/mochitest/jsat/test_content_text.html
+++ b/accessible/tests/mochitest/jsat/test_content_text.html
@@ -107,26 +107,16 @@
             speak: 'These',
             speak_checkFunc: 'todo_is', // Bug 980509
             android: [{
               eventType: AndroidEvent.VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY,
               fromIndex: 0,
               toIndex: 5
             }]
           }],
-          // XXX: Bug 980510: doing next after text traversal should
-          // bring us to the next paragraph.
-          [ContentMessages.simpleMoveNext, {
-            speak: 'You\'re a good guy, mon frere. ' +
-              'That means brother in French. ' +
-              'I don\'t know how I know that. ' +
-              'I took four years of Spanish.',
-            speak_checkFunc: 'todo_is' // Bug 980510
-          }],
-          // XXX: extra move op here because of bug 980510.
           [ContentMessages.simpleMoveNext, {
             speak: 'You\'re a good guy, mon frere. ' +
               'That means brother in French. ' +
               'I don\'t know how I know that. ' +
               'I took four years of Spanish.',
           }],
           // XXX: Word boundary should be past the apostraphe.
           [ContentMessages.moveNextBy('word'), {
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -29,16 +29,17 @@ builtin(include, build/autoconf/expandli
 builtin(include, build/autoconf/arch.m4)dnl
 builtin(include, build/autoconf/android.m4)dnl
 builtin(include, build/autoconf/zlib.m4)dnl
 builtin(include, build/autoconf/linux.m4)dnl
 builtin(include, build/autoconf/python-virtualenv.m4)dnl
 builtin(include, build/autoconf/winsdk.m4)dnl
 builtin(include, build/autoconf/icu.m4)dnl
 builtin(include, build/autoconf/ffi.m4)dnl
+builtin(include, build/autoconf/clang-plugin.m4)dnl
 
 MOZ_PROG_CHECKMSYS()
 
 # Read the user's .mozconfig script.  We can't do this in
 # configure.in: autoconf puts the argument parsing code above anything
 # expanded from configure.in, and we need to get the configure options
 # from .mozconfig in place before that argument parsing code.
 MOZ_READ_MOZCONFIG(.)
--- a/browser/base/content/test/plugins/browser_CTP_crashreporting.js
+++ b/browser/base/content/test/plugins/browser_CTP_crashreporting.js
@@ -104,19 +104,19 @@ function onSubmitStatus(subj, topic, dat
       return;
 
     let propBag = subj.QueryInterface(Ci.nsIPropertyBag);
     if (data == "success") {
       let remoteID = getPropertyBagValue(propBag, "serverCrashID");
       ok(!!remoteID, "serverCrashID should be set");
 
       // Remove the submitted report file.
-      let file = Services.dirsvc.get("UAppData", Ci.nsILocalFile);
-      file.append("Crash Reports");
-      file.append("submitted");
+      let file = Cc["@mozilla.org/file/local;1"]
+                   .createInstance(Ci.nsILocalFile);
+      file.initWithPath(Services.crashmanager._submittedDumpsDir);
       file.append(remoteID + ".txt");
       ok(file.exists(), "Submitted report file should exist");
       file.remove(false);
     }
 
     let extra = getPropertyBagValue(propBag, "extra");
     ok(extra instanceof Ci.nsIPropertyBag, "Extra data should be property bag");
 
--- a/browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js
+++ b/browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js
@@ -1,12 +1,13 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+Cu.import("resource://gre/modules/CrashSubmit.jsm", this);
 Cu.import("resource://gre/modules/Services.jsm");
 
 const CRASH_URL = "http://example.com/browser/browser/base/content/test/plugins/plugin_crashCommentAndURL.html";
 
 const SERVER_URL = "http://example.com/browser/toolkit/crashreporter/test/browser/crashreport.sjs";
 
 function test() {
   // Crashing the plugin takes up a lot of time, so extend the test timeout.
@@ -80,27 +81,33 @@ function doNextRun() {
     // And now wait for the crash.
   }
   catch (err) {
     failWithException(err);
     finish();
   }
 }
 
-function onCrash() {
+function onCrash(event) {
   try {
     let plugin = gBrowser.contentDocument.getElementById("plugin");
     let elt = gPluginHandler.getPluginUI.bind(gPluginHandler, plugin);
     let style =
       gBrowser.contentWindow.getComputedStyle(elt("pleaseSubmit"));
     is(style.display,
        currentRun.shouldSubmissionUIBeVisible ? "block" : "none",
        "Submission UI visibility should be correct");
     if (!currentRun.shouldSubmissionUIBeVisible) {
-      // Done with this run.
+      // Done with this run. We don't submit the crash, so we will have to
+      // remove the dump manually.
+      let propBag = event.detail.QueryInterface(Ci.nsIPropertyBag2);
+      let crashID = propBag.getPropertyAsAString("pluginDumpID");
+      ok(!!crashID, "pluginDumpID should be set");
+      CrashSubmit.delete(crashID);
+
       doNextRun();
       return;
     }
     elt("submitComment").value = currentRun.comment;
     elt("submitURLOptIn").checked = currentRun.urlOptIn;
     elt("submitButton").click();
     // And now wait for the submission status notification.
   }
@@ -111,18 +118,31 @@ function onCrash() {
 }
 
 function onSubmitStatus(subj, topic, data) {
   try {
     // Wait for success or failed, doesn't matter which.
     if (data != "success" && data != "failed")
       return;
 
-    let extra = getPropertyBagValue(subj.QueryInterface(Ci.nsIPropertyBag),
-                                    "extra");
+    let propBag = subj.QueryInterface(Ci.nsIPropertyBag);
+    if (data == "success") {
+      let remoteID = getPropertyBagValue(propBag, "serverCrashID");
+      ok(!!remoteID, "serverCrashID should be set");
+
+      // Remove the submitted report file.
+      let file = Cc["@mozilla.org/file/local;1"]
+                   .createInstance(Ci.nsILocalFile);
+      file.initWithPath(Services.crashmanager._submittedDumpsDir);
+      file.append(remoteID + ".txt");
+      ok(file.exists(), "Submitted report file should exist");
+      file.remove(false);
+    }
+
+    let extra = getPropertyBagValue(propBag, "extra");
     ok(extra instanceof Ci.nsIPropertyBag, "Extra data should be property bag");
 
     let val = getPropertyBagValue(extra, "PluginUserComment");
     if (currentRun.comment)
       is(val, currentRun.comment,
          "Comment in extra data should match comment in textbox");
     else
       ok(val === undefined,
--- a/browser/extensions/shumway/content/ShumwayStreamConverter.jsm
+++ b/browser/extensions/shumway/content/ShumwayStreamConverter.jsm
@@ -1,10 +1,8 @@
-/* -*- js-indent-level: 2; indent-tabs-mode: nil -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
 /*
  * Copyright 2013 Mozilla Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
@@ -424,23 +422,16 @@ ChromeActions.prototype = {
       return;
     }
     // TODO other security checks?
 
     let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"]
                       .getService(Ci.nsIClipboardHelper);
     clipboard.copyString(data);
   },
-  unsafeSetClipboard: function (data) {
-    if (typeof data !== 'string') {
-      return;
-    }
-    let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
-    clipboard.copyString(data);
-  },
   endActivation: function () {
     if (ActivationQueue.currentNonActive === this) {
       ActivationQueue.activateNext();
     }
   },
   reportTelemetry: function (data) {
     var topic = data.topic;
     switch (topic) {
@@ -547,18 +538,17 @@ RequestListener.prototype.receive = func
   var sync = event.detail.sync;
   var actions = this.actions;
   if (!(action in actions)) {
     log('Unknown action: ' + action);
     return;
   }
   if (sync) {
     var response = actions[action].call(this.actions, data);
-    var detail = event.detail;
-    detail.response = response;
+    event.detail.response = response;
   } else {
     var response;
     if (event.detail.callback) {
       var cookie = event.detail.cookie;
       response = function sendResponse(response) {
         var doc = actions.document;
         try {
           var listener = doc.createEvent('CustomEvent');
@@ -675,45 +665,39 @@ var ActivationQueue = {
       log('Timeout during shumway instance initialization');
       this.activateNext();
     }.bind(this), ACTIVATION_TIMEOUT, Ci.nsITimer.TYPE_ONE_SHOT);
   }
 };
 
 function activateShumwayScripts(window, preview) {
   function loadScripts(scripts, callback) {
-    function scriptLoaded() {
-      leftToLoad--;
-      if (leftToLoad === 0) {
+    function loadScript(i) {
+      if (i >= scripts.length) {
         callback();
+        return;
       }
-    }
-    var leftToLoad = scripts.length;
-    var document = window.document.wrappedJSObject;
-    var head = document.getElementsByTagName('head')[0];
-    for (var i = 0; i < scripts.length; i++) {
       var script = document.createElement('script');
       script.type = "text/javascript";
       script.src = scripts[i];
-      script.onload = scriptLoaded;
+      script.onload = function () {
+        loadScript(i + 1);
+      };
       head.appendChild(script);
     }
+    var document = window.document.wrappedJSObject;
+    var head = document.getElementsByTagName('head')[0];
+    loadScript(0);
   }
 
   function initScripts() {
-    if (preview) {
-      loadScripts(['resource://shumway/web/preview.js'], function () {
-        window.wrappedJSObject.runSniffer();
-      });
-    } else {
-      loadScripts(['resource://shumway/shumway.js',
-                   'resource://shumway/web/avm-sandbox.js'], function () {
-        window.wrappedJSObject.runViewer();
-      });
-    }
+    loadScripts(['resource://shumway/shumway.gfx.js',
+                 'resource://shumway/web/viewer.js'], function () {
+      window.wrappedJSObject.runViewer();
+    });
   }
 
   window.wrappedJSObject.SHUMWAY_ROOT = "resource://shumway/";
 
   if (window.document.readyState === "interactive" ||
       window.document.readyState === "complete") {
     initScripts();
   } else {
--- a/browser/extensions/shumway/content/ShumwayTelemetry.jsm
+++ b/browser/extensions/shumway/content/ShumwayTelemetry.jsm
@@ -1,10 +1,8 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
 /* Copyright 2013 Mozilla Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
index 9295f6df8f4a6c7f69b9e909b5c1fbe4f86e3ea8..79d7cfb004bbef92db888c56630746b2db1bb2aa
GIT binary patch
literal 26644
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
ZV*b_Kzm)qobN{t`LbuS#HJxGe{|9Kdo|OOq
index 56268036afb9df5ebac4520d24f29160ce372db7..32981fe49ce173665c877cd454ab44f2f0ba653a
GIT binary patch
literal 81806
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
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/blurh.frag
@@ -0,0 +1,127 @@
+/*
+precision mediump float;
+
+varying vec4 vColor;
+uniform sampler2D uSampler;
+varying vec2 vCoordinate;
+
+out vec4 FragmentColor;
+
+uniform float offset[5] = float[]( 0.0, 1.0, 2.0, 3.0, 4.0 );
+uniform float weight[5] = float[]( 0.2270270270, 0.1945945946, 0.1216216216,
+                                   0.0540540541, 0.0162162162 );
+
+void main(void)
+{
+    FragmentColor = texture2D( uSampler, vec2(vCoordinate) * weight[0];
+    for (int i=1; i<5; i++) {
+        FragmentColor +=
+            texture2D( uSampler, ( vec2(gl_FragCoord)+vec2(0.0, offset[i]) )/1024.0 )
+                * weight[i];
+        FragmentColor +=
+            texture2D( uSampler, ( vec2(gl_FragCoord)-vec2(0.0, offset[i]) )/1024.0 )
+                * weight[i];
+    }
+}
+*/
+
+/*
+precision mediump float;
+
+varying vec4 vColor;
+uniform sampler2D uSampler;
+varying vec2 vCoordinate;
+
+void main() {
+  const int sampleRadius = 16;
+  const int samples = sampleRadius * 2 + 1;
+  float dy = 1.0 / 512.0;
+  vec4 sample = vec4(0, 0, 0, 0);
+  for (int i = -sampleRadius; i <= sampleRadius; i++) {
+    sample += texture2D(uSampler, vCoordinate + vec2(0, float(i) * dy));
+  }
+  gl_FragColor = sample / float(samples);
+  // gl_FragColor = texture2D(uSampler, vCoordinate);
+}
+*/
+
+precision mediump float;
+
+varying vec4 vColor;
+uniform sampler2D uSampler;
+varying vec2 vCoordinate;
+
+void main() {
+  vec4 sum = vec4(0.0);
+  float blur = 1.0 / 512.0 * 1.0;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - 4.0 * blur, vCoordinate.y)) * 0.05;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - 3.0 * blur, vCoordinate.y)) * 0.09;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - 2.0 * blur, vCoordinate.y)) * 0.12;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - blur, vCoordinate.y)) * 0.15;
+  sum += texture2D(uSampler, vec2(vCoordinate.x, vCoordinate.y)) * 0.16;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + blur, vCoordinate.y)) * 0.15;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + 2.0 * blur, vCoordinate.y)) * 0.12;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + 3.0 * blur, vCoordinate.y)) * 0.09;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + 4.0 * blur, vCoordinate.y)) * 0.05;
+  gl_FragColor = sum;
+  // gl_FragColor = texture2D(uSampler, vCoordinate);
+}
+
+/*
+precision mediump float;
+
+varying vec4 vColor;
+uniform sampler2D uSampler;
+varying vec2 vCoordinate;
+
+void main() {
+  vec4 sum = vec4(0.0);
+  float blur = 0.1;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - 4.0 * blur, vCoordinate.y)) * 0.05;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - 3.0 * blur, vCoordinate.y)) * 0.09;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - 2.0 * blur, vCoordinate.y)) * 0.12;
+  sum += texture2D(uSampler, vec2(vCoordinate.x - blur, vCoordinate.y)) * 0.15;
+  sum += texture2D(uSampler, vec2(vCoordinate.x, vCoordinate.y)) * 0.16;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + blur, vCoordinate.y)) * 0.15;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + 2.0 * blur, vCoordinate.y)) * 0.12;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + 3.0 * blur, vCoordinate.y)) * 0.09;
+  sum += texture2D(uSampler, vec2(vCoordinate.x + 4.0 * blur, vCoordinate.y)) * 0.05;
+  gl_FragColor = sum;
+  // gl_FragColor = texture2D(uSampler, vCoordinate);
+}
+*/
+
+/*
+precision mediump float;
+
+varying vec4 vColor;
+uniform sampler2D uSampler;
+varying vec2 vCoordinate;
+
+void main() {
+  gl_FragColor = texture2D(uSampler, vCoordinate);
+}
+
+*/
+
+/*
+precision mediump float;
+varying vec2 vCoordinate;
+varying float vColor;
+uniform float blur;
+uniform sampler2D uSampler;
+void main(void) {
+vec4 sum = vec4(0.0);
+sum += texture2D(uSampler, vec2(vCoordinate.x - 4.0*blur, vCoordinate.y)) * 0.05;
+sum += texture2D(uSampler, vec2(vCoordinate.x - 3.0*blur, vCoordinate.y)) * 0.09;
+sum += texture2D(uSampler, vec2(vCoordinate.x - 2.0*blur, vCoordinate.y)) * 0.12;
+sum += texture2D(uSampler, vec2(vCoordinate.x - blur, vCoordinate.y)) * 0.15;
+sum += texture2D(uSampler, vec2(vCoordinate.x, vCoordinate.y)) * 0.16;
+sum += texture2D(uSampler, vec2(vCoordinate.x + blur, vCoordinate.y)) * 0.15;
+sum += texture2D(uSampler, vec2(vCoordinate.x + 2.0*blur, vCoordinate.y)) * 0.12;
+sum += texture2D(uSampler, vec2(vCoordinate.x + 3.0*blur, vCoordinate.y)) * 0.09;
+sum += texture2D(uSampler, vec2(vCoordinate.x + 4.0*blur, vCoordinate.y)) * 0.05;
+gl_FragColor = sum;
+}
+
+*/
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/blurv.frag
@@ -0,0 +1,16 @@
+precision mediump float;
+
+varying vec4 vColor;
+uniform sampler2D uSampler;
+varying vec2 vCoordinate;
+
+void main() {
+  const int sampleRadius = 8;
+  const int samples = sampleRadius * 2 + 1;
+  float dx = 0.01;
+  vec4 sample = vec4(0, 0, 0, 0);
+  for (int i = -sampleRadius; i <= sampleRadius; i++) {
+    sample += texture2D(uSampler, vCoordinate + vec2(0, float(i) * dy));
+  }
+  gl_FragColor = sample / float(samples);
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/canvas.vert
@@ -0,0 +1,19 @@
+uniform vec2 uResolution;
+uniform mat3 uTransformMatrix;
+uniform float uZ;
+
+attribute vec2 aPosition;
+attribute vec4 aColor;
+attribute vec2 aCoordinate;
+
+varying vec4 vColor;
+varying vec2 vCoordinate;
+
+void main() {
+  vec2 position = ((uTransformMatrix * vec3(aPosition, 1.0)).xy / uResolution) * 2.0 - 1.0;
+  position *= vec2(1.0, -1.0);
+  // position *= vec2(40.0, -4.0);
+  gl_Position = vec4(vec3(position, uZ), 1.0);
+  vColor = aColor;
+  vCoordinate = aCoordinate;
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/combined.frag
@@ -0,0 +1,46 @@
+precision mediump float;
+
+varying vec4 vColor;
+uniform mat4 uColorMatrix;
+uniform vec4 uColorVector;
+uniform sampler2D uSampler[8];
+varying vec2 vCoordinate;
+varying float vKind;
+varying float vSampler;
+
+void main() {
+  vec4 color;
+  int kind = int(floor(vKind + 0.5));
+  if (kind == 0) {
+    color = vColor;
+  } else if (kind == 1 || kind == 2) {
+    int sampler = int(floor(vSampler + 0.5));
+    if (sampler == 0) {
+      color = vColor * texture2D(uSampler[0], vCoordinate);
+    } else if (sampler == 1) {
+      color = vColor * texture2D(uSampler[1], vCoordinate);
+    } else if (sampler == 2) {
+      color = vColor * texture2D(uSampler[2], vCoordinate);
+    } else if (sampler == 3) {
+      color = vColor * texture2D(uSampler[3], vCoordinate);
+    } else if (sampler == 4) {
+      color = vColor * texture2D(uSampler[4], vCoordinate);
+    } else if (sampler == 5) {
+      color = vColor * texture2D(uSampler[5], vCoordinate);
+    } else if (sampler == 6) {
+      color = vColor * texture2D(uSampler[6], vCoordinate);
+    } else if (sampler == 7) {
+      color = vColor * texture2D(uSampler[7], vCoordinate);
+    }
+    if (kind == 2) {
+      color = color * uColorMatrix + uColorVector;
+    }
+  } else {
+    color = vec4(1.0, 0.0, 0.0, 1.0);
+  }
+  // color.rgb *= color.a;
+  if (color.a < 0.01) {
+    discard;
+  }
+  gl_FragColor = color;
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/combined.vert
@@ -0,0 +1,22 @@
+uniform vec2 uResolution;
+uniform mat3 uTransformMatrix;
+uniform mat4 uTransformMatrix3D;
+
+attribute vec4 aPosition;
+attribute vec4 aColor;
+attribute vec2 aCoordinate;
+attribute float aKind;
+attribute float aSampler;
+
+varying vec4 vColor;
+varying vec2 vCoordinate;
+varying float vKind;
+varying float vSampler;
+
+void main() {
+  gl_Position = uTransformMatrix3D * aPosition;
+  vColor = aColor;
+  vCoordinate = aCoordinate;
+  vKind = aKind;
+  vSampler = aSampler;
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/curve.frag
@@ -0,0 +1,18 @@
+precision mediump float;
+
+uniform vec4 uColor;
+varying vec2 vTextureCoordinate;
+
+void main() {
+  gl_FragColor = uColor;
+  gl_FragColor = vec4(vTextureCoordinate.x, vTextureCoordinate.y, 0, 0.5);
+
+  float u = vTextureCoordinate.x;
+  float v = vTextureCoordinate.y;
+  float r = u * u - v;
+  if (r < 0.0) {
+    gl_FragColor = vec4(1, 0, 0, 1);
+  } else {
+    gl_FragColor = vec4(1, 0, 0, 0.2);
+  }
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/solid-fill.frag
@@ -0,0 +1,7 @@
+precision mediump float;
+
+varying vec4 vColor;
+
+void main() {
+  gl_FragColor = vColor;
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/solid-fill.vert
@@ -0,0 +1,15 @@
+uniform vec2 uResolution;
+uniform mat3 uTransformMatrix;
+uniform float uZ;
+
+attribute vec2 aPosition;
+attribute vec4 aColor;
+
+varying vec4 vColor;
+
+void main() {
+  vec2 position = ((uTransformMatrix * vec3(aPosition, 1.0)).xy / uResolution) * 2.0 - 1.0;
+  position *= vec2(1.0, -1.0);
+  gl_Position = vec4(vec3(position, uZ), 1.0);
+  vColor = aColor;
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/texture-fill.frag
@@ -0,0 +1,12 @@
+precision mediump float;
+
+varying vec4 vColor;
+uniform sampler2D uSampler;
+varying vec2 vCoordinate;
+
+void main() {
+  // gl_FragColor = vColor;
+  // gl_FragColor = vec4(vTextureCoordinate.x, vTextureCoordinate.y, 0, 0.5);
+  // gl_FragColor = gl_FragColor; // + texture2D(uSampler, vCoordinate);
+  gl_FragColor = texture2D(uSampler, vCoordinate);
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/shumway/content/gfx/gl/shaders/texture-fill.vert
@@ -0,0 +1,19 @@
+uniform vec2 uResolution;
+uniform mat3 uTransformMatrix;
+uniform float uZ;
+
+attribute vec2 aPosition;
+attribute vec4 aColor;
+attribute vec2 aCoordinate;
+
+varying vec4 vColor;
+varying vec2 vCoordinate;
+
+void main() {
+  vec2 position = ((uTransformMatrix * vec3(aPosition, 1.0)).xy / uResolution) * 2.0 - 1.0;
+  position *= vec2(1.0, -1.0);
+  // position *= vec2(40.0, -4.0);
+  gl_Position = vec4(vec3(position, uZ), 1.0);
+  vColor = aColor;
+  vCoordinate = aCoordinate;
+}
\ No newline at end of file
index 3f6f9591dc46a261ec3fd19930dc496f3dbbcca3..329ac5bba16fd42cbbc4177ce22961efa4c80a28
GIT binary patch
literal 203531
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
--- a/browser/extensions/shumway/content/playerglobal/playerglobal.json
+++ b/browser/extensions/shumway/content/playerglobal/playerglobal.json
@@ -104,2738 +104,2738 @@
     "length": 356
   },
   {
     "name": "flash/display/Bitmap",
     "defs": [
       "flash.display:Bitmap"
     ],
     "offset": 4951,
-    "length": 431
+    "length": 390
   },
   {
     "name": "flash/display/BitmapData",
     "defs": [
       "flash.display:BitmapData"
     ],
-    "offset": 5382,
-    "length": 1515
+    "offset": 5341,
+    "length": 1471
   },
   {
     "name": "flash/display/BitmapDataChannel",
     "defs": [
       "flash.display:BitmapDataChannel"
     ],
-    "offset": 6897,
+    "offset": 6812,
     "length": 274
   },
   {
     "name": "flash/display/BitmapEncodingColorSpace",
     "defs": [
       "flash.display:BitmapEncodingColorSpace"
     ],
-    "offset": 7171,
+    "offset": 7086,
     "length": 355
   },
   {
     "name": "flash/display/BlendMode",
     "defs": [
       "flash.display:BlendMode"
     ],
-    "offset": 7526,
+    "offset": 7441,
     "length": 624
   },
   {
     "name": "flash/display/CapsStyle",
     "defs": [
       "flash.display:CapsStyle"
     ],
-    "offset": 8150,
+    "offset": 8065,
     "length": 256
   },
   {
     "name": "flash/display/ColorCorrection",
     "defs": [
       "flash.display:ColorCorrection"
     ],
-    "offset": 8406,
+    "offset": 8321,
     "length": 262
   },
   {
     "name": "flash/display/ColorCorrectionSupport",
     "defs": [
       "flash.display:ColorCorrectionSupport"
     ],
-    "offset": 8668,
+    "offset": 8583,
     "length": 314
   },
   {
     "name": "flash/display/DisplayObject",
     "defs": [
       "flash.display:DisplayObject"
     ],
-    "offset": 8982,
-    "length": 1581
+    "offset": 8897,
+    "length": 1500
   },
   {
     "name": "flash/display/DisplayObjectContainer",
     "defs": [
       "flash.display:DisplayObjectContainer"
     ],
-    "offset": 10563,
-    "length": 912
+    "offset": 10397,
+    "length": 898
   },
   {
     "name": "flash/display/FocusDirection",
     "defs": [
       "flash.display:FocusDirection"
     ],
-    "offset": 11475,
+    "offset": 11295,
     "length": 262
   },
   {
     "name": "flash/display/FrameLabel",
     "defs": [
       "flash.display:FrameLabel"
     ],
-    "offset": 11737,
-    "length": 325
+    "offset": 11557,
+    "length": 278
   },
   {
     "name": "flash/display/Graphics",
     "defs": [
       "flash.display:Graphics"
     ],
-    "offset": 12062,
-    "length": 1042
+    "offset": 11835,
+    "length": 1028
   },
   {
     "name": "flash/display/GradientType",
     "defs": [
       "flash.display:GradientType"
     ],
-    "offset": 13104,
+    "offset": 12863,
     "length": 239
   },
   {
     "name": "flash/display/GraphicsBitmapFill",
     "defs": [
       "flash.display:GraphicsBitmapFill"
     ],
-    "offset": 13343,
+    "offset": 13102,
     "length": 346
   },
   {
     "name": "flash/display/GraphicsEndFill",
     "defs": [
       "flash.display:GraphicsEndFill"
     ],
-    "offset": 13689,
+    "offset": 13448,
     "length": 215
   },
   {
     "name": "flash/display/GraphicsGradientFill",
     "defs": [
       "flash.display:GraphicsGradientFill"
     ],
-    "offset": 13904,
+    "offset": 13663,
     "length": 697
   },
   {
     "name": "flash/display/GraphicsPath",
     "defs": [
       "flash.display:GraphicsPath"
     ],
-    "offset": 14601,
+    "offset": 14360,
     "length": 1258
   },
   {
     "name": "flash/display/GraphicsPathCommand",
     "defs": [
       "flash.display:GraphicsPathCommand"
     ],
-    "offset": 15859,
+    "offset": 15618,
     "length": 368
   },
   {
     "name": "flash/display/GraphicsPathWinding",
     "defs": [
       "flash.display:GraphicsPathWinding"
     ],
-    "offset": 16227,
+    "offset": 15986,
     "length": 259
   },
   {
     "name": "flash/display/GraphicsShaderFill",
     "defs": [
       "flash.display:GraphicsShaderFill"
     ],
-    "offset": 16486,
+    "offset": 16245,
     "length": 299
   },
   {
     "name": "flash/display/GraphicsSolidFill",
     "defs": [
       "flash.display:GraphicsSolidFill"
     ],
-    "offset": 16785,
+    "offset": 16544,
     "length": 283
   },
   {
     "name": "flash/display/GraphicsStroke",
     "defs": [
       "flash.display:GraphicsStroke"
     ],
-    "offset": 17068,
+    "offset": 16827,
     "length": 1542
   },
   {
     "name": "flash/display/GraphicsTrianglePath",
     "defs": [
       "flash.display:GraphicsTrianglePath"
     ],
-    "offset": 18610,
+    "offset": 18369,
     "length": 680
   },
   {
     "name": "flash/display/IBitmapDrawable",
     "defs": [
       "flash.display:IBitmapDrawable"
     ],
-    "offset": 19290,
+    "offset": 19049,
     "length": 105
   },
   {
     "name": "flash/display/IDrawCommand",
     "defs": [
       "flash.display:IDrawCommand"
     ],
-    "offset": 19395,
+    "offset": 19154,
     "length": 102
   },
   {
     "name": "flash/display/IGraphicsData",
     "defs": [
       "flash.display:IGraphicsData"
     ],
-    "offset": 19497,
+    "offset": 19256,
     "length": 103
   },
   {
     "name": "flash/display/IGraphicsFill",
     "defs": [
       "flash.display:IGraphicsFill"
     ],
-    "offset": 19600,
+    "offset": 19359,
     "length": 103
   },
   {
     "name": "flash/display/IGraphicsPath",
     "defs": [
       "flash.display:IGraphicsPath"
     ],
-    "offset": 19703,
+    "offset": 19462,
     "length": 103
   },
   {
     "name": "flash/display/IGraphicsStroke",
     "defs": [
       "flash.display:IGraphicsStroke"
     ],
-    "offset": 19806,
+    "offset": 19565,
     "length": 105
   },
   {
     "name": "flash/display/InteractiveObject",
     "defs": [
       "flash.display:InteractiveObject"
     ],
-    "offset": 19911,
-    "length": 778
+    "offset": 19670,
+    "length": 764
   },
   {
     "name": "flash/display/InterpolationMethod",
     "defs": [
       "flash.display:InterpolationMethod"
     ],
-    "offset": 20689,
+    "offset": 20434,
     "length": 254
   },
   {
     "name": "flash/display/JointStyle",
     "defs": [
       "flash.display:JointStyle"
     ],
-    "offset": 20943,
+    "offset": 20688,
     "length": 258
   },
   {
     "name": "flash/display/JPEGEncoderOptions",
     "defs": [
       "flash.display:JPEGEncoderOptions"
     ],
-    "offset": 21201,
+    "offset": 20946,
     "length": 216
   },
   {
     "name": "flash/display/JPEGXREncoderOptions",
     "defs": [
       "flash.display:JPEGXREncoderOptions"
     ],
-    "offset": 21417,
+    "offset": 21162,
     "length": 295
   },
   {
     "name": "flash/display/LineScaleMode",
     "defs": [
       "flash.display:LineScaleMode"
     ],
-    "offset": 21712,
+    "offset": 21457,
     "length": 307
   },
   {
     "name": "flash/display/Loader",
     "defs": [
       "flash.display:Loader"
     ],
-    "offset": 22019,
-    "length": 1973
+    "offset": 21764,
+    "length": 1320
   },
   {
     "name": "flash/display/LoaderInfo",
     "defs": [
       "flash.display:LoaderInfo"
     ],
-    "offset": 23992,
-    "length": 1276
+    "offset": 23084,
+    "length": 1227
   },
   {
     "name": "flash/display/MorphShape",
     "defs": [
       "flash.display:MorphShape"
     ],
-    "offset": 25268,
-    "length": 230
+    "offset": 24311,
+    "length": 263
   },
   {
     "name": "flash/display/MovieClip",
     "defs": [
       "flash.display:MovieClip"
     ],
-    "offset": 25498,
-    "length": 885
+    "offset": 24574,
+    "length": 871
   },
   {
     "name": "flash/display/NativeMenu",
     "defs": [
       "flash.display:NativeMenu"
     ],
-    "offset": 26383,
+    "offset": 25445,
     "length": 207
   },
   {
     "name": "flash/display/NativeMenuItem",
     "defs": [
       "flash.display:NativeMenuItem"
     ],
-    "offset": 26590,
-    "length": 293
+    "offset": 25652,
+    "length": 279
   },
   {
     "name": "flash/display/PixelSnapping",
     "defs": [
       "flash.display:PixelSnapping"
     ],
-    "offset": 26883,
+    "offset": 25931,
     "length": 264
   },
   {
     "name": "flash/display/PNGEncoderOptions",
     "defs": [
       "flash.display:PNGEncoderOptions"
     ],
-    "offset": 27147,
+    "offset": 26195,
     "length": 224
   },
   {
     "name": "flash/display/Scene",
     "defs": [
       "flash.display:Scene"
     ],
-    "offset": 27371,
-    "length": 344
+    "offset": 26419,
+    "length": 255
   },
   {
     "name": "flash/display/Shader",
     "defs": [
       "flash.display:Shader"
     ],
-    "offset": 27715,
+    "offset": 26674,
     "length": 368
   },
   {
     "name": "flash/display/ShaderData",
     "defs": [
       "flash.display:ShaderData"
     ],
-    "offset": 28083,
+    "offset": 27042,
     "length": 195
   },
   {
     "name": "flash/display/ShaderInput",
     "defs": [
       "flash.display:ShaderInput"
     ],
-    "offset": 28278,
+    "offset": 27237,
     "length": 334
   },
   {
     "name": "flash/display/ShaderJob",
     "defs": [
       "flash.display:ShaderJob"
     ],
-    "offset": 28612,
+    "offset": 27571,
     "length": 492
   },
   {
     "name": "flash/display/ShaderParameter",
     "defs": [
       "flash.display:ShaderParameter"
     ],
-    "offset": 29104,
+    "offset": 28063,
     "length": 308
   },
   {
     "name": "flash/display/ShaderParameterType",
     "defs": [
       "flash.display:ShaderParameterType"
     ],
-    "offset": 29412,
+    "offset": 28371,
     "length": 618
   },
   {
     "name": "flash/display/ShaderPrecision",
     "defs": [
       "flash.display:ShaderPrecision"
     ],
-    "offset": 30030,
+    "offset": 28989,
     "length": 237
   },
   {
     "name": "flash/display/Shape",
     "defs": [
       "flash.display:Shape"
     ],
-    "offset": 30267,
-    "length": 280
+    "offset": 29226,
+    "length": 266
   },
   {
     "name": "flash/display/SimpleButton",
     "defs": [
       "flash.display:SimpleButton"
     ],
-    "offset": 30547,
+    "offset": 29492,
     "length": 682
   },
   {
     "name": "flash/display/SpreadMethod",
     "defs": [
       "flash.display:SpreadMethod"
     ],
-    "offset": 31229,
+    "offset": 30174,
     "length": 264
   },
   {
     "name": "flash/display/Sprite",
     "defs": [
       "flash.display:Sprite"
     ],
-    "offset": 31493,
-    "length": 718
+    "offset": 30438,
+    "length": 670
   },
   {
     "name": "flash/display/Stage",
     "defs": [
       "flash.display:Stage"
     ],
-    "offset": 32211,
-    "length": 3663
+    "offset": 31108,
+    "length": 3649
   },
   {
     "name": "flash/display/Stage3D",
     "defs": [
       "flash.display:Stage3D"
     ],
-    "offset": 35874,
+    "offset": 34757,
     "length": 443
   },
   {
     "name": "flash/display/StageAlign",
     "defs": [
       "flash.display:StageAlign"
     ],
-    "offset": 36317,
+    "offset": 35200,
     "length": 383
   },
   {
     "name": "flash/display/StageDisplayState",
     "defs": [
       "flash.display:StageDisplayState"
     ],
-    "offset": 36700,
+    "offset": 35583,
     "length": 319
   },
   {
     "name": "flash/display/StageQuality",
     "defs": [
       "flash.display:StageQuality"
     ],
-    "offset": 37019,
+    "offset": 35902,
     "length": 429
   },
   {
     "name": "flash/display/StageScaleMode",
     "defs": [
       "flash.display:StageScaleMode"
     ],
-    "offset": 37448,
+    "offset": 36331,
     "length": 317
   },
   {
     "name": "flash/display/SWFVersion",
     "defs": [
       "flash.display:SWFVersion"
     ],
-    "offset": 37765,
+    "offset": 36648,
     "length": 454
   },
   {
     "name": "flash/display/TriangleCulling",
     "defs": [
       "flash.display:TriangleCulling"
     ],
-    "offset": 38219,
+    "offset": 37102,
     "length": 278
   },
   {
     "name": "flash/external/ExternalInterface",
     "defs": [
       "flash.external:ExternalInterface"
     ],
-    "offset": 38497,
+    "offset": 37380,
     "length": 3261
   },
   {
     "name": "flash/events/AccelerometerEvent",
     "defs": [
       "flash.events:AccelerometerEvent"
     ],
-    "offset": 41758,
+    "offset": 40641,
     "length": 817
   },
   {
     "name": "flash/events/ActivityEvent",
     "defs": [
       "flash.events:ActivityEvent"
     ],
-    "offset": 42575,
+    "offset": 41458,
     "length": 505
   },
   {
     "name": "flash/events/AsyncErrorEvent",
     "defs": [
       "flash.events:AsyncErrorEvent"
     ],
-    "offset": 43080,
+    "offset": 41963,
     "length": 522
   },
   {
     "name": "flash/events/ContextMenuEvent",
     "defs": [
       "flash.events:ContextMenuEvent"
     ],
-    "offset": 43602,
+    "offset": 42485,
     "length": 829
   },
   {
     "name": "flash/events/DataEvent",
     "defs": [
       "flash.events:DataEvent"
     ],
-    "offset": 44431,
+    "offset": 43314,
     "length": 546
   },
   {
     "name": "flash/events/ErrorEvent",
     "defs": [
       "flash.events:ErrorEvent"
     ],
-    "offset": 44977,
+    "offset": 43860,
     "length": 494
   },
   {
     "name": "flash/events/Event",
     "defs": [
       "flash.events:Event"
     ],
-    "offset": 45471,
-    "length": 2319
+    "offset": 44354,
+    "length": 2280
   },
   {
     "name": "flash/events/EventDispatcher",
     "defs": [
       "flash.events:EventDispatcher"
     ],
-    "offset": 47790,
-    "length": 708
+    "offset": 46634,
+    "length": 649
   },
   {
     "name": "flash/events/EventPhase",
     "defs": [
       "flash.events:EventPhase"
     ],
-    "offset": 48498,
+    "offset": 47283,
     "length": 262
   },
   {
     "name": "flash/events/FocusEvent",
     "defs": [
       "flash.events:FocusEvent"
     ],
-    "offset": 48760,
+    "offset": 47545,
     "length": 980
   },
   {
     "name": "flash/events/FullScreenEvent",
     "defs": [
       "flash.events:FullScreenEvent"
     ],
-    "offset": 49740,
+    "offset": 48525,
     "length": 643
   },
   {
     "name": "flash/events/GameInputEvent",
     "defs": [
       "flash.events:GameInputEvent"
     ],
-    "offset": 50383,
+    "offset": 49168,
     "length": 390
   },
   {
     "name": "flash/events/GeolocationEvent",
     "defs": [
       "flash.events:GeolocationEvent"
     ],
-    "offset": 50773,
+    "offset": 49558,
     "length": 1137
   },
   {
     "name": "flash/events/GestureEvent",
     "defs": [
       "flash.events:GestureEvent"
     ],
-    "offset": 51910,
-    "length": 1059
+    "offset": 50695,
+    "length": 813
   },
   {
     "name": "flash/events/GesturePhase",
     "defs": [
       "flash.events:GesturePhase"
     ],
-    "offset": 52969,
+    "offset": 51508,
     "length": 281
   },
   {
     "name": "flash/events/HTTPStatusEvent",
     "defs": [
       "flash.events:HTTPStatusEvent"
     ],
-    "offset": 53250,
+    "offset": 51789,
     "length": 746
   },
   {
     "name": "flash/events/IEventDispatcher",
     "defs": [
       "flash.events:IEventDispatcher"
     ],
-    "offset": 53996,
+    "offset": 52535,
     "length": 353
   },
   {
     "name": "flash/events/IMEEvent",
     "defs": [
       "flash.events:IMEEvent"
     ],
-    "offset": 54349,
+    "offset": 52888,
     "length": 632
   },
   {
     "name": "flash/events/IOErrorEvent",
     "defs": [
       "flash.events:IOErrorEvent"
     ],
-    "offset": 54981,
+    "offset": 53520,
     "length": 605
   },
   {
     "name": "flash/events/KeyboardEvent",
     "defs": [
       "flash.events:KeyboardEvent"
     ],
-    "offset": 55586,
+    "offset": 54125,
     "length": 1044
   },
   {
     "name": "flash/events/MouseEvent",
     "defs": [
       "flash.events:MouseEvent"
     ],
-    "offset": 56630,
+    "offset": 55169,
     "length": 2142
   },
   {
     "name": "flash/events/NetDataEvent",
     "defs": [
       "flash.events:NetDataEvent"
     ],
-    "offset": 58772,
+    "offset": 57311,
     "length": 565
   },
   {
     "name": "flash/events/NetFilterEvent",
     "defs": [
       "flash.events:NetFilterEvent"
     ],
-    "offset": 59337,
+    "offset": 57876,
     "length": 454
   },
   {
     "name": "flash/events/NetMonitorEvent",
     "defs": [
       "flash.events:NetMonitorEvent"
     ],
-    "offset": 59791,
+    "offset": 58330,
     "length": 516
   },
   {
     "name": "flash/events/NetStatusEvent",
     "defs": [
       "flash.events:NetStatusEvent"
     ],
-    "offset": 60307,
+    "offset": 58846,
     "length": 498
   },
   {
     "name": "flash/events/OutputProgressEvent",
     "defs": [
       "flash.events:OutputProgressEvent"
     ],
-    "offset": 60805,
+    "offset": 59344,
     "length": 638
   },
   {
     "name": "flash/events/PressAndTapGestureEvent",
     "defs": [
       "flash.events:PressAndTapGestureEvent"
     ],
-    "offset": 61443,
+    "offset": 59982,
     "length": 944
   },
   {
     "name": "flash/events/ProgressEvent",
     "defs": [
       "flash.events:ProgressEvent"
     ],
-    "offset": 62387,
-    "length": 647
+    "offset": 60926,
+    "length": 683
   },
   {
     "name": "flash/events/SampleDataEvent",
     "defs": [
       "flash.events:SampleDataEvent"
     ],
-    "offset": 63034,
+    "offset": 61609,
     "length": 639
   },
   {
     "name": "flash/events/SecurityErrorEvent",
     "defs": [
       "flash.events:SecurityErrorEvent"
     ],
-    "offset": 63673,
+    "offset": 62248,
     "length": 511
   },
   {
     "name": "flash/events/ShaderEvent",
     "defs": [
       "flash.events:ShaderEvent"
     ],
-    "offset": 64184,
+    "offset": 62759,
     "length": 742
   },
   {
     "name": "flash/events/SoftKeyboardEvent",
     "defs": [
       "flash.events:SoftKeyboardEvent"
     ],
-    "offset": 64926,
+    "offset": 63501,
     "length": 793
   },
   {
     "name": "flash/events/SoftKeyboardTrigger",
     "defs": [
       "flash.events:SoftKeyboardTrigger"
     ],
-    "offset": 65719,
+    "offset": 64294,
     "length": 287
   },
   {
     "name": "flash/events/StageVideoAvailabilityEvent",
     "defs": [
       "flash.events:StageVideoAvailabilityEvent"
     ],
-    "offset": 66006,
+    "offset": 64581,
     "length": 377
   },
   {
     "name": "flash/events/StageVideoEvent",
     "defs": [
       "flash.events:StageVideoEvent"
     ],
-    "offset": 66383,
+    "offset": 64958,
     "length": 535
   },
   {
     "name": "flash/events/StatusEvent",
     "defs": [
       "flash.events:StatusEvent"
     ],
-    "offset": 66918,
+    "offset": 65493,
     "length": 578
   },
   {
     "name": "flash/events/SyncEvent",
     "defs": [
       "flash.events:SyncEvent"
     ],
-    "offset": 67496,
+    "offset": 66071,
     "length": 466
   },
   {
     "name": "flash/events/TextEvent",
     "defs": [
       "flash.events:TextEvent"
     ],
-    "offset": 67962,
+    "offset": 66537,
     "length": 569
   },
   {
     "name": "flash/events/ThrottleEvent",
     "defs": [
       "flash.events:ThrottleEvent"
     ],
-    "offset": 68531,
+    "offset": 67106,
     "length": 553
   },
   {
     "name": "flash/events/ThrottleType",
     "defs": [
       "flash.events:ThrottleType"
     ],
-    "offset": 69084,
+    "offset": 67659,
     "length": 268
   },
   {
     "name": "flash/events/TimerEvent",
     "defs": [
       "flash.events:TimerEvent"
     ],
-    "offset": 69352,
+    "offset": 67927,
     "length": 505
   },
   {
     "name": "flash/events/TouchEvent",
     "defs": [
       "flash.events:TouchEvent"
     ],
-    "offset": 69857,
+    "offset": 68432,
     "length": 2322
   },
   {
     "name": "flash/events/TransformGestureEvent",
     "defs": [
       "flash.events:TransformGestureEvent"
     ],
-    "offset": 72179,
+    "offset": 70754,
     "length": 1154
   },
   {
     "name": "flash/events/UncaughtErrorEvent",
     "defs": [
       "flash.events:UncaughtErrorEvent"
     ],
-    "offset": 73333,
+    "offset": 71908,
     "length": 525
   },
   {
     "name": "flash/events/UncaughtErrorEvents",
     "defs": [
       "flash.events:UncaughtErrorEvents"
     ],
-    "offset": 73858,
+    "offset": 72433,
     "length": 208
   },
   {
     "name": "flash/events/VideoEvent",
     "defs": [
       "flash.events:VideoEvent"
     ],
-    "offset": 74066,
+    "offset": 72641,
     "length": 461
   },
   {
     "name": "flash/geom/ColorTransform",
     "defs": [
       "flash.geom:ColorTransform"
     ],
-    "offset": 74527,
-    "length": 885
+    "offset": 73102,
+    "length": 586
   },
   {
     "name": "flash/geom/Matrix",
     "defs": [
       "flash.geom:Matrix"
     ],
-    "offset": 75412,
-    "length": 2147
+    "offset": 73688,
+    "length": 814
   },
   {
     "name": "flash/geom/Matrix3D",
     "defs": [
       "flash.geom:Matrix3D"
     ],
-    "offset": 77559,
-    "length": 1132
+    "offset": 74502,
+    "length": 1092
   },
   {
     "name": "flash/geom/Orientation3D",
     "defs": [
       "flash.geom:Orientation3D"
     ],
-    "offset": 78691,
+    "offset": 75594,
     "length": 290
   },
   {
     "name": "flash/geom/PerspectiveProjection",
     "defs": [
       "flash.geom:PerspectiveProjection"
     ],
-    "offset": 78981,
+    "offset": 75884,
     "length": 389
   },
   {
     "name": "flash/geom/Point",
     "defs": [
       "flash.geom:Point"
     ],
-    "offset": 79370,
-    "length": 1010
+    "offset": 76273,
+    "length": 516
   },
   {
     "name": "flash/geom/Rectangle",
     "defs": [
       "flash.geom:Rectangle"
     ],
-    "offset": 80380,
-    "length": 1992
+    "offset": 76789,
+    "length": 889
   },
   {
     "name": "flash/geom/Transform",
     "defs": [
       "flash.geom:Transform"
     ],
-    "offset": 82372,
-    "length": 590
+    "offset": 77678,
+    "length": 553
   },
   {
     "name": "flash/geom/Utils3D",
     "defs": [
       "flash.geom:Utils3D"
     ],
-    "offset": 82962,
+    "offset": 78231,
     "length": 342
   },
   {
     "name": "flash/geom/Vector3D",
     "defs": [
       "flash.geom:Vector3D"
     ],
-    "offset": 83304,
-    "length": 1664
+    "offset": 78573,
+    "length": 830
   },
   {
     "name": "flash/filters/BevelFilter",
     "defs": [
       "flash.filters:BevelFilter"
     ],
-    "offset": 84968,
-    "length": 808
+    "offset": 79403,
+    "length": 685
   },
   {
     "name": "flash/filters/BitmapFilter",
     "defs": [
       "flash.filters:BitmapFilter"
     ],
-    "offset": 85776,
-    "length": 200
+    "offset": 80088,
+    "length": 209
   },
   {
     "name": "flash/filters/BitmapFilterQuality",
     "defs": [
       "flash.filters:BitmapFilterQuality"
     ],
-    "offset": 85976,
+    "offset": 80297,
     "length": 256
   },
   {
     "name": "flash/filters/BitmapFilterType",
     "defs": [
       "flash.filters:BitmapFilterType"
     ],
-    "offset": 86232,
+    "offset": 80553,
     "length": 268
   },
   {
     "name": "flash/filters/BlurFilter",
     "defs": [
       "flash.filters:BlurFilter"
     ],
-    "offset": 86500,
-    "length": 393
+    "offset": 80821,
+    "length": 342
   },
   {
     "name": "flash/filters/ColorMatrixFilter",
     "defs": [
       "flash.filters:ColorMatrixFilter"
     ],
-    "offset": 86893,
-    "length": 337
+    "offset": 81163,
+    "length": 294
   },
   {
     "name": "flash/filters/ConvolutionFilter",
     "defs": [
       "flash.filters:ConvolutionFilter"
     ],
-    "offset": 87230,
-    "length": 675
+    "offset": 81457,
+    "length": 570
   },
   {
     "name": "flash/filters/DisplacementMapFilter",
     "defs": [
       "flash.filters:DisplacementMapFilter"
     ],
-    "offset": 87905,
-    "length": 743
+    "offset": 82027,
+    "length": 632
   },
   {
     "name": "flash/filters/DisplacementMapFilterMode",
     "defs": [
       "flash.filters:DisplacementMapFilterMode"
     ],
-    "offset": 88648,
+    "offset": 82659,
     "length": 315
   },
   {
     "name": "flash/filters/DropShadowFilter",
     "defs": [
       "flash.filters:DropShadowFilter"
     ],
-    "offset": 88963,
-    "length": 742
+    "offset": 82974,
+    "length": 627
   },
   {
     "name": "flash/filters/GlowFilter",
     "defs": [
       "flash.filters:GlowFilter"
     ],
-    "offset": 89705,
-    "length": 608
+    "offset": 83601,
+    "length": 517
   },
   {
     "name": "flash/filters/GradientBevelFilter",
     "defs": [
       "flash.filters:GradientBevelFilter"
     ],
-    "offset": 90313,
-    "length": 784
+    "offset": 84118,
+    "length": 649
   },
   {
     "name": "flash/filters/GradientGlowFilter",
     "defs": [
       "flash.filters:GradientGlowFilter"
     ],
-    "offset": 91097,
-    "length": 781
+    "offset": 84767,
+    "length": 646
   },
   {
     "name": "flash/filters/ShaderFilter",
     "defs": [
       "flash.filters:ShaderFilter"
     ],
-    "offset": 91878,
+    "offset": 85413,
     "length": 626
   },
   {
     "name": "flash/globalization/Collator",
     "defs": [
       "flash.globalization:Collator"
     ],
-    "offset": 92504,
+    "offset": 86039,
     "length": 692
   },
   {
     "name": "flash/globalization/CollatorMode",
     "defs": [
       "flash.globalization:CollatorMode"
     ],
-    "offset": 93196,
+    "offset": 86731,
     "length": 257
   },
   {
     "name": "flash/globalization/CurrencyFormatter",
     "defs": [
       "flash.globalization:CurrencyFormatter"
     ],
-    "offset": 93453,
+    "offset": 86988,
     "length": 1104
   },
   {
     "name": "flash/globalization/CurrencyParseResult",
     "defs": [
       "flash.globalization:CurrencyParseResult"
     ],
-    "offset": 94557,
+    "offset": 88092,
     "length": 350
   },
   {
     "name": "flash/globalization/DateTimeFormatter",
     "defs": [
       "flash.globalization:DateTimeFormatter"
     ],
-    "offset": 94907,
+    "offset": 88442,
     "length": 830
   },
   {
     "name": "flash/globalization/DateTimeNameContext",
     "defs": [
       "flash.globalization:DateTimeNameContext"
     ],
-    "offset": 95737,
+    "offset": 89272,
     "length": 273
   },
   {
     "name": "flash/globalization/DateTimeNameStyle",
     "defs": [
       "flash.globalization:DateTimeNameStyle"
     ],
-    "offset": 96010,
+    "offset": 89545,
     "length": 330
   },
   {
     "name": "flash/globalization/DateTimeStyle",
     "defs": [
       "flash.globalization:DateTimeStyle"
     ],
-    "offset": 96340,
+    "offset": 89875,
     "length": 330
   },
   {
     "name": "flash/globalization/LastOperationStatus",
     "defs": [
       "flash.globalization:LastOperationStatus"
     ],
-    "offset": 96670,
+    "offset": 90205,
     "length": 1104
   },
   {
     "name": "flash/globalization/LocaleID",
     "defs": [
       "flash.globalization:LocaleID"
     ],
-    "offset": 97774,
+    "offset": 91309,
     "length": 560
   },
   {
     "name": "flash/globalization/NationalDigitsType",
     "defs": [
       "flash.globalization:NationalDigitsType"
     ],
-    "offset": 98334,
+    "offset": 91869,
     "length": 1055
   },
   {
     "name": "flash/globalization/NumberFormatter",
     "defs": [
       "flash.globalization:NumberFormatter"
     ],
-    "offset": 99389,
+    "offset": 92924,
     "length": 946
   },
   {
     "name": "flash/globalization/NumberParseResult",
     "defs": [
       "flash.globalization:NumberParseResult"
     ],
-    "offset": 100335,
+    "offset": 93870,
     "length": 367
   },
   {
     "name": "flash/globalization/StringTools",
     "defs": [
       "flash.globalization:StringTools"
     ],
-    "offset": 100702,
+    "offset": 94237,
     "length": 460
   },
   {
     "name": "flash/media/AudioDecoder",
     "defs": [
       "flash.media:AudioDecoder"
     ],
-    "offset": 101162,
+    "offset": 94697,
     "length": 448
   },
   {
     "name": "flash/media/Camera",
     "defs": [
       "flash.media:Camera"
     ],
-    "offset": 101610,
+    "offset": 95145,
     "length": 1029
   },
   {
     "name": "flash/media/H264Level",
     "defs": [
       "flash.media:H264Level"
     ],
-    "offset": 102639,
+    "offset": 96174,
     "length": 613
   },
   {
     "name": "flash/media/H264Profile",
     "defs": [
       "flash.media:H264Profile"
     ],
-    "offset": 103252,
+    "offset": 96787,
     "length": 233
   },
   {
     "name": "flash/media/H264VideoStreamSettings",
     "defs": [
       "flash.media:H264VideoStreamSettings"
     ],
-    "offset": 103485,
+    "offset": 97020,
     "length": 1137
   },
   {
     "name": "flash/media/ID3Info",
     "defs": [
       "flash.media:ID3Info"
     ],
-    "offset": 104622,
-    "length": 270
+    "offset": 98157,
+    "length": 300
   },
   {
     "name": "flash/media/Microphone",
     "defs": [
       "flash.media:Microphone"
     ],
-    "offset": 104892,
+    "offset": 98457,
     "length": 986
   },
   {
     "name": "flash/media/MicrophoneEnhancedMode",
     "defs": [
       "flash.media:MicrophoneEnhancedMode"
     ],
-    "offset": 105878,
+    "offset": 99443,
     "length": 367
   },
   {
     "name": "flash/media/MicrophoneEnhancedOptions",
     "defs": [
       "flash.media:MicrophoneEnhancedOptions"
     ],
-    "offset": 106245,
+    "offset": 99810,
     "length": 604
   },
   {
     "name": "flash/media/Sound",
     "defs": [
       "flash.media:Sound"
     ],
-    "offset": 106849,
+    "offset": 100414,
     "length": 837
   },
   {
     "name": "flash/media/SoundChannel",
     "defs": [
       "flash.media:SoundChannel"
     ],
-    "offset": 107686,
+    "offset": 101251,
     "length": 390
   },
   {
     "name": "flash/media/SoundCodec",
     "defs": [
       "flash.media:SoundCodec"
     ],
-    "offset": 108076,
+    "offset": 101641,
     "length": 287
   },
   {
     "name": "flash/media/SoundLoaderContext",
     "defs": [
       "flash.media:SoundLoaderContext"
     ],
-    "offset": 108363,
+    "offset": 101928,
     "length": 261
   },
   {
     "name": "flash/media/SoundMixer",
     "defs": [
       "flash.media:SoundMixer"
     ],
-    "offset": 108624,
+    "offset": 102189,
     "length": 513
   },
   {
     "name": "flash/media/SoundTransform",
     "defs": [
       "flash.media:SoundTransform"
     ],
-    "offset": 109137,
-    "length": 536
+    "offset": 102702,
+    "length": 422
   },
   {
     "name": "flash/media/StageVideo",
     "defs": [
       "flash.media:StageVideo"
     ],
-    "offset": 109673,
+    "offset": 103124,
     "length": 570
   },
   {
     "name": "flash/media/StageVideoAvailability",
     "defs": [
       "flash.media:StageVideoAvailability"
     ],
-    "offset": 110243,
+    "offset": 103694,
     "length": 271
   },
   {
     "name": "flash/media/Video",
     "defs": [
       "flash.media:Video"
     ],
-    "offset": 110514,
+    "offset": 103965,
     "length": 533
   },
   {
     "name": "flash/media/VideoCodec",
     "defs": [
       "flash.media:VideoCodec"
     ],
-    "offset": 111047,
+    "offset": 104498,
     "length": 256
   },
   {
     "name": "flash/media/VideoStatus",
     "defs": [
       "flash.media:VideoStatus"
     ],
-    "offset": 111303,
+    "offset": 104754,
     "length": 286
   },
   {
     "name": "flash/media/VideoStreamSettings",
     "defs": [
       "flash.media:VideoStreamSettings"
     ],
-    "offset": 111589,
+    "offset": 105040,
     "length": 651
   },
   {
     "name": "flash/profiler/Telemetry",
     "defs": [
       "flash.profiler:Telemetry"
     ],
-    "offset": 112240,
+    "offset": 105691,
     "length": 422
   },
   {
     "name": "flash/printing/PrintJob",
     "defs": [
       "flash.printing:PrintJob"
     ],
-    "offset": 112662,
+    "offset": 106113,
     "length": 711
   },
   {
     "name": "flash/printing/PrintJobOptions",
     "defs": [
       "flash.printing:PrintJobOptions"
     ],
-    "offset": 113373,
+    "offset": 106824,
     "length": 216
   },
   {
     "name": "flash/printing/PrintJobOrientation",
     "defs": [
       "flash.printing:PrintJobOrientation"
     ],
-    "offset": 113589,
+    "offset": 107040,
     "length": 265
   },
   {
     "name": "flash/security/CertificateStatus",
     "defs": [
       "flash.security:CertificateStatus"
     ],
-    "offset": 113854,
+    "offset": 107305,
     "length": 533
   },
   {
     "name": "flash/security/X500DistinguishedName",
     "defs": [
       "flash.security:X500DistinguishedName"
     ],
-    "offset": 114387,
+    "offset": 107838,
     "length": 427
   },
   {
     "name": "flash/security/X509Certificate",
     "defs": [
       "flash.security:X509Certificate"
     ],
-    "offset": 114814,
+    "offset": 108265,
     "length": 635
   },
   {
     "name": "flash/sampler/ClassFactory",
     "defs": [
       "flash.sampler:ClassFactory"
     ],
-    "offset": 115449,
+    "offset": 108900,
     "length": 285
   },
   {
     "name": "flash/sampler/DeleteObjectSample",
     "defs": [
       "flash.sampler:DeleteObjectSample"
     ],
-    "offset": 115734,
+    "offset": 109185,
     "length": 233
   },
   {
     "name": "flash/sampler/NewObjectSample",
     "defs": [
       "flash.sampler:NewObjectSample"
     ],
-    "offset": 115967,
+    "offset": 109418,
     "length": 308
   },
   {
     "name": "flash/sampler/Sample",
     "defs": [
       "flash.sampler:Sample"
     ],
-    "offset": 116275,
+    "offset": 109726,
     "length": 205
   },
   {
     "name": "flash/sampler/StackFrame",
     "defs": [
       "flash.sampler:StackFrame"
     ],
-    "offset": 116480,
+    "offset": 109931,
     "length": 310
   },
   {
     "name": "flash/system/ApplicationDomain",
     "defs": [
       "flash.system:ApplicationDomain"
     ],
-    "offset": 116790,
-    "length": 543
+    "offset": 110241,
+    "length": 498
   },
   {
     "name": "flash/system/ApplicationInstaller",
     "defs": [
       "flash.system:ApplicationInstaller"
     ],
-    "offset": 117333,
+    "offset": 110739,
     "length": 426
   },
   {
     "name": "flash/system/AuthorizedFeatures",
     "defs": [
       "flash.system:AuthorizedFeatures"
     ],
-    "offset": 117759,
+    "offset": 111165,
     "length": 456
   },
   {
     "name": "flash/system/AuthorizedFeaturesLoader",
     "defs": [
       "flash.system:AuthorizedFeaturesLoader"
     ],
-    "offset": 118215,
+    "offset": 111621,
     "length": 398
   },
   {
     "name": "flash/system/Capabilities",
     "defs": [
       "flash.system:Capabilities"
     ],
-    "offset": 118613,
+    "offset": 112019,
     "length": 1133
   },
   {
     "name": "flash/system/DomainMemoryWithStage3D",
     "defs": [
       "flash.system:DomainMemoryWithStage3D"
     ],
-    "offset": 119746,
+    "offset": 113152,
     "length": 191
   },
   {
     "name": "flash/system/FSCommand",
     "defs": [
       "flash.system:FSCommand",
       "flash.system:fscommand"
     ],
-    "offset": 119937,
+    "offset": 113343,
     "length": 285
   },
   {
     "name": "flash/system/ImageDecodingPolicy",
     "defs": [
       "flash.system:ImageDecodingPolicy"
     ],
-    "offset": 120222,
+    "offset": 113628,
     "length": 257
   },
   {
     "name": "flash/system/IME",
     "defs": [
       "flash.system:IME"
     ],
-    "offset": 120479,
+    "offset": 113885,
     "length": 507
   },
   {
     "name": "flash/system/IMEConversionMode",
     "defs": [
       "flash.system:IMEConversionMode"
     ],
-    "offset": 120986,
+    "offset": 114392,
     "length": 432
   },
   {
     "name": "flash/system/JPEGLoaderContext",
     "defs": [
       "flash.system:JPEGLoaderContext"
     ],
-    "offset": 121418,
+    "offset": 114824,
     "length": 309
   },
   {
     "name": "flash/system/LoaderContext",
     "defs": [
       "flash.system:LoaderContext"
     ],
-    "offset": 121727,
+    "offset": 115133,
     "length": 515
   },
   {
     "name": "flash/system/MessageChannel",
     "defs": [
       "flash.system:MessageChannel"
     ],
-    "offset": 122242,
+    "offset": 115648,
     "length": 584
   },
   {
     "name": "flash/system/MessageChannelState",
     "defs": [
       "flash.system:MessageChannelState"
     ],
-    "offset": 122826,
+    "offset": 116232,
     "length": 278
   },
   {
     "name": "flash/system/Security",
     "defs": [
       "flash.system:Security"
     ],
-    "offset": 123104,
+    "offset": 116510,
     "length": 773
   },
   {
     "name": "flash/system/SecurityDomain",
     "defs": [
       "flash.system:SecurityDomain"
     ],
-    "offset": 123877,
+    "offset": 117283,
     "length": 265
   },
   {
     "name": "flash/system/SecurityPanel",
     "defs": [
       "flash.system:SecurityPanel"
     ],
-    "offset": 124142,
+    "offset": 117548,
     "length": 430
   },
   {
     "name": "flash/system/System",
     "defs": [
       "flash.system:System"
     ],
-    "offset": 124572,
+    "offset": 117978,
     "length": 629
   },
   {
     "name": "flash/system/SystemUpdater",
     "defs": [
       "flash.system:SystemUpdater"
     ],
-    "offset": 125201,
+    "offset": 118607,
     "length": 322
   },
   {
     "name": "flash/system/SystemUpdaterType",
     "defs": [
       "flash.system:SystemUpdaterType"
     ],
-    "offset": 125523,
+    "offset": 118929,
     "length": 241
   },
   {
     "name": "flash/system/TouchscreenType",
     "defs": [
       "flash.system:TouchscreenType"
     ],
-    "offset": 125764,
+    "offset": 119170,
     "length": 268
   },
   {
     "name": "flash/trace/Trace",
     "defs": [
       "flash.trace:Trace"
     ],
-    "offset": 126032,
+    "offset": 119438,
     "length": 488
   },
   {
     "name": "flash/ui/ContextMenu",
     "defs": [
       "flash.ui:ContextMenu"
     ],
-    "offset": 126520,
+    "offset": 119926,
     "length": 1036
   },
   {
     "name": "flash/ui/ContextMenuBuiltInItems",
     "defs": [
       "flash.ui:ContextMenuBuiltInItems"
     ],
-    "offset": 127556,
+    "offset": 120962,
     "length": 871
   },
   {
     "name": "flash/ui/ContextMenuClipboardItems",
     "defs": [
       "flash.ui:ContextMenuClipboardItems"
     ],
-    "offset": 128427,
+    "offset": 121833,
     "length": 587
   },
   {
     "name": "flash/ui/ContextMenuItem",
     "defs": [
       "flash.ui:ContextMenuItem"
     ],
-    "offset": 129014,
-    "length": 472
+    "offset": 122420,
+    "length": 458
   },
   {
     "name": "flash/ui/GameInput",
     "defs": [
       "flash.ui:GameInput"
     ],
-    "offset": 129486,
+    "offset": 122878,
     "length": 333
   },
   {
     "name": "flash/ui/GameInputControl",
     "defs": [
       "flash.ui:GameInputControl"
     ],
-    "offset": 129819,
+    "offset": 123211,
     "length": 458
   },
   {
     "name": "flash/ui/GameInputControlType",
     "defs": [
       "flash.ui:GameInputControlType"
     ],
-    "offset": 130277,
+    "offset": 123669,
     "length": 389
   },
   {
     "name": "flash/ui/GameInputDevice",
     "defs": [
       "flash.ui:GameInputDevice"
     ],
-    "offset": 130666,
+    "offset": 124058,
     "length": 623
   },
   {
     "name": "flash/ui/GameInputFinger",
     "defs": [
       "flash.ui:GameInputFinger"
     ],
-    "offset": 131289,
+    "offset": 124681,
     "length": 291
   },
   {
     "name": "flash/ui/GameInputHand",
     "defs": [
       "flash.ui:GameInputHand"
     ],
-    "offset": 131580,
+    "offset": 124972,
     "length": 256
   },
   {
     "name": "flash/ui/Keyboard",
     "defs": [
       "flash.ui:Keyboard"
     ],
-    "offset": 131836,
+    "offset": 125228,
     "length": 9336
   },
   {
     "name": "flash/ui/KeyboardType",
     "defs": [
       "flash.ui:KeyboardType"
     ],
-    "offset": 141172,
+    "offset": 134564,
     "length": 266
   },
   {
     "name": "flash/ui/KeyLocation",
     "defs": [
       "flash.ui:KeyLocation"
     ],
-    "offset": 141438,
+    "offset": 134830,
     "length": 273
   },
   {
     "name": "flash/ui/Mouse",
     "defs": [
       "flash.ui:Mouse"
     ],
-    "offset": 141711,
+    "offset": 135103,
     "length": 397
   },
   {
     "name": "flash/ui/MouseCursor",
     "defs": [
       "flash.ui:MouseCursor"
     ],
-    "offset": 142108,
+    "offset": 135500,
     "length": 302
   },
   {
     "name": "flash/ui/MouseCursorData",
     "defs": [
       "flash.ui:MouseCursorData"
     ],
-    "offset": 142410,
+    "offset": 135802,
     "length": 352
   },
   {
     "name": "flash/ui/Multitouch",
     "defs": [
       "flash.ui:Multitouch"
     ],
-    "offset": 142762,
+    "offset": 136154,
     "length": 435
   },
   {
     "name": "flash/ui/MultitouchInputMode",
     "defs": [
       "flash.ui:MultitouchInputMode"
     ],
-    "offset": 143197,
+    "offset": 136589,
     "length": 279
   },
   {
     "name": "flash/sensors/Accelerometer",
     "defs": [
       "flash.sensors:Accelerometer"
     ],
-    "offset": 143476,
+    "offset": 136868,
     "length": 357
   },
   {
     "name": "flash/sensors/Geolocation",
     "defs": [
       "flash.sensors:Geolocation"
     ],
-    "offset": 143833,
+    "offset": 137225,
     "length": 351
   },
   {
-    "name": "flash/display3d/Context3D",
+    "name": "flash/display3D/Context3D",
     "defs": [
       "flash.display3D:Context3D"
     ],
-    "offset": 144184,
+    "offset": 137576,
     "length": 2088
   },
   {
-    "name": "flash/display3d/Context3DBlendFactor",
+    "name": "flash/display3D/Context3DBlendFactor",
     "defs": [
       "flash.display3D:Context3DBlendFactor"
     ],
-    "offset": 146272,
+    "offset": 139664,
     "length": 681
   },
   {
-    "name": "flash/display3d/Context3DClearMask",
+    "name": "flash/display3D/Context3DClearMask",
     "defs": [
       "flash.display3D:Context3DClearMask"
     ],
-    "offset": 146953,
+    "offset": 140345,
     "length": 292
   },
   {
-    "name": "flash/display3d/Context3DProfile",
+    "name": "flash/display3D/Context3DProfile",
     "defs": [
       "flash.display3D:Context3DProfile"
     ],
-    "offset": 147245,
+    "offset": 140637,
     "length": 282
   },
   {
-    "name": "flash/display3d/Context3DProgramType",
+    "name": "flash/display3D/Context3DProgramType",
     "defs": [
       "flash.display3D:Context3DProgramType"
     ],
-    "offset": 147527,
+    "offset": 140919,
     "length": 263
   },
   {
-    "name": "flash/display3d/Context3DRenderMode",
+    "name": "flash/display3D/Context3DRenderMode",
     "defs": [
       "flash.display3D:Context3DRenderMode"
     ],
-    "offset": 147790,
+    "offset": 141182,
     "length": 257
   },
   {
-    "name": "flash/display3d/Context3DCompareMode",
+    "name": "flash/display3D/Context3DCompareMode",
     "defs": [
       "flash.display3D:Context3DCompareMode"
     ],
-    "offset": 148047,
+    "offset": 141439,
     "length": 452
   },
   {
-    "name": "flash/display3d/Context3DStencilAction",
+    "name": "flash/display3D/Context3DStencilAction",
     "defs": [
       "flash.display3D:Context3DStencilAction"
     ],
-    "offset": 148499,
+    "offset": 141891,
     "length": 499
   },
   {
-    "name": "flash/display3d/Context3DTextureFormat",
+    "name": "flash/display3D/Context3DTextureFormat",
     "defs": [
       "flash.display3D:Context3DTextureFormat"
     ],
-    "offset": 148998,
+    "offset": 142390,
     "length": 315
   },
   {
-    "name": "flash/display3d/Context3DTriangleFace",
+    "name": "flash/display3D/Context3DTriangleFace",
     "defs": [
       "flash.display3D:Context3DTriangleFace"
     ],
-    "offset": 149313,
+    "offset": 142705,
     "length": 323
   },
   {
-    "name": "flash/display3d/Context3DVertexBufferFormat",
+    "name": "flash/display3D/Context3DVertexBufferFormat",
     "defs": [
       "flash.display3D:Context3DVertexBufferFormat"
     ],
-    "offset": 149636,
+    "offset": 143028,
     "length": 365
   },
   {
-    "name": "flash/display3d/IndexBuffer3D",
+    "name": "flash/display3D/IndexBuffer3D",
     "defs": [
       "flash.display3D:IndexBuffer3D"
     ],
-    "offset": 150001,
+    "offset": 143393,
     "length": 364
   },
   {
-    "name": "flash/display3d/Program3D",
+    "name": "flash/display3D/Program3D",
     "defs": [
       "flash.display3D:Program3D"
     ],
-    "offset": 150365,
+    "offset": 143757,
     "length": 275
   },
   {
-    "name": "flash/display3d/VertexBuffer3D",
+    "name": "flash/display3D/VertexBuffer3D",
     "defs": [
       "flash.display3D:VertexBuffer3D"
     ],
-    "offset": 150640,
+    "offset": 144032,
     "length": 367
   },
   {
-    "name": "flash/display3d/textures/CubeTexture",
+    "name": "flash/display3D/textures/CubeTexture",
     "defs": [
       "flash.display3D.textures:CubeTexture"
     ],
-    "offset": 151007,
+    "offset": 144399,
     "length": 501
   },
   {
-    "name": "flash/display3d/textures/Texture",
+    "name": "flash/display3D/textures/Texture",
     "defs": [
       "flash.display3D.textures:Texture"
     ],
-    "offset": 151508,
+    "offset": 144900,
     "length": 487
   },
   {
-    "name": "flash/display3d/textures/TextureBase",
+    "name": "flash/display3D/textures/TextureBase",
     "defs": [
       "flash.display3D.textures:TextureBase"
     ],
-    "offset": 151995,
+    "offset": 145387,
     "length": 292
   },
   {
     "name": "flash/net/DynamicPropertyOutput",
     "defs": [
       "flash.net:DynamicPropertyOutput"
     ],
-    "offset": 152287,
+    "offset": 145679,
     "length": 308
   },
   {
     "name": "flash/net/FileFilter",
     "defs": [
       "flash.net:FileFilter"
     ],
-    "offset": 152595,
+    "offset": 145987,
     "length": 318
   },
   {
     "name": "flash/net/FileReference",
     "defs": [
       "flash.net:FileReference"
     ],
-    "offset": 152913,
+    "offset": 146305,
     "length": 666
   },
   {
     "name": "flash/net/FileReferenceList",
     "defs": [
       "flash.net:FileReferenceList"
     ],
-    "offset": 153579,
+    "offset": 146971,
     "length": 315
   },
   {
     "name": "flash/net/GroupSpecifier",
     "defs": [
       "flash.net:GroupSpecifier"
     ],
-    "offset": 153894,
+    "offset": 147286,
     "length": 1492
   },
   {
     "name": "flash/net/IDynamicPropertyOutput",
     "defs": [
       "flash.net:IDynamicPropertyOutput"
     ],
-    "offset": 155386,
+    "offset": 148778,
     "length": 197
   },
   {
     "name": "flash/net/IDynamicPropertyWriter",
     "defs": [
       "flash.net:IDynamicPropertyWriter"
     ],
-    "offset": 155583,
+    "offset": 148975,
     "length": 225
   },
   {
     "name": "flash/net/LocalConnection",
     "defs": [
       "flash.net:LocalConnection"
     ],
-    "offset": 155808,
+    "offset": 149200,
     "length": 495
   },
   {
     "name": "flash/net/NetConnection",
     "defs": [
       "flash.net:NetConnection"
     ],
-    "offset": 156303,
+    "offset": 149695,
     "length": 906
   },
   {
     "name": "flash/net/NetGroup",
     "defs": [
       "flash.net:NetGroup"
     ],
-    "offset": 157209,
+    "offset": 150601,
     "length": 1299
   },
   {
     "name": "flash/net/NetGroupInfo",
     "defs": [
       "flash.net:NetGroupInfo"
     ],
-    "offset": 158508,
+    "offset": 151900,
     "length": 768
   },
   {
     "name": "flash/net/NetGroupReceiveMode",
     "defs": [
       "flash.net:NetGroupReceiveMode"
     ],
-    "offset": 159276,
+    "offset": 152668,
     "length": 245
   },
   {
     "name": "flash/net/NetGroupReplicationStrategy",
     "defs": [
       "flash.net:NetGroupReplicationStrategy"
     ],
-    "offset": 159521,
+    "offset": 152913,
     "length": 283
   },
   {
     "name": "flash/net/NetGroupSendMode",
     "defs": [
       "flash.net:NetGroupSendMode"
     ],
-    "offset": 159804,
+    "offset": 153196,
     "length": 273
   },
   {
     "name": "flash/net/NetGroupSendResult",
     "defs": [
       "flash.net:NetGroupSendResult"
     ],
-    "offset": 160077,
+    "offset": 153469,
     "length": 270
   },
   {
     "name": "flash/net/NetMonitor",
     "defs": [
       "flash.net:NetMonitor"
     ],
-    "offset": 160347,
+    "offset": 153739,
     "length": 279
   },
   {
     "name": "flash/net/NetStream",
     "defs": [
       "flash.net:NetStream"
     ],
-    "offset": 160626,
+    "offset": 154018,
     "length": 3103
   },
   {
     "name": "flash/net/NetStreamAppendBytesAction",
     "defs": [
       "flash.net:NetStreamAppendBytesAction"
     ],
-    "offset": 163729,
+    "offset": 157121,
     "length": 315
   },
   {
     "name": "flash/net/NetStreamMulticastInfo",
     "defs": [
       "flash.net:NetStreamMulticastInfo"
     ],
-    "offset": 164044,
+    "offset": 157436,
     "length": 2712
   },
   {
     "name": "flash/net/NetStreamInfo",
     "defs": [
       "flash.net:NetStreamInfo"
     ],
-    "offset": 166756,
+    "offset": 160148,
     "length": 1958
   },
   {
     "name": "flash/net/NetStreamPlayOptions",
     "defs": [
       "flash.net:NetStreamPlayOptions"
     ],
-    "offset": 168714,
+    "offset": 162106,
     "length": 355
   },
   {
     "name": "flash/net/NetStreamPlayTransitions",
     "defs": [
       "flash.net:NetStreamPlayTransitions"
     ],
-    "offset": 169069,
+    "offset": 162461,
     "length": 406
   },
   {
     "name": "flash/net/ObjectEncoding",
     "defs": [
       "flash.net:ObjectEncoding"
     ],
-    "offset": 169475,
+    "offset": 162867,
     "length": 345
   },
   {
     "name": "flash/net/Responder",
     "defs": [
       "flash.net:Responder"
     ],
-    "offset": 169820,
+    "offset": 163212,
     "length": 239
   },
   {
     "name": "flash/net/SecureSocket",
     "defs": [
       "flash.net:SecureSocket"
     ],
-    "offset": 170059,
+    "offset": 163451,
     "length": 566
   },
   {
     "name": "flash/net/SharedObject",
     "defs": [
       "flash.net:SharedObject"
     ],
-    "offset": 170625,
-    "length": 1122
+    "offset": 164017,
+    "length": 1108
   },
   {
     "name": "flash/net/SharedObjectFlushStatus",
     "defs": [
       "flash.net:SharedObjectFlushStatus"
     ],
-    "offset": 171747,
+    "offset": 165125,
     "length": 257
   },
   {
     "name": "flash/net/URLLoader",
     "defs": [
       "flash.net:URLLoader"
     ],
-    "offset": 172004,
+    "offset": 165382,
     "length": 1501
   },
   {
     "name": "flash/net/Socket",
     "defs": [
       "flash.net:Socket"
     ],
-    "offset": 173505,
+    "offset": 166883,
     "length": 1282
   },
   {
     "name": "flash/net/URLLoaderDataFormat",
     "defs": [
       "flash.net:URLLoaderDataFormat"
     ],
-    "offset": 174787,
+    "offset": 168165,
     "length": 276
   },
   {
     "name": "flash/net/URLRequest",
     "defs": [
       "flash.net:URLRequest"
     ],
-    "offset": 175063,
-    "length": 610
+    "offset": 168441,
+    "length": 402
   },
   {
     "name": "flash/net/URLRequestHeader",
     "defs": [
       "flash.net:URLRequestHeader"
     ],
-    "offset": 175673,
+    "offset": 168843,
     "length": 223
   },
   {
     "name": "flash/net/URLStream",
     "defs": [
       "flash.net:URLStream"
     ],
-    "offset": 175896,
+    "offset": 169066,
     "length": 908
   },
   {
     "name": "flash/net/URLRequestMethod",
     "defs": [
       "flash.net:URLRequestMethod"
     ],
-    "offset": 176804,
+    "offset": 169974,
     "length": 304
   },
   {
     "name": "flash/net/URLVariables",
     "defs": [
       "flash.net:URLVariables"
     ],
-    "offset": 177108,
-    "length": 937
+    "offset": 170278,
+    "length": 972
   },
   {
     "name": "flash/net/XMLSocket",
     "defs": [
       "flash.net:XMLSocket"
     ],
-    "offset": 178045,
+    "offset": 171250,
     "length": 480
   },
   {
     "name": "flash/text/AntiAliasType",
     "defs": [
       "flash.text:AntiAliasType"
     ],
-    "offset": 178525,
+    "offset": 171730,
     "length": 239
   },
   {
     "name": "flash/text/CSMSettings",
     "defs": [
       "flash.text:CSMSettings"
     ],
-    "offset": 178764,
+    "offset": 171969,
     "length": 248
   },
   {
     "name": "flash/text/Font",
     "defs": [
       "flash.text:Font"
     ],
-    "offset": 179012,
+    "offset": 172217,
     "length": 361
   },
   {
     "name": "flash/text/FontStyle",
     "defs": [
       "flash.text:FontStyle"
     ],
-    "offset": 179373,
+    "offset": 172578,
     "length": 292
   },
   {
     "name": "flash/text/FontType",
     "defs": [
       "flash.text:FontType"
     ],
-    "offset": 179665,
+    "offset": 172870,
     "length": 269
   },
   {
     "name": "flash/text/GridFitType",
     "defs": [
       "flash.text:GridFitType"
     ],
-    "offset": 179934,
+    "offset": 173139,
     "length": 258
   },
   {
     "name": "flash/text/StaticText",
     "defs": [
       "flash.text:StaticText"
     ],
-    "offset": 180192,
+    "offset": 173397,
     "length": 299
   },
   {
     "name": "flash/text/StyleSheet",
     "defs": [
       "flash.text:StyleSheet"
     ],
-    "offset": 180491,
+    "offset": 173696,
     "length": 523
   },
   {
     "name": "flash/text/TextColorType",
     "defs": [
       "flash.text:TextColorType"
     ],
-    "offset": 181014,
+    "offset": 174219,
     "length": 241
   },
   {
     "name": "flash/text/TextDisplayMode",
     "defs": [
       "flash.text:TextDisplayMode"
     ],
-    "offset": 181255,
+    "offset": 174460,
     "length": 258
   },
   {
     "name": "flash/text/TextField",
     "defs": [
       "flash.text:TextField"
     ],
-    "offset": 181513,
+    "offset": 174718,
     "length": 2507
   },
   {
     "name": "flash/text/TextFieldAutoSize",
     "defs": [
       "flash.text:TextFieldAutoSize"
     ],
-    "offset": 184020,
+    "offset": 177225,
     "length": 291
   },
   {
     "name": "flash/text/TextFieldType",
     "defs": [
       "flash.text:TextFieldType"
     ],
-    "offset": 184311,
+    "offset": 177516,
     "length": 235
   },
   {
     "name": "flash/text/TextFormat",
     "defs": [
       "flash.text:TextFormat"
     ],
-    "offset": 184546,
-    "length": 943
+    "offset": 177751,
+    "length": 778
   },
   {
     "name": "flash/text/TextFormatAlign",
     "defs": [
       "flash.text:TextFormatAlign"
     ],
-    "offset": 185489,
+    "offset": 178529,
     "length": 343
   },
   {
     "name": "flash/text/TextFormatDisplay",
     "defs": [
       "flash.text:TextFormatDisplay"
     ],
-    "offset": 185832,
+    "offset": 178872,
     "length": 241
   },
   {
     "name": "flash/text/TextInteractionMode",
     "defs": [
       "flash.text:TextInteractionMode"
     ],
-    "offset": 186073,
+    "offset": 179113,
     "length": 253
   },
   {
     "name": "flash/text/TextLineMetrics",
     "defs": [
       "flash.text:TextLineMetrics"
     ],
-    "offset": 186326,
+    "offset": 179366,
     "length": 300
   },
   {
     "name": "flash/text/TextRenderer",
     "defs": [
       "flash.text:TextRenderer"
     ],
-    "offset": 186626,
+    "offset": 179666,
     "length": 373
   },
   {
     "name": "flash/text/TextRun",
     "defs": [
       "flash.text:TextRun"
     ],
-    "offset": 186999,
-    "length": 246
+    "offset": 180039,
+    "length": 294
   },
   {
     "name": "flash/text/TextSnapshot",
     "defs": [
       "flash.text:TextSnapshot"
     ],
-    "offset": 187245,
+    "offset": 180333,
     "length": 513
   },
   {
     "name": "flash/text/engine/BreakOpportunity",
     "defs": [
       "flash.text.engine:BreakOpportunity"
     ],
-    "offset": 187758,
+    "offset": 180846,
     "length": 293
   },
   {
     "name": "flash/text/engine/CFFHinting",
     "defs": [
       "flash.text.engine:CFFHinting"
     ],
-    "offset": 188051,
+    "offset": 181139,
     "length": 256
   },
   {
     "name": "flash/text/engine/ContentElement",
     "defs": [
       "flash.text.engine:ContentElement"
     ],
-    "offset": 188307,
+    "offset": 181395,
     "length": 624
   },
   {
     "name": "flash/text/engine/DigitCase",
     "defs": [
       "flash.text.engine:DigitCase"
     ],
-    "offset": 188931,
+    "offset": 182019,
     "length": 277
   },
   {
     "name": "flash/text/engine/DigitWidth",
     "defs": [
       "flash.text.engine:DigitWidth"
     ],
-    "offset": 189208,
+    "offset": 182296,
     "length": 288
   },
   {
     "name": "flash/text/engine/EastAsianJustifier",
     "defs": [
       "flash.text.engine:EastAsianJustifier"
     ],
-    "offset": 189496,
+    "offset": 182584,
     "length": 495
   },
   {
     "name": "flash/text/engine/ElementFormat",
     "defs": [
       "flash.text.engine:ElementFormat"
     ],
-    "offset": 189991,
+    "offset": 183079,
     "length": 1204
   },
   {
     "name": "flash/text/engine/FontDescription",
     "defs": [
       "flash.text.engine:FontDescription"
     ],
-    "offset": 191195,
+    "offset": 184283,
     "length": 672
   },
   {
     "name": "flash/text/engine/FontLookup",
     "defs": [
       "flash.text.engine:FontLookup"
     ],
-    "offset": 191867,
+    "offset": 184955,
     "length": 254
   },
   {
     "name": "flash/text/engine/FontMetrics",
     "defs": [
       "flash.text.engine:FontMetrics"
     ],
-    "offset": 192121,
+    "offset": 185209,
     "length": 512
   },
   {
     "name": "flash/text/engine/FontPosture",
     "defs": [
       "flash.text.engine:FontPosture"
     ],
-    "offset": 192633,
+    "offset": 185721,
     "length": 245
   },
   {
     "name": "flash/text/engine/FontWeight",
     "defs": [
       "flash.text.engine:FontWeight"
     ],
-    "offset": 192878,
+    "offset": 185966,
     "length": 239
   },
   {
     "name": "flash/text/engine/GraphicElement",
     "defs": [
       "flash.text.engine:GraphicElement"
     ],
-    "offset": 193117,
+    "offset": 186205,
     "length": 497
   },
   {
     "name": "flash/text/engine/GroupElement",
     "defs": [
       "flash.text.engine:GroupElement"
     ],
-    "offset": 193614,
+    "offset": 186702,
     "length": 714
   },
   {
     "name": "flash/text/engine/JustificationStyle",
     "defs": [
       "flash.text.engine:JustificationStyle"
     ],
-    "offset": 194328,
+    "offset": 187416,
     "length": 356
   },
   {
     "name": "flash/text/engine/Kerning",
     "defs": [
       "flash.text.engine:Kerning"
     ],
-    "offset": 194684,
+    "offset": 187772,
     "length": 248
   },
   {
     "name": "flash/text/engine/LigatureLevel",
     "defs": [
       "flash.text.engine:LigatureLevel"
     ],
-    "offset": 194932,
+    "offset": 188020,
     "length": 338
   },
   {
     "name": "flash/text/engine/LineJustification",
     "defs": [
       "flash.text.engine:LineJustification"
     ],
-    "offset": 195270,
+    "offset": 188358,
     "length": 388
   },
   {
     "name": "flash/text/engine/RenderingMode",
     "defs": [
       "flash.text.engine:RenderingMode"
     ],
-    "offset": 195658,
+    "offset": 188746,
     "length": 243
   },
   {
     "name": "flash/text/engine/SpaceJustifier",
     "defs": [
       "flash.text.engine:SpaceJustifier"
     ],
-    "offset": 195901,
+    "offset": 188989,
     "length": 527
   },
   {
     "name": "flash/text/engine/TabAlignment",
     "defs": [
       "flash.text.engine:TabAlignment"
     ],
-    "offset": 196428,
+    "offset": 189516,
     "length": 299
   },
   {
     "name": "flash/text/engine/TabStop",
     "defs": [
       "flash.text.engine:TabStop"
     ],
-    "offset": 196727,
+    "offset": 189815,
     "length": 357
   },
   {
     "name": "flash/text/engine/TextBaseline",
     "defs": [
       "flash.text.engine:TextBaseline"
     ],
-    "offset": 197084,
+    "offset": 190172,
     "length": 483
   },
   {
     "name": "flash/text/engine/TextBlock",
     "defs": [
       "flash.text.engine:TextBlock"
     ],
-    "offset": 197567,
+    "offset": 190655,
     "length": 2184
   },
   {
     "name": "flash/text/engine/TextElement",
     "defs": [
       "flash.text.engine:TextElement"
     ],
-    "offset": 199751,
+    "offset": 192839,
     "length": 383
   },
   {
     "name": "flash/text/engine/TextJustifier",
     "defs": [
       "flash.text.engine:TextJustifier"
     ],
-    "offset": 200134,
+    "offset": 193222,
     "length": 774
   },
   {
     "name": "flash/text/engine/TextLine",
     "defs": [
       "flash.text.engine:TextLine"
     ],
-    "offset": 200908,
+    "offset": 193996,
     "length": 2027
   },
   {
     "name": "flash/text/engine/TextLineCreationResult",
     "defs": [
       "flash.text.engine:TextLineCreationResult"
     ],
-    "offset": 202935,
+    "offset": 196023,
     "length": 360
   },
   {
     "name": "flash/text/engine/TextLineMirrorRegion",
     "defs": [
       "flash.text.engine:TextLineMirrorRegion"
     ],
-    "offset": 203295,
+    "offset": 196383,
     "length": 451
   },
   {
     "name": "flash/text/engine/TextLineValidity",
     "defs": [
       "flash.text.engine:TextLineValidity"
     ],
-    "offset": 203746,
+    "offset": 196834,
     "length": 332
   },
   {
     "name": "flash/text/engine/TextRotation",
     "defs": [
       "flash.text.engine:TextRotation"
     ],
-    "offset": 204078,
+    "offset": 197166,
     "length": 352
   },
   {
     "name": "flash/text/engine/TypographicCase",
     "defs": [
       "flash.text.engine:TypographicCase"
     ],
-    "offset": 204430,
+    "offset": 197518,
     "length": 436
   },
   {
     "name": "flash/text/ime/CompositionAttributeRange",
     "defs": [
       "flash.text.ime:CompositionAttributeRange"
     ],
-    "offset": 204866,
+    "offset": 197954,
     "length": 315
   },
   {
     "name": "flash/text/ime/IIMEClient",
     "defs": [
       "flash.text.ime:IIMEClient"
     ],
-    "offset": 205181,
+    "offset": 198269,
     "length": 525
   },
   {
     "name": "flash/net/FlashNetScript",
     "defs": [
       "flash.net:navigateToURL",
       "flash.net:sendToURL",
       "flash.net:registerClassAlias",
       "flash.net:getClassByAlias"
     ],
-    "offset": 205706,
+    "offset": 198794,
     "length": 343
   },
   {
     "name": "flash/utils/FlashUtilScript",
     "defs": [
       "flash.utils:describeType",
       "flash.utils:getAliasName",
       "flash.utils:getQualifiedClassName",
       "flash.utils:getDefinitionByName",
       "flash.utils:getQualifiedSuperclassName",
       "flash.utils:getTimer",
       "flash.utils:escapeMultiByte",
       "flash.utils:unescapeMultiByte"
     ],
-    "offset": 206049,
+    "offset": 199137,
     "length": 606
   },
   {
     "name": "flash/utils/Endian",
     "defs": [
       "flash.utils:Endian"
     ],
-    "offset": 206655,
+    "offset": 199743,
     "length": 243
   },
   {
     "name": "flash/utils/IExternalizable",
     "defs": [
       "flash.utils:IExternalizable"
     ],
-    "offset": 206898,
+    "offset": 199986,
     "length": 223
   },
   {
     "name": "flash/utils/ObjectInput",
     "defs": [
       "flash.utils:ObjectInput"
     ],
-    "offset": 207121,
+    "offset": 200209,
     "length": 706
   },
   {
     "name": "flash/utils/ObjectOutput",
     "defs": [
       "flash.utils:ObjectOutput"
     ],
-    "offset": 207827,
+    "offset": 200915,
     "length": 648
   },
   {
     "name": "flash/utils/Timer",
     "defs": [
       "flash.utils:Timer"
     ],
-    "offset": 208475,
+    "offset": 201563,
     "length": 973
   },
   {
     "name": "flash/utils/SetIntervalTimer",
     "defs": [
       "flash.utils:SetIntervalTimer",
       "flash.utils:setInterval",
       "flash.utils:setTimeout",
       "flash.utils:clearInterval",
       "flash.utils:clearTimeout"
     ],
-    "offset": 209448,
+    "offset": 202536,
     "length": 995
   }
 ]
\ No newline at end of file
deleted file mode 100644
--- a/browser/extensions/shumway/content/shumway-worker.js
+++ /dev/null
@@ -1,6180 +0,0 @@
-/*
- * Copyright 2013 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// This file is automatically generated
-
-(function (global) {
-  if (global.DataView)
-    return;
-  if (!global.ArrayBuffer)
-    fail('ArrayBuffer not supported');
-  if (!Object.defineProperties)
-    fail('This module requires ECMAScript 5');
-  var nativele = new Int8Array(new Int32Array([
-      1
-    ]).buffer)[0] === 1;
-  var temp = new Uint8Array(8);
-  global.DataView = function DataView(buffer, offset, length) {
-    if (!(buffer instanceof ArrayBuffer))
-      fail('Bad ArrayBuffer');
-    offset = offset || 0;
-    length = length || buffer.byteLength - offset;
-    if (offset < 0 || length < 0 || offset + length > buffer.byteLength)
-      fail('Illegal offset and/or length');
-    Object.defineProperties(this, {
-      buffer: {
-        value: buffer,
-        enumerable: false,
-        writable: false,
-        configurable: false
-      },
-      byteOffset: {
-        value: offset,
-        enumerable: false,
-        writable: false,
-        configurable: false
-      },
-      byteLength: {
-        value: length,
-        enumerable: false,
-        writable: false,
-        configurable: false
-      },
-      _bytes: {
-        value: new Uint8Array(buffer, offset, length),
-        enumerable: false,
-        writable: false,
-        configurable: false
-      }
-    });
-  };
-  global.DataView.prototype = {
-    constructor: DataView,
-    getInt8: function getInt8(offset) {
-      return get(this, Int8Array, 1, offset);
-    },
-    getUint8: function getUint8(offset) {
-      return get(this, Uint8Array, 1, offset);
-    },
-    getInt16: function getInt16(offset, le) {
-      return get(this, Int16Array, 2, offset, le);
-    },
-    getUint16: function getUint16(offset, le) {
-      return get(this, Uint16Array, 2, offset, le);
-    },
-    getInt32: function getInt32(offset, le) {
-      return get(this, Int32Array, 4, offset, le);
-    },
-    getUint32: function getUint32(offset, le) {
-      return get(this, Uint32Array, 4, offset, le);
-    },
-    getFloat32: function getFloat32(offset, le) {
-      return get(this, Float32Array, 4, offset, le);
-    },
-    getFloat64: function getFloat32(offset, le) {
-      return get(this, Float64Array, 8, offset, le);
-    },
-    setInt8: function setInt8(offset, value) {
-      set(this, Int8Array, 1, offset, value);
-    },
-    setUint8: function setUint8(offset, value) {
-      set(this, Uint8Array, 1, offset, value);
-    },
-    setInt16: function setInt16(offset, value, le) {
-      set(this, Int16Array, 2, offset, value, le);
-    },
-    setUint16: function setUint16(offset, value, le) {
-      set(this, Uint16Array, 2, offset, value, le);
-    },
-    setInt32: function setInt32(offset, value, le) {
-      set(this, Int32Array, 4, offset, value, le);
-    },
-    setUint32: function setUint32(offset, value, le) {
-      set(this, Uint32Array, 4, offset, value, le);
-    },
-    setFloat32: function setFloat32(offset, value, le) {
-      set(this, Float32Array, 4, offset, value, le);
-    },
-    setFloat64: function setFloat64(offset, value, le) {
-      set(this, Float64Array, 8, offset, value, le);
-    }
-  };
-  function get(view, type, size, offset, le) {
-    if (offset === undefined)
-      fail('Missing required offset argument');
-    if (offset < 0 || offset + size > view.byteLength)
-      fail('Invalid index: ' + offset);
-    if (size === 1 || !(!le) === nativele) {
-      if ((view.byteOffset + offset) % size === 0)
-        return new type(view.buffer, view.byteOffset + offset, 1)[0];
-      else {
-        for (var i = 0; i < size; i++)
-          temp[i] = view._bytes[offset + i];
-        return new type(temp.buffer)[0];
-      }
-    } else {
-      for (var i = 0; i < size; i++)
-        temp[size - i - 1] = view._bytes[offset + i];
-      return new type(temp.buffer)[0];
-    }
-  }
-  function set(view, type, size, offset, value, le) {
-    if (offset === undefined)
-      fail('Missing required offset argument');
-    if (value === undefined)
-      fail('Missing required value argument');
-    if (offset < 0 || offset + size > view.byteLength)
-      fail('Invalid index: ' + offset);
-    if (size === 1 || !(!le) === nativele) {
-      if ((view.byteOffset + offset) % size === 0) {
-        new type(view.buffer, view.byteOffset + offset, 1)[0] = value;
-      } else {
-        new type(temp.buffer)[0] = value;
-        for (var i = 0; i < size; i++)
-          view._bytes[i + offset] = temp[i];
-      }
-    } else {
-      new type(temp.buffer)[0] = value;
-      for (var i = 0; i < size; i++)
-        view._bytes[offset + i] = temp[size - 1 - i];
-    }
-  }
-  function fail(msg) {
-    throw new Error(msg);
-  }
-}(this));
-var create = Object.create;
-var defineProperty = Object.defineProperty;
-var keys = Object.keys;
-var isArray = Array.isArray;
-var fromCharCode = String.fromCharCode;
-var logE = Math.log;
-var max = Math.max;
-var min = Math.min;
-var pow = Math.pow;
-var push = Array.prototype.push;
-var slice = Array.prototype.slice;
-var splice = Array.prototype.splice;
-function fail(msg, context) {
-  throw new Error((context ? context + ': ' : '') + msg);
-}
-function assert(cond, msg, context) {
-  if (!cond)
-    fail(msg, context);
-}
-function scriptProperties(namespace, props) {
-  return props.reduce(function (o, p) {
-    o[p] = namespace + ' ' + p;
-    return o;
-  }, {});
-}
-function cloneObject(obj) {
-  var clone = Object.create(null);
-  for (var prop in obj)
-    clone[prop] = obj[prop];
-  return clone;
-}
-function sortNumeric(a, b) {
-  return a - b;
-}
-function sortByZindex(a, b) {
-  return a._zindex - b._zindex;
-}
-function rgbaObjToStr(color) {
-  return 'rgba(' + color.red + ',' + color.green + ',' + color.blue + ',' + color.alpha / 255 + ')';
-}
-function rgbIntAlphaToStr(color, alpha) {
-  color |= 0;
-  if (alpha >= 1) {
-    var colorStr = color.toString(16);
-    while (colorStr.length < 6) {
-      colorStr = '0' + colorStr;
-    }
-    return '#' + colorStr;
-  }
-  var red = color >> 16 & 255;
-  var green = color >> 8 & 255;
-  var blue = color & 255;
-  return 'rgba(' + red + ',' + green + ',' + blue + ',' + alpha + ')';
-}
-function argbUintToStr(argb) {
-  return 'rgba(' + (argb >>> 16 & 255) + ',' + (argb >>> 8 & 255) + ',' + (argb & 255) + ',' + (argb >>> 24 & 255) / 255 + ')';
-}
-(function functionNameSupport() {
-  if (eval('function t() {} t.name === \'t\'')) {
-    return;
-  }
-  Object.defineProperty(Function.prototype, 'name', {
-    get: function () {
-      if (this.__name) {
-        return this.__name;
-      }
-      var m = /function\s([^\(]+)/.exec(this.toString());
-      var name = m && m[1] !== 'anonymous' ? m[1] : null;
-      this.__name = name;
-      return name;
-    },
-    configurable: true,
-    enumerable: false
-  });
-}());
-var randomStyleCache;
-var nextStyle = 0;
-function randomStyle() {
-  if (!randomStyleCache) {
-    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'
-    ];
-  }
-  return randomStyleCache[nextStyle++ % randomStyleCache.length];
-}
-(function PromiseClosure() {
-  var global = Function('return this')();
-  if (global.Promise) {
-    if (typeof global.Promise.all !== 'function') {
-      global.Promise.all = function (iterable) {
-        var count = 0, results = [], resolve, reject;
-        var promise = new global.Promise(function (resolve_, reject_) {
-            resolve = resolve_;
-            reject = reject_;
-          });
-        iterable.forEach(function (p, i) {
-          count++;
-          p.then(function (result) {
-            results[i] = result;
-            count--;
-            if (count === 0) {
-              resolve(results);
-            }
-          }, reject);
-        });
-        if (count === 0) {
-          resolve(results);
-        }
-        return promise;
-      };
-    }
-    if (typeof global.Promise.resolve !== 'function') {
-      global.Promise.resolve = function (x) {
-        return new global.Promise(function (resolve) {
-          resolve(x);
-        });
-      };
-    }
-    return;
-  }
-  function getDeferred(C) {
-    if (typeof C !== 'function') {
-      throw new TypeError('Invalid deferred constructor');
-    }
-    var resolver = createDeferredConstructionFunctions();
-    var promise = new C(resolver);
-    var resolve = resolver.resolve;
-    if (typeof resolve !== 'function') {
-      throw new TypeError('Invalid resolve construction function');
-    }
-    var reject = resolver.reject;
-    if (typeof reject !== 'function') {
-      throw new TypeError('Invalid reject construction function');
-    }
-    return {
-      promise: promise,
-      resolve: resolve,
-      reject: reject
-    };
-  }
-  function updateDeferredFromPotentialThenable(x, deferred) {
-    if (typeof x !== 'object' || x === null) {
-      return false;
-    }
-    try {
-      var then = x.then;
-      if (typeof then !== 'function') {
-        return false;
-      }
-      var thenCallResult = then.call(x, deferred.resolve, deferred.reject);
-    } catch (e) {
-      var reject = deferred.reject;
-      reject(e);
-    }
-    return true;
-  }
-  function isPromise(x) {
-    return typeof x === 'object' && x !== null && typeof x.promiseStatus !== 'undefined';
-  }
-  function rejectPromise(promise, reason) {
-    if (promise.promiseStatus !== 'unresolved') {
-      return;
-    }
-    var reactions = promise.rejectReactions;
-    promise.result = reason;
-    promise.resolveReactions = undefined;
-    promise.rejectReactions = undefined;
-    promise.promiseStatus = 'has-rejection';
-    triggerPromiseReactions(reactions, reason);
-  }
-  function resolvePromise(promise, resolution) {
-    if (promise.promiseStatus !== 'unresolved') {
-      return;
-    }
-    var reactions = promise.resolveReactions;
-    promise.result = resolution;
-    promise.resolveReactions = undefined;
-    promise.rejectReactions = undefined;
-    promise.promiseStatus = 'has-resolution';
-    triggerPromiseReactions(reactions, resolution);
-  }
-  function triggerPromiseReactions(reactions, argument) {
-    for (var i = 0; i < reactions.length; i++) {
-      queueMicrotask({
-        reaction: reactions[i],
-        argument: argument
-      });
-    }
-  }
-  function queueMicrotask(task) {
-    if (microtasksQueue.length === 0) {
-      setTimeout(handleMicrotasksQueue, 0);
-    }
-    microtasksQueue.push(task);
-  }
-  function executePromiseReaction(reaction, argument) {
-    var deferred = reaction.deferred;
-    var handler = reaction.handler;
-    var handlerResult, updateResult;
-    try {
-      handlerResult = handler(argument);
-    } catch (e) {
-      var reject = deferred.reject;
-      return reject(e);
-    }
-    if (handlerResult === deferred.promise) {
-      var reject = deferred.reject;
-      return reject(new TypeError('Self resolution'));
-    }
-    try {
-      updateResult = updateDeferredFromPotentialThenable(handlerResult, deferred);
-      if (!updateResult) {
-        var resolve = deferred.resolve;
-        return resolve(handlerResult);
-      }
-    } catch (e) {
-      var reject = deferred.reject;
-      return reject(e);
-    }
-  }
-  var microtasksQueue = [];
-  function handleMicrotasksQueue() {
-    while (microtasksQueue.length > 0) {
-      var task = microtasksQueue[0];
-      try {
-        executePromiseReaction(task.reaction, task.argument);
-      } catch (e) {
-        if (typeof Promise.onerror === 'function') {
-          Promise.onerror(e);
-        }
-      }
-      microtasksQueue.shift();
-    }
-  }
-  function throwerFunction(e) {
-    throw e;
-  }
-  function identityFunction(x) {
-    return x;
-  }
-  function createRejectPromiseFunction(promise) {
-    return function (reason) {
-      rejectPromise(promise, reason);
-    };
-  }
-  function createResolvePromiseFunction(promise) {
-    return function (resolution) {
-      resolvePromise(promise, resolution);
-    };
-  }
-  function createDeferredConstructionFunctions() {
-    var fn = function (resolve, reject) {
-      fn.resolve = resolve;
-      fn.reject = reject;
-    };
-    return fn;
-  }
-  function createPromiseResolutionHandlerFunctions(promise, fulfillmentHandler, rejectionHandler) {
-    return function (x) {
-      if (x === promise) {
-        return rejectionHandler(new TypeError('Self resolution'));
-      }
-      var cstr = promise.promiseConstructor;
-      if (isPromise(x)) {
-        var xConstructor = x.promiseConstructor;
-        if (xConstructor === cstr) {
-          return x.then(fulfillmentHandler, rejectionHandler);
-        }
-      }
-      var deferred = getDeferred(cstr);
-      var updateResult = updateDeferredFromPotentialThenable(x, deferred);
-      if (updateResult) {
-        var deferredPromise = deferred.promise;
-        return deferredPromise.then(fulfillmentHandler, rejectionHandler);
-      }
-      return fulfillmentHandler(x);
-    };
-  }
-  function createPromiseAllCountdownFunction(index, values, deferred, countdownHolder) {
-    return function (x) {
-      values[index] = x;
-      countdownHolder.countdown--;
-      if (countdownHolder.countdown === 0) {
-        deferred.resolve(values);
-      }
-    };
-  }
-  function Promise(resolver) {
-    if (typeof resolver !== 'function') {
-      throw new TypeError('resolver is not a function');
-    }
-    var promise = this;
-    if (typeof promise !== 'object') {
-      throw new TypeError('Promise to initialize is not an object');
-    }
-    promise.promiseStatus = 'unresolved';
-    promise.resolveReactions = [];
-    promise.rejectReactions = [];
-    promise.result = undefined;
-    var resolve = createResolvePromiseFunction(promise);
-    var reject = createRejectPromiseFunction(promise);
-    try {
-      var result = resolver(resolve, reject);
-    } catch (e) {
-      rejectPromise(promise, e);
-    }
-    promise.promiseConstructor = Promise;
-    return promise;
-  }
-  Promise.all = function (iterable) {
-    var deferred = getDeferred(this);
-    var values = [];
-    var countdownHolder = {
-        countdown: 0
-      };
-    var index = 0;
-    iterable.forEach(function (nextValue) {
-      var nextPromise = this.cast(nextValue);
-      var fn = createPromiseAllCountdownFunction(index, values, deferred, countdownHolder);
-      nextPromise.then(fn, deferred.reject);
-      index++;
-      countdownHolder.countdown++;
-    }, this);
-    if (index === 0) {
-      deferred.resolve(values);
-    }
-    return deferred.promise;
-  };
-  Promise.cast = function (x) {
-    if (isPromise(x)) {
-      return x;
-    }
-    var deferred = getDeferred(this);
-    deferred.resolve(x);
-    return deferred.promise;
-  };
-  Promise.reject = function (r) {
-    var deferred = getDeferred(this);
-    var rejectResult = deferred.reject(r);
-    return deferred.promise;
-  };
-  Promise.resolve = function (x) {
-    var deferred = getDeferred(this);
-    var rejectResult = deferred.resolve(x);
-    return deferred.promise;
-  };
-  Promise.prototype = {
-    'catch': function (onRejected) {
-      this.then(undefined, onRejected);
-    },
-    then: function (onFulfilled, onRejected) {
-      var promise = this;
-      if (!isPromise(promise)) {
-        throw new TypeError('this is not a Promises');
-      }
-      var cstr = promise.promiseConstructor;
-      var deferred = getDeferred(cstr);
-      var rejectionHandler = typeof onRejected === 'function' ? onRejected : throwerFunction;
-      var fulfillmentHandler = typeof onFulfilled === 'function' ? onFulfilled : identityFunction;
-      var resolutionHandler = createPromiseResolutionHandlerFunctions(promise, fulfillmentHandler, rejectionHandler);
-      var resolveReaction = {
-          deferred: deferred,
-          handler: resolutionHandler
-        };
-      var rejectReaction = {
-          deferred: deferred,
-          handler: rejectionHandler
-        };
-      switch (promise.promiseStatus) {
-      case 'unresolved':
-        promise.resolveReactions.push(resolveReaction);
-        promise.rejectReactions.push(rejectReaction);
-        break;
-      case 'has-resolution':
-        var resolution = promise.result;
-        queueMicrotask({
-          reaction: resolveReaction,
-          argument: resolution
-        });
-        break;
-      case 'has-rejection':
-        var rejection = promise.result;
-        queueMicrotask({
-          reaction: rejectReaction,
-          argument: rejection
-        });
-        break;
-      }
-      return deferred.promise;
-    }
-  };
-  global.Promise = Promise;
-}());
-var QuadTree = function (x, y, width, height, parent) {
-  this.x = x | 0;
-  this.y = y | 0;
-  this.width = width | 0;
-  this.height = height | 0;
-  if (parent) {
-    this.root = parent.root;
-    this.parent = parent;
-    this.level = parent.level + 1;
-  } else {
-    this.root = this;
-    this.parent = null;
-    this.level = 0;
-  }
-  this.reset();
-};
-QuadTree.prototype.reset = function () {
-  this.stuckObjects = null;
-  this.objects = null;
-  this.nodes = [];
-};
-QuadTree.prototype._findIndex = function (xMin, xMax, yMin, yMax) {
-  var midX = this.x + (this.width / 2 | 0);
-  var midY = this.y + (this.height / 2 | 0);
-  var top = yMin < midY && yMax < midY;
-  var bottom = yMin > midY;
-  if (xMin < midX && xMax < midX) {
-    if (top) {
-      return 1;
-    } else if (bottom) {
-      return 2;
-    }
-  } else if (xMin > midX) {
-    if (top) {
-      return 0;
-    } else if (bottom) {
-      return 3;
-    }
-  }
-  return -1;
-};
-QuadTree.prototype.insert = function (obj) {
-  var nodes = this.nodes;
-  if (nodes.length) {
-    var index = this._findIndex(obj.xMin, obj.xMax, obj.yMin, obj.yMax);
-    if (index > -1) {
-      nodes[index].insert(obj);
-    } else {
-      obj.prev = null;
-      if (this.stuckObjects) {
-        obj.next = this.stuckObjects;
-        this.stuckObjects.prev = obj;
-      } else {
-        obj.next = null;
-      }
-      this.stuckObjects = obj;
-      obj.parent = this;
-    }
-    return;
-  }
-  var numChildren = 1;
-  var item = this.objects;
-  if (!item) {
-    obj.prev = null;
-    obj.next = null;
-    this.objects = obj;
-  } else {
-    while (item.next) {
-      numChildren++;
-      item = item.next;
-    }
-    obj.prev = item;
-    obj.next = null;
-    item.next = obj;
-  }
-  if (numChildren > 4 && this.level < 10) {
-    this._subdivide();
-    item = this.objects;
-    while (item) {
-      var next = item.next;
-      this.insert(item);
-      item = next;
-    }
-    this.objects = null;
-    return;
-  }
-  obj.parent = this;
-};
-QuadTree.prototype.update = function (obj) {
-  var node = obj.parent;
-  if (node) {
-    if (obj.xMin >= node.x && obj.xMax <= node.x + node.width && obj.yMin >= node.y && obj.yMax <= node.y + node.height) {
-      if (node.nodes.length) {
-        var index = this._findIndex(obj.xMin, obj.xMax, obj.yMin, obj.yMax);
-        if (index > -1) {
-          node.remove(obj);
-          node = this.nodes[index];
-          node.insert(obj);
-        }
-      } else {
-        node.remove(obj);
-        node.insert(obj);
-      }
-      return;
-    }
-    node.remove(obj);
-  }
-  this.root.insert(obj);
-};
-QuadTree.prototype.remove = function (obj) {
-  var prev = obj.prev;
-  var next = obj.next;
-  if (prev) {
-    prev.next = next;
-    obj.prev = null;
-  } else {
-    var node = obj.parent;
-    if (node.objects === obj) {
-      node.objects = next;
-    } else if (node.stuckObjects === obj) {
-      node.stuckObjects = next;
-    }
-  }
-  if (next) {
-    next.prev = prev;
-    obj.next = null;
-  }
-  obj.parent = null;
-};
-QuadTree.prototype.retrieve = function (xMin, xMax, yMin, yMax) {
-  var stack = [];
-  var out = [];
-  var node = this;
-  do {
-    if (node.nodes.length) {
-      var index = node._findIndex(xMin, xMax, yMin, yMax);
-      if (index > -1) {
-        stack.push(node.nodes[index]);
-      } else {
-        stack.push.apply(stack, node.nodes);
-      }
-    }
-    var item = node.objects;
-    for (var i = 0; i < 2; i++) {
-      while (item) {
-        if (!(item.xMin > xMax || item.xMax < xMin || item.yMin > yMax || item.yMax < yMin)) {
-          out.push(item);
-        }
-        item = item.next;
-      }
-      item = node.stuckObjects;
-    }
-    node = stack.pop();
-  } while (node);
-  return out;
-};
-QuadTree.prototype._subdivide = function () {
-  var halfWidth = this.width / 2 | 0;
-  var halfHeight = this.height / 2 | 0;
-  var midX = this.x + halfWidth;
-  var midY = this.y + halfHeight;
-  this.nodes[0] = new QuadTree(midX, this.y, halfWidth, halfHeight, this);
-  this.nodes[1] = new QuadTree(this.x, this.y, halfWidth, halfHeight, this);
-  this.nodes[2] = new QuadTree(this.x, midY, halfWidth, halfHeight, this);
-  this.nodes[3] = new QuadTree(midX, midY, halfWidth, halfHeight, this);
-};
-var RegionCluster = function () {
-  this.regions = [];
-};
-RegionCluster.prototype.reset = function () {
-  this.regions.length = 0;
-};
-RegionCluster.prototype.insert = function (region) {
-  var regions = this.regions;
-  if (regions.length < 3) {
-    regions.push({
-      xMin: region.xMin,
-      xMax: region.xMax,
-      yMin: region.yMin,
-      yMax: region.yMax
-    });
-    return;
-  }
-  var a = region;
-  var b = regions[0];
-  var c = regions[1];
-  var d = regions[2];
-  var ab = (max(a.xMax, b.xMax) - min(a.xMin, b.xMin)) * (max(a.yMax, b.yMax) - min(a.yMin, b.yMin));
-  var rb = regions[0];
-  var ac = (max(a.xMax, c.xMax) - min(a.xMin, c.xMin)) * (max(a.yMax, c.yMax) - min(a.yMin, c.yMin));
-  var ad = (max(a.xMax, d.xMax) - min(a.xMin, d.xMin)) * (max(a.yMax, d.yMax) - min(a.yMin, d.yMin));
-  if (ac < ab) {
-    ab = ac;
-    rb = c;
-  }
-  if (ad < ab) {
-    ab = ad;
-    rb = d;
-  }
-  var bc = (max(b.xMax, c.xMax) - min(b.xMin, c.xMin)) * (max(b.yMax, c.yMax) - min(b.yMin, c.yMin));
-  var bd = (max(b.xMax, d.xMax) - min(b.xMin, d.xMin)) * (max(b.yMax, d.yMax) - min(b.yMin, d.yMin));
-  var cd = (max(c.xMax, d.xMax) - min(c.xMin, d.xMin)) * (max(c.yMax, d.yMax) - min(c.yMin, d.yMin));
-  if (ab < bc && ab < bd && ab < cd) {
-    if (a.xMin < rb.xMin) {
-      rb.xMin = a.xMin;
-    }
-    if (a.xMax > rb.xMax) {
-      rb.xMax = a.xMax;
-    }
-    if (a.yMin < rb.yMin) {
-      rb.yMin = a.yMin;
-    }
-    if (a.yMax > rb.yMax) {
-      rb.yMax = a.yMax;
-    }
-    return;
-  }
-  rb = regions[0];
-  var rc = regions[1];
-  if (bd < bc) {
-    bc = bd;
-    rc = regions[2];
-  }
-  if (cd < bc) {
-    rb = regions[1];
-    rc = regions[2];
-  }
-  if (rc.xMin < rb.xMin) {
-    rb.xMin = rc.xMin;
-  }
-  if (rc.xMax > rb.xMax) {
-    rb.xMax = rc.xMax;
-  }
-  if (rc.yMin < rb.yMin) {
-    rb.yMin = rc.yMin;
-  }
-  if (rc.yMax > rb.yMax) {
-    rb.yMax = rc.yMax;
-  }
-  rc.xMin = a.xMin;
-  rc.xMax = a.xMax;
-  rc.yMin = a.yMin;
-  rc.yMax = a.yMax;
-};
-RegionCluster.prototype.retrieve = function () {
-  return this.regions;
-};
-var EXTERNAL_INTERFACE_FEATURE = 1;
-var CLIPBOARD_FEATURE = 2;
-var SHAREDOBJECT_FEATURE = 3;
-var VIDEO_FEATURE = 4;
-var SOUND_FEATURE = 5;
-var NETCONNECTION_FEATURE = 6;
-if (!this.performance) {
-  this.performance = {};
-}
-if (!this.performance.now) {
-  this.performance.now = Date.now;
-}
-var SWF_TAG_CODE_CSM_TEXT_SETTINGS = 74;
-var SWF_TAG_CODE_DEFINE_BINARY_DATA = 87;
-var SWF_TAG_CODE_DEFINE_BITS = 6;
-var SWF_TAG_CODE_DEFINE_BITS_JPEG2 = 21;
-var SWF_TAG_CODE_DEFINE_BITS_JPEG3 = 35;
-var SWF_TAG_CODE_DEFINE_BITS_JPEG4 = 90;
-var SWF_TAG_CODE_DEFINE_BITS_LOSSLESS = 20;
-var SWF_TAG_CODE_DEFINE_BITS_LOSSLESS2 = 36;
-var SWF_TAG_CODE_DEFINE_BUTTON = 7;
-var SWF_TAG_CODE_DEFINE_BUTTON2 = 34;
-var SWF_TAG_CODE_DEFINE_BUTTON_CXFORM = 23;
-var SWF_TAG_CODE_DEFINE_BUTTON_SOUND = 17;
-var SWF_TAG_CODE_DEFINE_EDIT_TEXT = 37;
-var SWF_TAG_CODE_DEFINE_FONT = 10;
-var SWF_TAG_CODE_DEFINE_FONT2 = 48;
-var SWF_TAG_CODE_DEFINE_FONT3 = 75;
-var SWF_TAG_CODE_DEFINE_FONT4 = 91;
-var SWF_TAG_CODE_DEFINE_FONT_ALIGN_ZONES = 73;
-var SWF_TAG_CODE_DEFINE_FONT_INFO = 13;
-var SWF_TAG_CODE_DEFINE_FONT_INFO2 = 62;
-var SWF_TAG_CODE_DEFINE_FONT_NAME = 88;
-var SWF_TAG_CODE_DEFINE_MORPH_SHAPE = 46;
-var SWF_TAG_CODE_DEFINE_MORPH_SHAPE2 = 84;
-var SWF_TAG_CODE_DEFINE_SCALING_GRID = 78;
-var SWF_TAG_CODE_DEFINE_SCENE_AND_FRAME_LABEL_DATA = 86;
-var SWF_TAG_CODE_DEFINE_SHAPE = 2;
-var SWF_TAG_CODE_DEFINE_SHAPE2 = 22;
-var SWF_TAG_CODE_DEFINE_SHAPE3 = 32;
-var SWF_TAG_CODE_DEFINE_SHAPE4 = 83;
-var SWF_TAG_CODE_DEFINE_SOUND = 14;
-var SWF_TAG_CODE_DEFINE_SPRITE = 39;
-var SWF_TAG_CODE_DEFINE_TEXT = 11;
-var SWF_TAG_CODE_DEFINE_TEXT2 = 33;
-var SWF_TAG_CODE_DEFINE_VIDEO_STREAM = 60;
-var SWF_TAG_CODE_DO_ABC = 82;
-var SWF_TAG_CODE_DO_ABC_ = 72;
-var SWF_TAG_CODE_DO_ACTION = 12;
-var SWF_TAG_CODE_DO_INIT_ACTION = 59;
-var SWF_TAG_CODE_ENABLE_DEBUGGER = 58;
-var SWF_TAG_CODE_ENABLE_DEBUGGER2 = 64;
-var SWF_TAG_CODE_END = 0;
-var SWF_TAG_CODE_EXPORT_ASSETS = 56;
-var SWF_TAG_CODE_FILE_ATTRIBUTES = 69;
-var SWF_TAG_CODE_FRAME_LABEL = 43;
-var SWF_TAG_CODE_IMPORT_ASSETS = 57;
-var SWF_TAG_CODE_IMPORT_ASSETS2 = 71;
-var SWF_TAG_CODE_JPEG_TABLES = 8;
-var SWF_TAG_CODE_METADATA = 77;
-var SWF_TAG_CODE_PLACE_OBJECT = 4;
-var SWF_TAG_CODE_PLACE_OBJECT2 = 26;
-var SWF_TAG_CODE_PLACE_OBJECT3 = 70;
-var SWF_TAG_CODE_PROTECT = 24;
-var SWF_TAG_CODE_REMOVE_OBJECT = 5;
-var SWF_TAG_CODE_REMOVE_OBJECT2 = 28;
-var SWF_TAG_CODE_SCRIPT_LIMITS = 65;
-var SWF_TAG_CODE_SET_BACKGROUND_COLOR = 9;
-var SWF_TAG_CODE_SET_TAB_INDEX = 66;
-var SWF_TAG_CODE_SHOW_FRAME = 1;
-var SWF_TAG_CODE_SOUND_STREAM_BLOCK = 19;
-var SWF_TAG_CODE_SOUND_STREAM_HEAD = 18;
-var SWF_TAG_CODE_SOUND_STREAM_HEAD2 = 45;
-var SWF_TAG_CODE_START_SOUND = 15;
-var SWF_TAG_CODE_START_SOUND2 = 89;
-var SWF_TAG_CODE_SYMBOL_CLASS = 76;
-var SWF_TAG_CODE_VIDEO_FRAME = 61;
-self.SWF = {};
-var FORMAT_COLORMAPPED = 3;
-var FORMAT_15BPP = 4;
-var FORMAT_24BPP = 5;
-var FACTOR_5BBP = 255 / 31;
-var crcTable = [];
-for (var i = 0; i < 256; i++) {
-  var c = i;
-  for (var h = 0; h < 8; h++) {
-    if (c & 1)
-      c = 3988292384 ^ c >> 1 & 2147483647;
-    else
-      c = c >> 1 & 2147483647;
-  }
-  crcTable[i] = c;
-}
-function crc32(data, start, end) {
-  var crc = -1;
-  for (var i = start; i < end; i++) {
-    var a = (crc ^ data[i]) & 255;
-    var b = crcTable[a];
-    crc = crc >>> 8 ^ b;
-  }
-  return crc ^ -1;
-}
-function createPngChunk(type, data) {
-  var chunk = new Uint8Array(12 + data.length);
-  var p = 0;
-  var len = data.length;
-  chunk[p] = len >> 24 & 255;
-  chunk[p + 1] = len >> 16 & 255;
-  chunk[p + 2] = len >> 8 & 255;
-  chunk[p + 3] = len & 255;
-  chunk[p + 4] = type.charCodeAt(0) & 255;
-  chunk[p + 5] = type.charCodeAt(1) & 255;
-  chunk[p + 6] = type.charCodeAt(2) & 255;
-  chunk[p + 7] = type.charCodeAt(3) & 255;
-  if (data instanceof Uint8Array)
-    chunk.set(data, 8);
-  p = 8 + len;
-  var crc = crc32(chunk, 4, p);
-  chunk[p] = crc >> 24 & 255;
-  chunk[p + 1] = crc >> 16 & 255;
-  chunk[p + 2] = crc >> 8 & 255;
-  chunk[p + 3] = crc & 255;
-  return chunk;
-}
-function adler32(data, start, end) {
-  var a = 1;
-  var b = 0;
-  for (var i = start; i < end; ++i) {
-    a = (a + (data[i] & 255)) % 65521;
-    b = (b + a) % 65521;
-  }
-  return b << 16 | a;
-}
-function defineBitmap(tag) {
-  var width = tag.width;
-  var height = tag.height;
-  var hasAlpha = tag.hasAlpha;
-  var plte = '';
-  var trns = '';
-  var literals;
-  var bmpData = tag.bmpData;
-  switch (tag.format) {
-  case FORMAT_COLORMAPPED:
-    var colorType = 3;
-    var bytesPerLine = width + 3 & ~3;
-    var colorTableSize = tag.colorTableSize + 1;
-    var paletteSize = colorTableSize * (tag.hasAlpha ? 4 : 3);
-    var datalen = paletteSize + bytesPerLine * height;
-    var stream = createInflatedStream(bmpData, datalen);
-    var bytes = stream.bytes;
-    var pos = 0;
-    stream.ensure(paletteSize);
-    if (hasAlpha) {
-      var palette = new Uint8Array(paletteSize / 4 * 3);
-      var pp = 0;
-      var alphaValues = new Uint8Array(paletteSize / 4);
-      var pa = 0;
-      while (pos < paletteSize) {
-        palette[pp++] = bytes[pos];
-        palette[pp++] = bytes[pos + 1];
-        palette[pp++] = bytes[pos + 2];
-        alphaValues[pa++] = bytes[pos + 3];
-        pos += 4;
-      }
-      plte = createPngChunk('PLTE', palette);
-      trns = createPngChunk('tRNS', alphaValues);
-    } else {
-      plte = createPngChunk('PLTE', bytes.subarray(pos, pos + paletteSize));
-      pos += paletteSize;
-    }
-    literals = new Uint8Array(width * height + height);
-    var pl = 0;
-    while (pos < datalen) {
-      stream.ensure(bytesPerLine);
-      var begin = pos;
-      var end = begin + width;
-      pl++;
-      literals.set(bytes.subarray(begin, end), pl);
-      pl += end - begin;
-      stream.pos = pos += bytesPerLine;
-    }
-    break;
-  case FORMAT_15BPP:
-    var colorType = 2;
-    var bytesPerLine = width * 2 + 3 & ~3;
-    var stream = createInflatedStream(bmpData, bytesPerLine * height);
-    var pos = 0;
-    literals = new Uint8Array(width * height * 3 + height);
-    var pl = 0;
-    for (var y = 0; y < height; ++y) {
-      pl++;
-      stream.ensure(bytesPerLine);
-      for (var x = 0; x < width; ++x) {
-        var word = stream.getUint16(pos);
-        pos += 2;
-        literals[pl++] = 0 | FACTOR_5BBP * (word >> 10 & 31);
-        literals[pl++] = 0 | FACTOR_5BBP * (word >> 5 & 31);
-        literals[pl++] = 0 | FACTOR_5BBP * (word & 31);
-      }
-      stream.pos = pos += bytesPerLine;
-    }
-    break;
-  case FORMAT_24BPP:
-    var padding;
-    if (hasAlpha) {
-      var colorType = 6;
-      padding = 0;
-      literals = new Uint8Array(width * height * 4 + height);
-    } else {
-      var colorType = 2;
-      padding = 1;
-      literals = new Uint8Array(width * height * 3 + height);
-    }
-    var bytesPerLine = width * 4;
-    var stream = createInflatedStream(bmpData, bytesPerLine * height);
-    var bytes = stream.bytes;
-    var pos = 0;
-    var pl = 0;
-    for (var y = 0; y < height; ++y) {
-      stream.ensure(bytesPerLine);
-      pl++;
-      for (var x = 0; x < width; ++x) {
-        pos += padding;
-        if (hasAlpha) {
-          var alpha = bytes[pos];
-          if (alpha) {
-            var opacity = alpha / 255;
-            literals[pl++] = 0 | bytes[pos + 1] / opacity;
-            literals[pl++] = 0 | bytes[pos + 2] / opacity;
-            literals[pl++] = 0 | bytes[pos + 3] / opacity;
-            literals[pl++] = alpha;
-          } else {
-            pl += 4;
-          }
-        } else {
-          literals[pl++] = bytes[pos];
-          literals[pl++] = bytes[pos + 1];
-          literals[pl++] = bytes[pos + 2];
-        }
-        pos += 4 - padding;
-      }
-      stream.pos = pos;
-    }
-    break;
-  default:
-    fail('invalid format', 'bitmap');
-  }
-  var ihdr = new Uint8Array([
-      width >> 24 & 255,
-      width >> 16 & 255,
-      width >> 8 & 255,
-      width & 255,
-      height >> 24 & 255,
-      height >> 16 & 255,
-      height >> 8 & 255,
-      height & 255,
-      8,
-      colorType,
-      0,
-      0,
-      0
-    ]);
-  var len = literals.length;
-  var maxBlockLength = 65535;
-  var idat = new Uint8Array(2 + len + Math.ceil(len / maxBlockLength) * 5 + 4);
-  var pi = 0;
-  idat[pi++] = 120;
-  idat[pi++] = 156;
-  var pos = 0;
-  while (len > maxBlockLength) {
-    idat[pi++] = 0;
-    idat[pi++] = 255;
-    idat[pi++] = 255;
-    idat[pi++] = 0;
-    idat[pi++] = 0;
-    idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
-    pi += maxBlockLength;
-    pos += maxBlockLength;
-    len -= maxBlockLength;
-  }
-  idat[pi++] = 1;
-  idat[pi++] = len & 255;
-  idat[pi++] = len >> 8 & 255;
-  idat[pi++] = ~len & 65535 & 255;
-  idat[pi++] = (~len & 65535) >> 8 & 255;
-  idat.set(literals.subarray(pos), pi);
-  pi += literals.length - pos;
-  var adler = adler32(literals, 0, literals.length);
-  idat[pi++] = adler >> 24 & 255;
-  idat[pi++] = adler >> 16 & 255;
-  idat[pi++] = adler >> 8 & 255;
-  idat[pi++] = adler & 255;
-  var chunks = [
-      new Uint8Array([
-        137,
-        80,
-        78,
-        71,
-        13,
-        10,
-        26,
-        10
-      ]),
-      createPngChunk('IHDR', ihdr),
-      plte,
-      trns,
-      createPngChunk('IDAT', idat),
-      createPngChunk('IEND', '')
-    ];
-  return {
-    type: 'image',
-    id: tag.id,
-    width: width,
-    height: height,
-    mimeType: 'image/png',
-    data: new Blob(chunks, {
-      type: 'image/png'
-    })
-  };
-}
-function defineButton(tag, dictionary) {
-  var characters = tag.characters;
-  var states = {
-      up: {},
-      over: {},
-      down: {},
-      hitTest: {}
-    };
-  var i = 0, character;
-  while (character = characters[i++]) {
-    if (character.eob)
-      break;
-    var characterItem = dictionary[character.symbolId];
-    var entry = {
-        symbolId: characterItem.id,
-        hasMatrix: !(!character.matrix),
-        matrix: character.matrix
-      };
-    if (character.stateUp)
-      states.up[character.depth] = entry;
-    if (character.stateOver)
-      states.over[character.depth] = entry;
-    if (character.stateDown)
-      states.down[character.depth] = entry;
-    if (character.stateHitTest)
-      states.hitTest[character.depth] = entry;
-  }
-  var button = {
-      type: 'button',
-      id: tag.id,
-      buttonActions: tag.buttonActions,
-      states: states
-    };
-  return button;
-}
-var nextFontId = 1;
-function maxPower2(num) {
-  var maxPower = 0;
-  var val = num;
-  while (val >= 2) {
-    val /= 2;
-    ++maxPower;
-  }
-  return pow(2, maxPower);
-}
-function toString16(val) {
-  return fromCharCode(val >> 8 & 255, val & 255);
-}
-function toString32(val) {
-  return toString16(val >> 16) + toString16(val);
-}
-function defineFont(tag, dictionary) {
-  var tables = {};
-  var codes = [];
-  var glyphIndex = {};
-  var ranges = [];
-  var glyphs = tag.glyphs;
-  var glyphCount = glyphs.length;
-  if (tag.codes) {
-    codes = codes.concat(tag.codes);
-    for (var i = 0, code; code = codes[i]; ++i)
-      glyphIndex[code] = i;
-    codes.sort(function (a, b) {
-      return a - b;
-    });
-    var i = 0;
-    var code;
-    while (code = codes[i++]) {
-      var start = code;
-      var end = start;
-      var indices = [
-          i - 1
-        ];
-      while ((code = codes[i]) && end + 1 === code) {
-        ++end;
-        indices.push(i);
-        ++i;
-      }
-      ranges.push([
-        start,
-        end,
-        indices
-      ]);
-    }
-  } else {
-    var indices = [];
-    var UAC_OFFSET = 57344;
-    for (var i = 0; i < glyphCount; i++) {
-      var code = UAC_OFFSET + i;
-      codes.push(code);
-      glyphIndex[code] = i;
-      indices.push(i);
-    }
-    ranges.push([
-      UAC_OFFSET,
-      UAC_OFFSET + glyphCount - 1,
-      indices
-    ]);
-  }
-  var resolution = tag.resolution || 1;
-  var ascent = Math.ceil(tag.ascent / resolution) || 1024;
-  var descent = -Math.ceil(tag.descent / resolution) | 0;
-  var leading = tag.leading / resolution | 0;
-  tables['OS/2'] = '\0\x01\0\0' + toString16(tag.bold ? 700 : 400) + '\0\x05' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0\0\0\0\0\0\0\0\0' + '\0\0\0\0' + '\0\0\0\0' + '\0\0\0\0' + '\0\0\0\0' + 'ALF ' + toString16((tag.italic ? 1 : 0) | (tag.bold ? 32 : 0)) + toString16(codes[0]) + toString16(codes[codes.length - 1]) + toString16(ascent) + toString16(descent) + toString16(leading) + toString16(ascent) + toString16(-descent) + '\0\0\0\0' + '\0\0\0\0';
-  ;
-  var startCount = '';
-  var endCount = '';
-  var idDelta = '';
-  var idRangeOffset = '';
-  var i = 0;
-  var range;
-  while (range = ranges[i++]) {
-    var start = range[0];
-    var end = range[1];
-    var code = range[2][0];
-    startCount += toString16(start);
-    endCount += toString16(end);
-    idDelta += toString16(code - start + 1 & 65535);
-    idRangeOffset += toString16(0);
-  }
-  endCount += '\xff\xff';
-  startCount += '\xff\xff';
-  idDelta += '\0\x01';
-  idRangeOffset += '\0\0';
-  var segCount = ranges.length + 1;
-  var searchRange = maxPower2(segCount) * 2;
-  var rangeShift = 2 * segCount - searchRange;
-  var format314 = '\0\0' + toString16(segCount * 2) + toString16(searchRange) + toString16(logE(segCount) / logE(2)) + toString16(rangeShift) + endCount + '\0\0' + startCount + idDelta + idRangeOffset;
-  ;
-  tables['cmap'] = '\0\0\0\x01\0\x03\0\x01\0\0\0\f\0\x04' + toString16(format314.length + 4) + format314;
-  ;
-  var glyf = '\0\x01\0\0\0\0\0\0\0\0\0\0\0\x001\0';
-  var loca = '\0\0';
-  var offset = 16;
-  var maxPoints = 0;
-  var xMins = [];
-  var xMaxs = [];
-  var yMins = [];
-  var yMaxs = [];
-  var maxContours = 0;
-  var i = 0;
-  var code;
-  while (code = codes[i++]) {
-    var glyph = glyphs[glyphIndex[code]];
-    var records = glyph.records;
-    var numberOfContours = 1;
-    var endPoint = 0;
-    var endPtsOfContours = '';
-    var flags = '';
-    var xCoordinates = '';
-    var yCoordinates = '';
-    var x = 0;
-    var y = 0;
-    var xMin = 1024;
-    var xMax = -1024;
-    var yMin = 1024;
-    var yMax = -1024;
-    for (var j = 0, record; record = records[j]; ++j) {
-      if (record.type) {
-        if (record.isStraight) {
-          if (record.isGeneral) {
-            flags += '\x01';
-            var dx = record.deltaX / resolution;
-            var dy = -record.deltaY / resolution;
-            xCoordinates += toString16(dx);
-            yCoordinates += toString16(dy);
-            x += dx;
-            y += dy;
-          } else if (record.isVertical) {
-            flags += '\x11';
-            var dy = -record.deltaY / resolution;
-            yCoordinates += toString16(dy);
-            y += dy;
-          } else {
-            flags += '!';
-            var dx = record.deltaX / resolution;
-            xCoordinates += toString16(dx);
-            x += dx;
-          }
-        } else {
-          flags += '\0';
-          var cx = record.controlDeltaX / resolution;
-          var cy = -record.controlDeltaY / resolution;
-          xCoordinates += toString16(cx);
-          yCoordinates += toString16(cy);
-          flags += '\x01';
-          var dx = record.anchorDeltaX / resolution;
-          var dy = -record.anchorDeltaY / resolution;
-          xCoordinates += toString16(dx);
-          yCoordinates += toString16(dy);
-          ++endPoint;
-          x += cx + dx;
-          y += cy + dy;
-        }
-        if (x < xMin)
-          xMin = x;
-        if (x > xMax)
-          xMax = x;
-        if (y < yMin)
-          yMin = y;
-        if (y > yMax)
-          yMax = y;
-        ++endPoint;
-      } else {
-        if (record.eos)
-          break;
-        if (record.move) {
-          if (endPoint) {
-            ++numberOfContours;
-            endPtsOfContours += toString16(endPoint - 1);
-          }
-          flags += '\x01';
-          var moveX = record.moveX / resolution;
-          var moveY = -record.moveY / resolution;
-          var dx = moveX - x;
-          var dy = moveY - y;
-          xCoordinates += toString16(dx);
-          yCoordinates += toString16(dy);
-          x = moveX;
-          y = moveY;
-          if (endPoint > maxPoints)
-            maxPoints = endPoint;
-          if (x < xMin)
-            xMin = x;
-          if (x > xMax)
-            xMax = x;
-          if (y < yMin)
-            yMin = y;
-          if (y > yMax)
-            yMax = y;
-          ++endPoint;
-        }
-      }
-    }
-    endPtsOfContours += toString16((endPoint || 1) - 1);
-    if (!j) {
-      xMin = xMax = yMin = yMax = 0;
-      flags += '1';
-    }
-    var entry = toString16(numberOfContours) + toString16(xMin) + toString16(yMin) + toString16(xMax) + toString16(yMax) + endPtsOfContours + '\0\0' + flags + xCoordinates + yCoordinates;
-    ;
-    if (entry.length & 1)
-      entry += '\0';
-    glyf += entry;
-    loca += toString16(offset / 2);
-    offset += entry.length;
-    xMins.push(xMin);
-    xMaxs.push(xMax);
-    yMins.push(yMin);
-    yMaxs.push(yMax);
-    if (numberOfContours > maxContours)
-      maxContours = numberOfContours;
-    if (endPoint > maxPoints)
-      maxPoints = endPoint;
-  }
-  loca += toString16(offset / 2);
-  tables['glyf'] = glyf;
-  tables['head'] = '\0\x01\0\0\0\x01\0\0\0\0\0\0_\x0f<\xf5\0\v\x04\0\0\0\0\0' + toString32(Date.now()) + '\0\0\0\0' + toString32(Date.now()) + toString16(min.apply(null, xMins)) + toString16(min.apply(null, yMins)) + toString16(max.apply(null, xMaxs)) + toString16(max.apply(null, yMaxs)) + toString16((tag.italic ? 2 : 0) | (tag.bold ? 1 : 0)) + '\0\b' + '\0\x02' + '\0\0' + '\0\0';
-  ;
-  var advance = tag.advance;
-  tables['hhea'] = '\0\x01\0\0' + toString16(ascent) + toString16(descent) + toString16(leading) + toString16(advance ? max.apply(null, advance) : 1024) + '\0\0' + '\0\0' + '\x03\xb8' + '\0\x01' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + toString16(glyphCount + 1);
-  ;
-  var hmtx = '\0\0\0\0';
-  for (var i = 0; i < glyphCount; ++i)
-    hmtx += toString16(advance ? advance[i] / resolution : 1024) + '\0\0';
-  tables['hmtx'] = hmtx;
-  if (tag.kerning) {
-    var kerning = tag.kerning;
-    var nPairs = kerning.length;
-    var searchRange = maxPower2(nPairs) * 2;
-    var kern = '\0\0\0\x01\0\0' + toString16(14 + nPairs * 6) + '\0\x01' + toString16(nPairs) + toString16(searchRange) + toString16(logE(nPairs) / logE(2)) + toString16(2 * nPairs - searchRange);
-    ;
-    var i = 0;
-    var record;
-    while (record = kerning[i++]) {
-      kern += toString16(glyphIndex[record.code1]) + toString16(glyphIndex[record.code2]) + toString16(record.adjustment);
-      ;
-    }
-    tables['kern'] = kern;
-  }
-  tables['loca'] = loca;
-  tables['maxp'] = '\0\x01\0\0' + toString16(glyphCount + 1) + toString16(maxPoints) + toString16(maxContours) + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0' + '\0\0';
-  ;
-  var uniqueId = 'swf-font-' + nextFontId++;
-  var fontName = tag.name || uniqueId;
-  var psName = fontName.replace(/ /g, '');
-  var strings = [
-      tag.copyright || 'Original licence',
-      fontName,
-      'Unknown',
-      uniqueId,
-      fontName,
-      '1.0',
-      psName,
-      'Unknown',
-      'Unknown',
-      'Unknown'
-    ];
-  var count = strings.length;
-  var name = '\0\0' + toString16(count) + toString16(count * 12 + 6);
-  var offset = 0;
-  var i = 0;
-  var str;
-  while (str = strings[i++]) {
-    name += '\0\x01\0\0\0\0' + toString16(i - 1) + toString16(str.length) + toString16(offset);
-    offset += str.length;
-  }
-  tables['name'] = name + strings.join('');
-  tables['post'] = '\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0';
-  ;
-  var names = keys(tables);
-  var numTables = names.length;
-  var header = '\0\x01\0\0' + toString16(numTables) + '\0\x80' + '\0\x03' + '\0 ';
-  ;
-  var data = '';
-  var offset = numTables * 16 + header.length;
-  var i = 0;
-  var name;
-  while (name = names[i++]) {
-    var table = tables[name];
-    var length = table.length;
-    header += name + '\0\0\0\0' + toString32(offset) + toString32(length);
-    ;
-    while (length & 3) {
-      table += '\0';
-      ++length;
-    }
-    data += table;
-    while (offset & 3)
-      ++offset;
-    offset += length;
-  }
-  var otf = header + data;
-  var unitPerEm = 1024;
-  var metrics = {
-      ascent: ascent / unitPerEm,
-      descent: -descent / unitPerEm,
-      leading: leading / unitPerEm
-    };
-  return {
-    type: 'font',
-    id: tag.id,
-    name: fontName,
-    uniqueName: psName + uniqueId,
-    codes: codes,
-    metrics: metrics,
-    bold: tag.bold === 1,
-    italic: tag.italic === 1,
-    data: otf
-  };
-}
-function getUint16(buff, pos) {
-  return buff[pos] << 8 | buff[pos + 1];
-}
-function parseJpegChunks(imgDef, bytes) {
-  var i = 0;
-  var n = bytes.length;
-  var chunks = [];
-  var code;
-  do {
-    var begin = i;
-    while (i < n && bytes[i] !== 255)
-      ++i;
-    while (i < n && bytes[i] === 255)
-      ++i;
-    code = bytes[i++];
-    if (code === 218) {
-      i = n;
-    } else if (code === 217) {
-      i += 2;
-      continue;
-    } else if (code < 208 || code > 216) {
-      var length = getUint16(bytes, i);
-      if (code >= 192 && code <= 195) {
-        imgDef.height = getUint16(bytes, i + 3);
-        imgDef.width = getUint16(bytes, i + 5);
-      }
-      i += length;
-    }
-    chunks.push(bytes.subarray(begin, i));
-  } while (i < n);
-  return chunks;
-}
-function defineImage(tag, dictionary) {
-  var img = {
-      type: 'image',
-      id: tag.id,
-      mimeType: tag.mimeType
-    };
-  var imgData = tag.imgData;
-  var chunks;
-  if (tag.mimeType === 'image/jpeg') {
-    chunks = parseJpegChunks(img, imgData);
-    var alphaData = tag.alphaData;
-    if (alphaData) {
-      img.mask = createInflatedStream(alphaData, img.width * img.height).bytes;
-    }
-    if (tag.incomplete) {
-      var tables = dictionary[0];
-      var header = tables.data;
-      if (header && header.size) {
-        chunks[0] = chunks[0].subarray(2);
-        chunks.unshift(header.slice(0, header.size - 2));
-      }
-    }
-  } else {
-    chunks = [
-      imgData
-    ];
-  }
-  img.data = new Blob(chunks, {
-    type: tag.mimeType
-  });
-  return img;
-}
-function defineLabel(tag, dictionary) {
-  var records = tag.records;
-  var m = tag.matrix;
-  var cmds = [
-      'c.save()',
-      'c.transform(' + [
-        m.a,
-        m.b,
-        m.c,
-        m.d,
-        m.tx / 20,
-        m.ty / 20
-      ].join(',') + ')',
-      'c.scale(0.05, 0.05)'
-    ];
-  var dependencies = [];
-  var x = 0;
-  var y = 0;
-  var i = 0;
-  var record;
-  var codes;
-  while (record = records[i++]) {
-    if (record.eot)
-      break;
-    if (record.hasFont) {
-      var font = dictionary[record.fontId];
-      codes = font.codes;
-      cmds.push('c.font="' + record.fontHeight + 'px \'' + font.uniqueName + '\'"');
-      dependencies.push(font.id);
-    }
-    if (record.hasColor) {
-      cmds.push('ct.setFillStyle(c,"' + rgbaObjToStr(record.color) + '")');
-      cmds.push('ct.setAlpha(c)');
-    } else {
-      cmds.push('ct.setAlpha(c,true)');
-    }
-    if (record.hasMoveX)
-      x = record.moveX;
-    if (record.hasMoveY)
-      y = record.moveY;
-    var entries = record.entries;
-    var j = 0;
-    var entry;
-    while (entry = entries[j++]) {
-      var code = codes[entry.glyphIndex];
-      var text = code >= 32 && code != 34 && code != 92 ? fromCharCode(code) : '\\u' + (code + 65536).toString(16).substring(1);
-      cmds.push('c.fillText("' + text + '",' + x + ',' + y + ')');
-      x += entry.advance;
-    }
-  }
-  cmds.push('c.restore()');
-  var label = {
-      type: 'label',
-      id: tag.id,
-      bbox: tag.bbox,
-      data: cmds.join('\n')
-    };
-  if (dependencies.length)
-    label.require = dependencies;
-  return label;
-}
-var GRAPHICS_FILL_CLIPPED_BITMAP = 65;
-var GRAPHICS_FILL_FOCAL_RADIAL_GRADIENT = 19;
-var GRAPHICS_FILL_LINEAR_GRADIENT = 16;
-var GRAPHICS_FILL_NONSMOOTHED_CLIPPED_BITMAP = 67;
-var GRAPHICS_FILL_NONSMOOTHED_REPEATING_BITMAP = 66;
-var GRAPHICS_FILL_RADIAL_GRADIENT = 18;
-var GRAPHICS_FILL_REPEATING_BITMAP = 64;
-var GRAPHICS_FILL_SOLID = 0;
-function applySegmentToStyles(segment, styles, linePaths, fillPaths, isMorph) {
-  if (!segment) {
-    return;
-  }
-  var commands = segment.commands;
-  var data = segment.data;
-  var morphData = segment.morphData;
-  if (morphData) {
-  }
-  var path;
-  var targetSegment;
-  var command;
-  var i;
-  if (styles.fill0) {
-    path = fillPaths[styles.fill0 - 1];
-    if (!(styles.fill1 || styles.line)) {
-      targetSegment = path.head();
-      targetSegment.commands = [];
-      targetSegment.data = [];
-      targetSegment.morphData = isMorph ? [] : null;
-    } else {
-      targetSegment = path.addSegment([], [], isMorph ? [] : null);
-    }
-    var targetCommands = targetSegment.commands;
-    var targetData = targetSegment.data;
-    var targetMorphData = targetSegment.morphData;
-    targetCommands.push(SHAPE_MOVE_TO);
-    var j = data.length - 2;
-    targetData.push(data[j], data[j + 1]);
-    if (isMorph) {
-      targetMorphData.push(morphData[j], morphData[j + 1]);
-    }
-    for (i = commands.length; i-- > 1; j -= 2) {
-      command = commands[i];
-      targetCommands.push(command);
-      targetData.push(data[j - 2], data[j - 1]);
-      if (isMorph) {
-        targetMorphData.push(morphData[j - 2], morphData[j - 1]);
-      }
-      if (command === SHAPE_CURVE_TO) {
-        targetData.push(data[j - 4], data[j - 3]);
-        if (isMorph) {
-          targetMorphData.push(morphData[j - 4], morphData[j - 3]);
-        }
-        j -= 2;
-      }
-    }
-    if (isMorph) {
-    }
-  }
-  if (styles.line && styles.fill1) {
-    path = linePaths[styles.line - 1];
-    path.addSegment(commands, data, morphData);
-  }
-}
-function convertRecordsToStyledPaths(records, fillPaths, linePaths, dictionary, dependencies, recordsMorph, transferables) {
-  var isMorph = recordsMorph !== null;
-  var styles = {
-      fill0: 0,
-      fill1: 0,
-      line: 0
-    };
-  var segment = null;
-  var allPaths;
-  var defaultPath;
-  var numRecords = records.length - 1;
-  var x = 0;
-  var y = 0;
-  var morphX = 0;
-  var morphY = 0;
-  var path;
-  for (var i = 0, j = 0; i < numRecords; i++) {
-    var record = records[i];
-    var morphRecord;
-    if (isMorph) {
-      morphRecord = recordsMorph[j++];
-    }
-    if (record.type === 0) {
-      if (segment) {
-        applySegmentToStyles(segment, styles, linePaths, fillPaths, isMorph);
-      }
-      if (record.hasNewStyles) {
-        if (!allPaths) {
-          allPaths = [];
-        }
-        push.apply(allPaths, fillPaths);
-        fillPaths = createPathsList(record.fillStyles, false, dictionary, dependencies);
-        push.apply(allPaths, linePaths);
-        linePaths = createPathsList(record.lineStyles, true, dictionary, dependencies);
-        if (defaultPath) {
-          allPaths.push(defaultPath);
-          defaultPath = null;
-        }
-        styles = {
-          fill0: 0,
-          fill1: 0,
-          line: 0
-        };
-      }
-      if (record.hasFillStyle0) {
-        styles.fill0 = record.fillStyle0;
-      }
-      if (record.hasFillStyle1) {
-        styles.fill1 = record.fillStyle1;
-      }
-      if (record.hasLineStyle) {
-        styles.line = record.lineStyle;
-      }
-      if (styles.fill1) {
-        path = fillPaths[styles.fill1 - 1];
-      } else if (styles.line) {
-        path = linePaths[styles.line - 1];
-      } else if (styles.fill0) {
-        path = fillPaths[styles.fill0 - 1];
-      }
-      if (record.move) {
-        x = record.moveX | 0;
-        y = record.moveY | 0;
-      }
-      if (path) {
-        segment = path.addSegment([], [], isMorph ? [] : null);
-        segment.commands.push(SHAPE_MOVE_TO);
-        segment.data.push(x, y);
-        if (isMorph) {
-          if (morphRecord.type === 0) {
-            morphX = morphRecord.moveX | 0;
-            morphY = morphRecord.moveY | 0;
-          } else {
-            morphX = x;
-            morphY = y;
-            j--;
-          }
-          segment.morphData.push(morphX, morphY);
-        }
-      }
-    } else {
-      if (!segment) {
-        if (!defaultPath) {
-          var style = {
-              color: {
-                red: 0,
-                green: 0,
-                blue: 0,
-                alpha: 255
-              },
-              width: 20
-            };
-          defaultPath = new SegmentedPath(null, processStyle(style, true));
-        }
-        segment = defaultPath.addSegment([], [], isMorph ? [] : null);
-        segment.commands.push(SHAPE_MOVE_TO);
-        segment.data.push(x, y);
-        if (isMorph) {
-          segment.morphData.push(morphX, morphY);
-        }
-      }
-      if (isMorph) {
-        while (morphRecord && morphRecord.type === 0) {
-          morphRecord = recordsMorph[j++];
-        }
-        if (!morphRecord) {
-          morphRecord = record;
-        }
-      }
-      if (record.isStraight && (!isMorph || morphRecord.isStraight)) {
-        x += record.deltaX | 0;
-        y += record.deltaY | 0;
-        segment.commands.push(SHAPE_LINE_TO);
-        segment.data.push(x, y);
-        if (isMorph) {
-          morphX += morphRecord.deltaX | 0;
-          morphY += morphRecord.deltaY | 0;
-          segment.morphData.push(morphX, morphY);
-        }
-      } else {
-        var cx, cy;
-        var deltaX, deltaY;
-        if (!record.isStraight) {
-          cx = x + record.controlDeltaX | 0;
-          cy = y + record.controlDeltaY | 0;
-          x = cx + record.anchorDeltaX | 0;
-          y = cy + record.anchorDeltaY | 0;
-        } else {
-          deltaX = record.deltaX | 0;
-          deltaY = record.deltaY | 0;
-          cx = x + (deltaX >> 1);
-          cy = y + (deltaY >> 1);
-          x += deltaX;
-          y += deltaY;
-        }
-        segment.commands.push(SHAPE_CURVE_TO);
-        segment.data.push(cx, cy, x, y);
-        if (isMorph) {
-          if (!morphRecord.isStraight) {
-            cx = morphX + morphRecord.controlDeltaX | 0;
-            cy = morphY + morphRecord.controlDeltaY | 0;
-            morphX = cx + morphRecord.anchorDeltaX | 0;
-            morphY = cy + morphRecord.anchorDeltaY | 0;
-          } else {
-            deltaX = morphRecord.deltaX | 0;
-            deltaY = morphRecord.deltaY | 0;
-            cx = morphX + (deltaX >> 1);
-            cy = morphY + (deltaY >> 1);
-            morphX += deltaX;
-            morphY += deltaY;
-          }
-          segment.morphData.push(cx, cy, morphX, morphY);
-        }
-      }
-    }
-  }
-  applySegmentToStyles(segment, styles, linePaths, fillPaths, isMorph);
-  if (allPaths) {
-    push.apply(allPaths, fillPaths);
-  } else {
-    allPaths = fillPaths;
-  }
-  push.apply(allPaths, linePaths);
-  if (defaultPath) {
-    allPaths.push(defaultPath);
-  }
-  var removeCount = 0;
-  for (i = 0; i < allPaths.length; i++) {
-    path = allPaths[i];
-    if (!path.head()) {
-      removeCount++;
-      continue;
-    }
-    allPaths[i - removeCount] = segmentedPathToShapePath(path, isMorph, transferables);
-  }
-  allPaths.length -= removeCount;
-  return allPaths;
-}
-function segmentedPathToShapePath(path, isMorph, transferables) {
-  var start = path.head();
-  var end = start;
-  var finalRoot = null;
-  var finalHead = null;
-  var skippedMoves = 0;
-  var current = start.prev;
-  while (start) {
-    while (current) {
-      if (path.segmentsConnect(current, start)) {
-        if (current.next !== start) {
-          path.removeSegment(current);
-          path.insertSegment(current, start);
-        }
-        start = current;
-        current = start.prev;
-        skippedMoves++;
-        continue;
-      }
-      if (path.segmentsConnect(end, current)) {
-        path.removeSegment(current);
-        end.next = current;
-        current = current.prev;
-        end.next.prev = end;
-        end.next.next = null;
-        end = end.next;
-        skippedMoves++;
-        continue;
-      }
-      current = current.prev;
-    }
-    current = start.prev;
-    if (!finalRoot) {
-      finalRoot = start;
-      finalHead = end;
-    } else {
-      finalHead.next = start;
-      start.prev = finalHead;
-      finalHead = end;
-      finalHead.next = null;
-    }
-    if (!current) {
-      break;
-    }
-    start = end = current;
-    current = start.prev;
-  }
-  var totalCommandsLength = -skippedMoves;
-  var totalDataLength = -skippedMoves << 1;
-  current = finalRoot;
-  while (current) {
-    totalCommandsLength += current.commands.length;
-    totalDataLength += current.data.length;
-    current = current.next;
-  }
-  var shape = new ShapePath(path.fillStyle, path.lineStyle, totalCommandsLength, totalDataLength, isMorph, transferables);
-  var allCommands = shape.commands;
-  var allData = shape.data;
-  var allMorphData = shape.morphData;
-  var commandsIndex = 0;
-  var dataIndex = 0;
-  current = finalRoot;
-  while (current) {
-    var commands = current.commands;
-    var data = current.data;
-    var morphData = current.morphData;
-    var offset = +(data[0] === allData[dataIndex - 2] && data[1] === allData[dataIndex - 1]);
-    for (var i = offset; i < commands.length; i++, commandsIndex++) {
-      allCommands[commandsIndex] = commands[i];
-    }
-    for (i = offset << 1; i < data.length; i++, dataIndex++) {
-      allData[dataIndex] = data[i];
-      if (isMorph) {
-        allMorphData[dataIndex] = morphData[i];
-      }
-    }
-    current = current.next;
-  }
-  return shape;
-}
-var CAPS_STYLE_TYPES = [
-    'round',
-    'none',
-    'square'
-  ];
-var JOIN_STYLE_TYPES = [
-    'round',
-    'bevel',
-    'miter'
-  ];
-function processStyle(style, isLineStyle, dictionary, dependencies) {
-  if (isLineStyle) {
-    style.lineCap = CAPS_STYLE_TYPES[style.endCapStyle | 0];
-    style.lineJoin = JOIN_STYLE_TYPES[style.joinStyle | 0];
-    style.miterLimit = (style.miterLimitFactor || 1.5) * 2;
-    if (!style.color && style.hasFill) {
-      var fillStyle = processStyle(style.fillStyle, false, dictionary, dependencies);
-      style.style = fillStyle.style;
-      style.type = fillStyle.type;
-      style.transform = fillStyle.transform;
-      style.records = fillStyle.records;
-      style.focalPoint = fillStyle.focalPoint;
-      style.bitmapId = fillStyle.bitmapId;
-      style.repeat = fillStyle.repeat;
-      style.fillStyle = null;
-      return style;
-    }
-  }
-  var color;
-  if (style.type === undefined || style.type === GRAPHICS_FILL_SOLID) {
-    color = style.color;
-    style.style = 'rgba(' + color.red + ',' + color.green + ',' + color.blue + ',' + color.alpha / 255 + ')';
-    style.color = null;
-    return style;
-  }
-  var scale;
-  switch (style.type) {
-  case GRAPHICS_FILL_LINEAR_GRADIENT:
-  case GRAPHICS_FILL_RADIAL_GRADIENT:
-  case GRAPHICS_FILL_FOCAL_RADIAL_GRADIENT:
-    scale = 819.2;
-    break;
-  case GRAPHICS_FILL_REPEATING_BITMAP:
-  case GRAPHICS_FILL_CLIPPED_BITMAP:
-  case GRAPHICS_FILL_NONSMOOTHED_REPEATING_BITMAP:
-  case GRAPHICS_FILL_NONSMOOTHED_CLIPPED_BITMAP:
-    if (dictionary[style.bitmapId]) {
-      dependencies.push(dictionary[style.bitmapId].id);
-      scale = 0.05;
-    }
-    break;
-  default:
-    fail('invalid fill style', 'shape');
-  }
-  if (!style.matrix) {
-    return style;
-  }
-  var matrix = style.matrix;
-  style.transform = {
-    a: matrix.a * scale,
-    b: matrix.b * scale,
-    c: matrix.c * scale,
-    d: matrix.d * scale,
-    e: matrix.tx,
-    f: matrix.ty
-  };
-  style.matrix = null;
-  return style;
-}
-function createPathsList(styles, isLineStyle, dictionary, dependencies) {
-  var paths = [];
-  for (var i = 0; i < styles.length; i++) {
-    var style = processStyle(styles[i], isLineStyle, dictionary, dependencies);
-    if (!isLineStyle) {
-      paths[i] = new SegmentedPath(style, null);
-    } else {
-      paths[i] = new SegmentedPath(null, style);
-    }
-  }
-  return paths;
-}
-function defineShape(tag, dictionary) {
-  var dependencies = [];
-  var transferables = [];
-  var fillPaths = createPathsList(tag.fillStyles, false, dictionary, dependencies);
-  var linePaths = createPathsList(tag.lineStyles, true, dictionary, dependencies);
-  var paths = convertRecordsToStyledPaths(tag.records, fillPaths, linePaths, dictionary, dependencies, tag.recordsMorph || null, transferables);
-  if (tag.bboxMorph) {
-    var mbox = tag.bboxMorph;
-    extendBoundsByPoint(tag.bbox, mbox.xMin, mbox.yMin);
-    extendBoundsByPoint(tag.bbox, mbox.xMax, mbox.yMax);
-    mbox = tag.strokeBboxMorph;
-    if (mbox) {
-      extendBoundsByPoint(tag.strokeBbox, mbox.xMin, mbox.yMin);
-      extendBoundsByPoint(tag.strokeBbox, mbox.xMax, mbox.yMax);
-    }
-  }
-  return {
-    type: 'shape',
-    id: tag.id,
-    strokeBbox: tag.strokeBbox,
-    strokeBboxMorph: tag.strokeBboxMorph,
-    bbox: tag.bbox,
-    bboxMorph: tag.bboxMorph,
-    isMorph: tag.isMorph,
-    paths: paths,
-    require: dependencies.length ? dependencies : null,
-    transferables: transferables
-  };
-}
-function logShape(paths, bbox) {
-  var output = '{"bounds":' + JSON.stringify(bbox) + ',"paths":[' + paths.map(function (path) {
-      return path.serialize();
-    }).join() + ']}';
-  console.log(output);
-}
-function SegmentedPath(fillStyle, lineStyle) {
-  this.fillStyle = fillStyle;
-  this.lineStyle = lineStyle;
-  this._head = null;
-}
-SegmentedPath.prototype = {
-  addSegment: function (commands, data, morphData) {
-    var segment = {
-        commands: commands,
-        data: data,
-        morphData: morphData,
-        prev: this._head,
-        next: null
-      };
-    if (this._head) {
-      this._head.next = segment;
-    }
-    this._head = segment;
-    return segment;
-  },
-  removeSegment: function (segment) {
-    if (segment.prev) {
-      segment.prev.next = segment.next;
-    }
-    if (segment.next) {
-      segment.next.prev = segment.prev;
-    }
-  },
-  insertSegment: function (segment, next) {
-    var prev = next.prev;
-    segment.prev = prev;
-    segment.next = next;
-    if (prev) {
-      prev.next = segment;
-    }
-    next.prev = segment;
-  },
-  head: function () {
-    return this._head;
-  },
-  segmentsConnect: function (first, second) {
-    var firstLength = first.data.length;
-    return first.data[firstLength - 2] === second.data[0] && first.data[firstLength - 1] === second.data[1];
-  }
-};
-var SHAPE_MOVE_TO = 1;
-var SHAPE_LINE_TO = 2;
-var SHAPE_CURVE_TO = 3;
-var SHAPE_WIDE_MOVE_TO = 4;
-var SHAPE_WIDE_LINE_TO = 5;
-var SHAPE_CUBIC_CURVE_TO = 6;
-var SHAPE_CIRCLE = 7;
-var SHAPE_ELLIPSE = 8;
-function ShapePath(fillStyle, lineStyle, commandsCount, dataLength, isMorph, transferables) {
-  this.fillStyle = fillStyle;
-  this.lineStyle = lineStyle;
-  if (commandsCount) {
-    this.commands = new Uint8Array(commandsCount);
-    this.data = new Int32Array(dataLength);
-    this.morphData = isMorph ? new Int32Array(dataLength) : null;
-  } else {
-    this.commands = [];
-    this.data = [];
-  }
-  this.bounds = null;
-  this.strokeBounds = null;
-  this.isMorph = !(!isMorph);
-  this.fullyInitialized = false;
-  if (inWorker) {
-    this.buffers = [
-      this.commands.buffer,
-      this.data.buffer
-    ];
-    transferables.push(this.commands.buffer, this.data.buffer);
-    if (isMorph) {
-      this.buffers.push(this.morphData.buffer);
-      transferables.push(this.morphData.buffer);
-    }
-  } else {
-    this.buffers = null;
-  }
-}
-ShapePath.prototype = {
-  get isEmpty() {
-    return this.commands.length === 0;
-  },
-  moveTo: function (x, y) {
-    if (this.commands[this.commands.length - 1] === SHAPE_MOVE_TO) {
-      this.data[this.data.length - 2] = x;
-      this.data[this.data.length - 1] = y;
-      return;
-    }
-    this.commands.push(SHAPE_MOVE_TO);
-    this.data.push(x, y);
-  },
-  lineTo: function (x, y) {
-    this.commands.push(SHAPE_LINE_TO);
-    this.data.push(x, y);
-  },
-  curveTo: function (controlX, controlY, anchorX, anchorY) {
-    this.commands.push(SHAPE_CURVE_TO);
-    this.data.push(controlX, controlY, anchorX, anchorY);
-  },
-  cubicCurveTo: function (control1X, control1Y, control2X, control2Y, anchorX, anchorY) {
-    this.commands.push(SHAPE_CUBIC_CURVE_TO);
-    this.data.push(control1X, control1Y, control2X, control2Y, anchorX, anchorY);
-  },
-  rect: function (x, y, w, h) {
-    var x2 = x + w;
-    var y2 = y + h;
-    this.commands.push(SHAPE_MOVE_TO, SHAPE_LINE_TO, SHAPE_LINE_TO, SHAPE_LINE_TO, SHAPE_LINE_TO);
-    this.data.push(x, y, x2, y, x2, y2, x, y2, x, y);
-  },
-  circle: function (x, y, radius) {
-    this.commands.push(SHAPE_CIRCLE);
-    this.data.push(x, y, radius);
-  },
-  ellipse: function (x, y, radiusX, radiusY) {
-    this.commands.push(SHAPE_ELLIPSE);
-    this.data.push(x, y, radiusX, radiusY);
-  },
-  draw: function (ctx, clip, ratio, colorTransform) {
-    if (clip && !this.fillStyle) {
-      return;
-    }
-    ctx.beginPath();
-    var commands = this.commands;
-    var data = this.data;
-    var morphData = this.morphData;
-    var formOpen = false;
-    var formOpenX = 0;
-    var formOpenY = 0;
-    if (!this.isMorph) {
-      for (var j = 0, k = 0; j < commands.length; j++) {
-        switch (commands[j]) {
-        case SHAPE_MOVE_TO:
-          formOpen = true;
-          formOpenX = data[k++] / 20;
-          formOpenY = data[k++] / 20;
-          ctx.moveTo(formOpenX, formOpenY);
-          break;
-        case SHAPE_WIDE_MOVE_TO:
-          ctx.moveTo(data[k++] / 20, data[k++] / 20);
-          k += 2;
-          break;
-        case SHAPE_LINE_TO:
-          ctx.lineTo(data[k++] / 20, data[k++] / 20);
-          break;
-        case SHAPE_WIDE_LINE_TO:
-          ctx.lineTo(data[k++] / 20, data[k++] / 20);
-          k += 2;
-          break;
-        case SHAPE_CURVE_TO:
-          ctx.quadraticCurveTo(data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20);
-          break;
-        case SHAPE_CUBIC_CURVE_TO:
-          ctx.bezierCurveTo(data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20, data[k++] / 20);
-          break;
-        case SHAPE_CIRCLE:
-          if (formOpen) {
-            ctx.lineTo(formOpenX, formOpenY);
-            formOpen = false;
-          }
-          ctx.moveTo((data[k] + data[k + 2]) / 20, data[k + 1] / 20);
-          ctx.arc(data[k++] / 20, data[k++] / 20, data[k++] / 20, 0, Math.PI * 2, false);
-          break;
-        case SHAPE_ELLIPSE:
-          if (formOpen) {
-            ctx.lineTo(formOpenX, formOpenY);
-            formOpen = false;
-          }
-          var x = data[k++];
-          var y = data[k++];
-          var rX = data[k++];
-          var rY = data[k++];
-          var radius;
-          if (rX !== rY) {
-            ctx.save();
-            var ellipseScale;
-            if (rX > rY) {
-              ellipseScale = rX / rY;
-              radius = rY;
-              x /= ellipseScale;
-              ctx.scale(ellipseScale, 1);
-            } else {
-              ellipseScale = rY / rX;
-              radius = rX;
-              y /= ellipseScale;
-              ctx.scale(1, ellipseScale);
-            }
-          }
-          ctx.moveTo((x + radius) / 20, y / 20);
-          ctx.arc(x / 20, y / 20, radius / 20, 0, Math.PI * 2, false);
-          if (rX !== rY) {
-            ctx.restore();
-          }
-          break;
-        default:
-          if (commands[j] === 0 && j === commands.length - 1) {
-            break;
-          }
-          console.warn('Unknown drawing command encountered: ' + commands[j]);
-        }
-      }
-    } else {
-      for (var j = 0, k = 0; j < commands.length; j++) {
-        switch (commands[j]) {
-        case SHAPE_MOVE_TO:
-          ctx.moveTo(morph(data[k] / 20, morphData[k++] / 20, ratio), morph(data[k] / 20, morphData[k++] / 20, ratio));
-          break;
-        case SHAPE_LINE_TO:
-          ctx.lineTo(morph(data[k] / 20, morphData[k++] / 20, ratio), morph(data[k] / 20, morphData[k++] / 20, ratio));
-          break;
-        case SHAPE_CURVE_TO:
-          ctx.quadraticCurveTo(morph(data[k] / 20, morphData[k++] / 20, ratio), morph(data[k] / 20, morphData[k++] / 20, ratio), morph(data[k] / 20, morphData[k++] / 20, ratio), morph(data[k] / 20, morphData[k++] / 20, ratio));
-          break;
-        default:
-          console.warn('Drawing command not supported for morph shapes: ' + commands[j]);
-        }
-      }
-    }
-    if (!clip) {
-      var fillStyle = this.fillStyle;
-      if (fillStyle) {
-        colorTransform.setFillStyle(ctx, fillStyle.style);
-        ctx.imageSmoothingEnabled = ctx.mozImageSmoothingEnabled = fillStyle.smooth;
-        var m = fillStyle.transform;
-        ctx.save();
-        colorTransform.setAlpha(ctx);
-        if (m) {
-          ctx.transform(m.a, m.b, m.c, m.d, m.e / 20, m.f / 20);
-        }
-        ctx.fill();
-        ctx.restore();
-      }
-      var lineStyle = this.lineStyle;
-      if (lineStyle) {
-        colorTransform.setStrokeStyle(ctx, lineStyle.style);
-        ctx.save();
-        colorTransform.setAlpha(ctx);
-        ctx.lineWidth = Math.max(lineStyle.width / 20, 1);
-        ctx.lineCap = lineStyle.lineCap;
-        ctx.lineJoin = lineStyle.lineJoin;
-        ctx.miterLimit = lineStyle.miterLimit;
-        ctx.stroke();
-        ctx.restore();
-      }
-    } else {
-      ctx.fill();
-    }
-    ctx.closePath();
-  },
-  isPointInPath: function (x, y) {
-    if (!(this.fillStyle || this.lineStyle)) {
-      return false;
-    }
-    var bounds = this.strokeBounds || this.bounds || this._calculateBounds();
-    if (x < bounds.xMin || x > bounds.xMax || y < bounds.yMin || y > bounds.yMax) {
-      return false;
-    }
-    if (this.fillStyle && this.isPointInFill(x, y)) {
-      return true;
-    }
-    return this.lineStyle && this.lineStyle.width !== undefined && this.isPointInStroke(x, y);
-  },
-  isPointInFill: function (x, y) {
-    var commands = this.commands;
-    var data = this.data;
-    var length = commands.length;
-    var inside = false;
-    var fromX = 0;
-    var fromY = 0;
-    var toX = 0;
-    var toY = 0;
-    var localX;
-    var localY;
-    var cpX;
-    var cpY;
-    var rX;
-    var rY;
-    var formOpen = false;
-    var formOpenX = 0;
-    var formOpenY = 0;
-    for (var commandIndex = 0, dataIndex = 0; commandIndex < length; commandIndex++) {
-      switch (commands[commandIndex]) {
-      case SHAPE_WIDE_MOVE_TO:
-        dataIndex += 2;
-      case SHAPE_MOVE_TO:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        if (formOpen && intersectsLine(x, y, fromX, fromY, formOpenX, formOpenY)) {
-          inside = !inside;
-        }
-        formOpen = true;
-        formOpenX = toX;
-        formOpenY = toY;
-        break;
-      case SHAPE_WIDE_LINE_TO:
-        dataIndex += 2;
-      case SHAPE_LINE_TO:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        if (intersectsLine(x, y, fromX, fromY, toX, toY)) {
-          inside = !inside;
-        }
-        break;
-      case SHAPE_CURVE_TO:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        if (cpY > y === fromY > y && toY > y === fromY > y) {
-          break;
-        }
-        if (fromX >= x && cpX >= x && toX >= x) {
-          inside = !inside;
-          break;
-        }
-        var a = fromY - 2 * cpY + toY;
-        var c = fromY - y;
-        var b = 2 * (cpY - fromY);
-        var d = b * b - 4 * a * c;
-        if (d < 0) {
-          break;
-        }
-        d = Math.sqrt(d);
-        a = 1 / (a + a);
-        var t1 = (d - b) * a;
-        var t2 = (-b - d) * a;
-        if (t1 >= 0 && t1 <= 1 && quadraticBezier(fromX, cpX, toX, t1) > x) {
-          inside = !inside;
-        }
-        if (t2 >= 0 && t2 <= 1 && quadraticBezier(fromX, cpX, toX, t2) > x) {
-          inside = !inside;
-        }
-        break;
-      case SHAPE_CUBIC_CURVE_TO:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        var cp2X = data[dataIndex++];
-        var cp2Y = data[dataIndex++];
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        if (cpY > y === fromY > y && cp2Y > y === fromY > y && toY > y === fromY > y) {
-          break;
-        }
-        if (fromX >= x && cpX >= x && cp2X >= x && toX >= x) {
-          inside = !inside;
-          break;
-        }
-        var roots = cubicXAtY(fromX, fromY, cpX, cpY, cp2X, cp2Y, toX, toY, y);
-        for (var i = roots.length; i--;) {
-          if (roots[i] >= x) {
-            inside = !inside;
-          }
-        }
-        break;
-      case SHAPE_CIRCLE:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        var r = data[dataIndex++];
-        localX = x - toX;
-        localY = y - toY;
-        if (localX * localX + localY * localY < r * r) {
-          inside = !inside;
-        }
-        toX += r;
-        break;
-      case SHAPE_ELLIPSE:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        rX = data[dataIndex++];
-        rY = data[dataIndex++];
-        localX = x - cpX;
-        localY = y - cpY;
-        if (localX * localX / (rX * rX) + localY * localY / (rY * rY) <= 1) {
-          inside = !inside;
-        }
-        toX = cpX + rX;
-        toY = cpY;
-        break;
-      default:
-        if (!inWorker) {
-          console.warn('Drawing command not handled in isPointInPath: ' + commands[commandIndex]);
-        }
-      }
-      fromX = toX;
-      fromY = toY;
-    }
-    if (formOpen && intersectsLine(x, y, fromX, fromY, formOpenX, formOpenY)) {
-      inside = !inside;
-    }
-    return inside;
-  },
-  isPointInStroke: function (x, y) {
-    var commands = this.commands;
-    var data = this.data;
-    var length = commands.length;
-    var width = this.lineStyle.width;
-    var halfWidth = width / 2;
-    var halfWidthSq = halfWidth * halfWidth;
-    var minX = x - halfWidth;
-    var maxX = x + halfWidth;
-    var minY = y - halfWidth;
-    var maxY = y + halfWidth;
-    var fromX = 0;
-    var fromY = 0;
-    var toX = 0;
-    var toY = 0;
-    var localX;
-    var localY;
-    var cpX;
-    var cpY;
-    var rX;
-    var rY;
-    var curveX;
-    var curveY;
-    var t;
-    for (var commandIndex = 0, dataIndex = 0; commandIndex < length; commandIndex++) {
-      switch (commands[commandIndex]) {
-      case SHAPE_WIDE_MOVE_TO:
-        dataIndex += 2;
-      case SHAPE_MOVE_TO:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        break;
-      case SHAPE_WIDE_LINE_TO:
-        dataIndex += 2;
-      case SHAPE_LINE_TO:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        if (fromX === toX && fromY === toY) {
-          break;
-        }
-        if (maxX < fromX && maxX < toX || minX > fromX && minX > toX || maxY < fromY && maxY < toY || minY > fromY && minY > toY) {
-          break;
-        }
-        if (toX === fromX || toY === fromY) {
-          return true;
-        }
-        t = ((x - fromX) * (toX - fromX) + (y - fromY) * (toY - fromY)) / distanceSq(fromX, fromY, toX, toY);
-        if (t < 0) {
-          if (distanceSq(x, y, fromX, fromY) <= halfWidthSq) {
-            return true;
-          }
-          break;
-        }
-        if (t > 1) {
-          if (distanceSq(x, y, toX, toY) <= halfWidthSq) {
-            return true;
-          }
-          break;
-        }
-        if (distanceSq(x, y, fromX + t * (toX - fromX), fromY + t * (toY - fromY)) <= halfWidthSq) {
-          return true;
-        }
-        break;
-      case SHAPE_CURVE_TO:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        var extremeX = quadraticBezierExtreme(fromX, cpX, toX);
-        if (maxX < fromX && maxX < extremeX && maxX < toX || minX > fromX && minX > extremeX && minX > toX) {
-          break;
-        }
-        var extremeY = quadraticBezierExtreme(fromY, cpY, toY);
-        if (maxY < fromY && maxY < extremeY && maxY < toY || minY > fromY && minY > extremeY && minY > toY) {
-          break;
-        }
-        for (t = 0; t < 1; t += 0.02) {
-          curveX = quadraticBezier(fromX, cpX, toX, t);
-          if (curveX < minX || curveX > maxX) {
-            continue;
-          }
-          curveY = quadraticBezier(fromY, cpY, toY, t);
-          if (curveY < minY || curveY > maxY) {
-            continue;
-          }
-          if ((x - curveX) * (x - curveX) + (y - curveY) * (y - curveY) < halfWidthSq) {
-            return true;
-          }
-        }
-        break;
-      case SHAPE_CUBIC_CURVE_TO:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        var cp2X = data[dataIndex++];
-        var cp2Y = data[dataIndex++];
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        var extremesX = cubicBezierExtremes(fromX, cpX, cp2X, toX);
-        while (extremesX.length < 2) {
-          extremesX.push(toX);
-        }
-        if (maxX < fromX && maxX < toX && maxX < extremesX[0] && maxX < extremesX[1] || minX > fromX && minX > toX && minX > extremesX[0] && minX > extremesX[1]) {
-          break;
-        }
-        var extremesY = cubicBezierExtremes(fromY, cpY, cp2Y, toY);
-        while (extremesY.length < 2) {
-          extremesY.push(toY);
-        }
-        if (maxY < fromY && maxY < toY && maxY < extremesY[0] && maxY < extremesY[1] || minY > fromY && minY > toY && minY > extremesY[0] && minY > extremesY[1]) {
-          break;
-        }
-        for (t = 0; t < 1; t += 0.02) {
-          curveX = cubicBezier(fromX, cpX, cp2X, toX, t);
-          if (curveX < minX || curveX > maxX) {
-            continue;
-          }
-          curveY = cubicBezier(fromY, cpY, cp2Y, toY, t);
-          if (curveY < minY || curveY > maxY) {
-            continue;
-          }
-          if ((x - curveX) * (x - curveX) + (y - curveY) * (y - curveY) < halfWidthSq) {
-            return true;
-          }
-        }
-        break;
-      case SHAPE_CIRCLE:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        var r = data[dataIndex++];
-        toX = cpX + r;
-        toY = cpY;
-        if (maxX < cpX - r || minX > cpX + r || maxY < cpY - r || minY > cpY + r) {
-          break;
-        }
-        localX = x - cpX;
-        localY = y - cpY;
-        var rMin = r - halfWidth;
-        var rMax = r + halfWidth;
-        var distSq = localX * localX + localY * localY;
-        if (distSq >= rMin * rMin && distSq <= rMax * rMax) {
-          return true;
-        }
-        break;
-      case SHAPE_ELLIPSE:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        rX = data[dataIndex++];
-        rY = data[dataIndex++];
-        toX = cpX + rX;
-        toY = cpY;
-        localX = Math.abs(x - cpX);
-        localY = Math.abs(y - cpY);
-        localX -= halfWidth;
-        localY -= halfWidth;
-        if (localX * localX / (rX * rX) + localY * localY / (rY * rY) > 1) {
-          break;
-        }
-        localX += width;
-        localY += width;
-        if (localX * localX / (rX * rX) + localY * localY / (rY * rY) > 1) {
-          return true;
-        }
-        break;
-      default:
-        if (!inWorker) {
-          console.warn('Drawing command not handled in isPointInPath: ' + commands[commandIndex]);
-        }
-      }
-      fromX = toX;
-      fromY = toY;
-    }
-    return false;
-  },
-  getBounds: function (includeStroke) {
-    var bounds = includeStroke ? this.strokeBounds : this.bounds;
-    if (!bounds) {
-      this._calculateBounds();
-      bounds = includeStroke ? this.strokeBounds : this.bounds;
-    }
-    return bounds;
-  },
-  _calculateBounds: function () {
-    var commands = this.commands;
-    var data = this.data;
-    var length = commands.length;
-    var bounds;
-    if (commands[0] === SHAPE_MOVE_TO || commands[0] > SHAPE_CUBIC_CURVE_TO) {
-      bounds = {
-        xMin: data[0],
-        yMin: data[1]
-      };
-    } else {
-      bounds = {
-        xMin: 0,
-        yMin: 0
-      };
-    }
-    bounds.xMax = bounds.xMin;
-    bounds.yMax = bounds.yMin;
-    var fromX = bounds.xMin;
-    var fromY = bounds.yMin;
-    for (var commandIndex = 0, dataIndex = 0; commandIndex < length; commandIndex++) {
-      var toX;
-      var toY;
-      var cpX;
-      var cpY;
-      switch (commands[commandIndex]) {
-      case SHAPE_WIDE_MOVE_TO:
-        dataIndex += 2;
-      case SHAPE_MOVE_TO:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        extendBoundsByPoint(bounds, toX, toY);
-        break;
-      case SHAPE_WIDE_LINE_TO:
-        dataIndex += 2;
-      case SHAPE_LINE_TO:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        extendBoundsByPoint(bounds, toX, toY);
-        break;
-      case SHAPE_CURVE_TO:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        extendBoundsByPoint(bounds, toX, toY);
-        if (cpX < fromX || cpX > toX) {
-          extendBoundsByX(bounds, quadraticBezierExtreme(fromX, cpX, toX));
-        }
-        if (cpY < fromY || cpY > toY) {
-          extendBoundsByY(bounds, quadraticBezierExtreme(fromY, cpY, toY));
-        }
-        break;
-      case SHAPE_CUBIC_CURVE_TO:
-        cpX = data[dataIndex++];
-        cpY = data[dataIndex++];
-        var cp2X = data[dataIndex++];
-        var cp2Y = data[dataIndex++];
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        extendBoundsByPoint(bounds, toX, toY);
-        var extremes;
-        var i;
-        if (cpX < fromX || cp2X < fromX || cpX > toX || cp2X > toX) {
-          extremes = cubicBezierExtremes(fromX, cpX, cp2X, toX);
-          for (i = extremes.length; i--;) {
-            extendBoundsByX(bounds, extremes[i]);
-          }
-        }
-        if (cpY < fromY || cp2Y < fromY || cpY > toY || cp2Y > toY) {
-          extremes = cubicBezierExtremes(fromY, cpY, cp2Y, toY);
-          for (i = extremes.length; i--;) {
-            extendBoundsByY(bounds, extremes[i]);
-          }
-        }
-        break;
-      case SHAPE_CIRCLE:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        var radius = data[dataIndex++];
-        extendBoundsByPoint(bounds, toX - radius, toY - radius);
-        extendBoundsByPoint(bounds, toX + radius, toY + radius);
-        toX += radius;
-        break;
-      case SHAPE_ELLIPSE:
-        toX = data[dataIndex++];
-        toY = data[dataIndex++];
-        var radiusX = data[dataIndex++];
-        var radiusY = data[dataIndex++];
-        extendBoundsByPoint(bounds, toX - radiusX, toY - radiusY);
-        extendBoundsByPoint(bounds, toX + radiusX, toY + radiusY);
-        toX += radiusX;
-        break;
-      default:
-        if (!inWorker) {
-          console.warn('Drawing command not handled in bounds calculation: ' + commands[commandIndex]);
-        }
-      }
-      fromX = toX;
-      fromY = toY;
-    }
-    this.bounds = bounds;
-    if (this.lineStyle) {
-      var halfLineWidth = this.lineStyle.width / 2;
-      this.strokeBounds = {
-        xMin: bounds.xMin - halfLineWidth,
-        yMin: bounds.yMin - halfLineWidth,
-        xMax: bounds.xMax + halfLineWidth,
-        yMax: bounds.yMax + halfLineWidth
-      };
-      return this.strokeBounds;
-    } else {
-      this.strokeBounds = bounds;
-    }
-    return bounds;
-  },
-  serialize: function () {
-    var output = '{';
-    if (this.fillStyle) {
-      output += '"fill":' + JSON.stringify(this.fillStyle) + ',';
-    }
-    if (this.lineStyle) {
-      output += '"stroke":' + JSON.stringify(this.lineStyle) + ',';
-    }
-    output += '"commands":[' + Array.apply([], this.commands).join() + '],';
-    output += '"data":[' + Array.apply([], this.data).join() + ']';
-    return output + '}';
-  }
-};
-ShapePath.fromPlainObject = function (obj) {
-  var path = new ShapePath(obj.fill || null, obj.stroke || null);
-  path.commands = new Uint8Array(obj.commands);
-  path.data = new Int32Array(obj.data);
-  if (!inWorker) {
-    finishShapePath(path);
-  }
-  return path;
-};
-function distanceSq(x1, y1, x2, y2) {
-  var dX = x2 - x1;
-  var dY = y2 - y1;
-  return dX * dX + dY * dY;
-}
-function intersectsLine(x, y, x1, y1, x2, y2) {
-  return y2 > y !== y1 > y && x < (x1 - x2) * (y - y2) / (y1 - y2) + x2;
-}
-function quadraticBezier(from, cp, to, t) {
-  var inverseT = 1 - t;
-  return from * inverseT * inverseT + 2 * cp * inverseT * t + to * t * t;
-}
-function quadraticBezierExtreme(from, cp, to) {
-  var t = (from - cp) / (from - 2 * cp + to);
-  if (t < 0) {
-    return from;
-  }
-  if (t > 1) {
-    return to;
-  }
-  return quadraticBezier(from, cp, to, t);
-}
-function cubicBezier(from, cp, cp2, to, t) {
-  var tSq = t * t;
-  var inverseT = 1 - t;
-  var inverseTSq = inverseT * inverseT;
-  return from * inverseT * inverseTSq + 3 * cp * t * inverseTSq + 3 * cp2 * inverseT * tSq + to * t * tSq;
-}
-function cubicBezierExtremes(from, cp, cp2, to) {
-  var d1 = cp - from;
-  var d2 = cp2 - cp;
-  d2 *= 2;
-  var d3 = to - cp2;
-  if (d1 + d3 === d2) {
-    d3 *= 1.0001;
-  }
-  var fHead = 2 * d1 - d2;
-  var part1 = d2 - 2 * d1;
-  var fCenter = Math.sqrt(part1 * part1 - 4 * d1 * (d1 - d2 + d3));
-  var fTail = 2 * (d1 - d2 + d3);
-  var t1 = (fHead + fCenter) / fTail;
-  var t2 = (fHead - fCenter) / fTail;
-  var result = [];
-  if (t1 >= 0 && t1 <= 1) {
-    result.push(cubicBezier(from, cp, cp2, to, t1));
-  }
-  if (t2 >= 0 && t2 <= 1) {
-    result.push(cubicBezier(from, cp, cp2, to, t2));
-  }
-  return result;
-}
-function cubicXAtY(x0, y0, cx, cy, cx1, cy1, x1, y1, y) {
-  var dX = 3 * (cx - x0);
-  var dY = 3 * (cy - y0);
-  var bX = 3 * (cx1 - cx) - dX;
-  var bY = 3 * (cy1 - cy) - dY;
-  var c3X = x1 - x0 - dX - bX;
-  var c3Y = y1 - y0 - dY - bY;
-  function f(t) {
-    return t * (dY + t * (bY + t * c3Y)) + y0 - y;
-  }
-  function pointAt(t) {
-    if (t < 0) {
-      t = 0;
-    } else if (t > 1) {
-      t = 1;
-    }
-    return x0 + t * (dX + t * (bX + t * c3X));
-  }
-  function bisectCubicBezierRange(f, l, r, limit) {
-    if (Math.abs(r - l) <= limit) {
-      return;
-    }
-    var middle = 0.5 * (l + r);
-    if (f(l) * f(r) <= 0) {
-      left = l;
-      right = r;
-      return;
-    }
-    bisectCubicBezierRange(f, l, middle, limit);
-    bisectCubicBezierRange(f, middle, r, limit);
-  }
-  var left = 0;
-  var right = 1;
-  bisectCubicBezierRange(f, 0, 1, 0.05);
-  var t0 = findRoot(left, right, f, 50, 0.000001);
-  var evalResult = Math.abs(f(t0));
-  if (evalResult > 0.00001) {
-    return [];
-  }
-  var result = [];
-  if (t0 <= 1) {
-    result.push(pointAt(t0));
-  }
-  var a = c3Y;
-  var b = t0 * a + bY;
-  var c = t0 * b + dY;
-  var d = b * b - 4 * a * c;
-  if (d < 0) {
-    return result;
-  }
-  d = Math.sqrt(d);
-  a = 1 / (a + a);
-  var t1 = (d - b) * a;
-  var t2 = (-b - d) * a;
-  if (t1 >= 0 && t1 <= 1) {
-    result.push(pointAt(t1));
-  }
-  if (t2 >= 0 && t2 <= 1) {
-    result.push(pointAt(t2));
-  }
-  return result;
-}
-function findRoot(x0, x2, f, maxIterations, epsilon) {
-  var x1;
-  var y0;
-  var y1;
-  var y2;
-  var b;
-  var c;
-  var y10;
-  var y20;
-  var y21;
-  var xm;
-  var ym;
-  var temp;
-  var xmlast = x0;
-  y0 = f(x0);
-  if (y0 === 0) {
-    return x0;
-  }
-  y2 = f(x2);
-  if (y2 === 0) {
-    return x2;
-  }
-  if (y2 * y0 > 0) {
-    return x0;
-  }
-  var __iter = 0;
-  for (var i = 0; i < maxIterations; ++i) {
-    __iter++;
-    x1 = 0.5 * (x2 + x0);
-    y1 = f(x1);
-    if (y1 === 0) {
-      return x1;
-    }
-    if (Math.abs(x1 - x0) < epsilon) {
-      return x1;
-    }
-    if (y1 * y0 > 0) {
-      temp = x0;
-      x0 = x2;
-      x2 = temp;
-      temp = y0;
-      y0 = y2;
-      y2 = temp;
-    }
-    y10 = y1 - y0;
-    y21 = y2 - y1;
-    y20 = y2 - y0;
-    if (y2 * y20 < 2 * y1 * y10) {
-      x2 = x1;
-      y2 = y1;
-    } else {
-      b = (x1 - x0) / y10;
-      c = (y10 - y21) / (y21 * y20);
-      xm = x0 - b * y0 * (1 - c * y1);
-      ym = f(xm);
-      if (ym === 0) {
-        return xm;
-      }
-      if (Math.abs(xm - xmlast) < epsilon) {
-        return xm;
-      }
-      xmlast = xm;
-      if (ym * y0 < 0) {
-        x2 = xm;
-        y2 = ym;
-      } else {
-        x0 = xm;
-        y0 = ym;
-        x2 = x1;
-        y2 = y1;
-      }
-    }
-  }
-  return x1;
-}
-function extendBoundsByPoint(bounds, x, y) {
-  if (x < bounds.xMin) {
-    bounds.xMin = x;
-  } else if (x > bounds.xMax) {
-    bounds.xMax = x;
-  }
-  if (y < bounds.yMin) {
-    bounds.yMin = y;
-  } else if (y > bounds.yMax) {
-    bounds.yMax = y;
-  }
-}
-function extendBoundsByX(bounds, x) {
-  if (x < bounds.xMin) {
-    bounds.xMin = x;
-  } else if (x > bounds.xMax) {
-    bounds.xMax = x;
-  }
-}
-function extendBoundsByY(bounds, y) {
-  if (y < bounds.yMin) {
-    bounds.yMin = y;
-  } else if (y > bounds.yMax) {
-    bounds.yMax = y;
-  }
-}
-function morph(start, end, ratio) {
-  return start + (end - start) * ratio;
-}
-function finishShapePath(path, dictionaryResolved) {
-  if (path.fullyInitialized) {
-    return path;
-  }
-  if (!(path instanceof ShapePath)) {
-    var untypedPath = path;
-    path = new ShapePath(path.fillStyle, path.lineStyle, 0, 0, path.isMorph);
-    path.commands = new Uint8Array(untypedPath.buffers[0]);
-    path.data = new Int32Array(untypedPath.buffers[1]);
-    if (untypedPath.isMorph) {
-      path.morphData = new Int32Array(untypedPath.buffers[2]);
-    }
-    path.buffers = null;
-  }
-  path.fillStyle && initStyle(path.fillStyle, dictionaryResolved);
-  path.lineStyle && initStyle(path.lineStyle, dictionaryResolved);
-  path.fullyInitialized = true;
-  return path;
-}
-var inWorker = typeof window === 'undefined';
-var factoryCtx = !inWorker ? document.createElement('canvas').getContext('2d') : null;
-function buildLinearGradientFactory(colorStops) {
-  var defaultGradient = factoryCtx.createLinearGradient(-1, 0, 1, 0);
-  for (var i = 0; i < colorStops.length; i++) {
-    defaultGradient.addColorStop(colorStops[i].ratio, colorStops[i].color);
-  }
-  var fn = function createLinearGradient(ctx, colorTransform) {
-    var gradient = ctx.createLinearGradient(-1, 0, 1, 0);
-    for (var i = 0; i < colorStops.length; i++) {
-      colorTransform.addGradientColorStop(gradient, colorStops[i].ratio, colorStops[i].color);
-    }
-    return gradient;
-  };
-  fn.defaultFillStyle = defaultGradient;
-  return fn;
-}
-function buildRadialGradientFactory(focalPoint, colorStops) {
-  var defaultGradient = factoryCtx.createRadialGradient(focalPoint, 0, 0, 0, 0, 1);
-  for (var i = 0; i < colorStops.length; i++) {
-    defaultGradient.addColorStop(colorStops[i].ratio, colorStops[i].color);
-  }
-  var fn = function createRadialGradient(ctx, colorTransform) {
-    var gradient = ctx.createRadialGradient(focalPoint, 0, 0, 0, 0, 1);
-    for (var i = 0; i < colorStops.length; i++) {
-      colorTransform.addGradientColorStop(gradient, colorStops[i].ratio, colorStops[i].color);
-    }
-    return gradient;
-  };
-  fn.defaultFillStyle = defaultGradient;
-  return fn;
-}
-function buildBitmapPatternFactory(img, repeat) {
-  var defaultPattern = factoryCtx.createPattern(img, repeat);
-  var cachedTransform, cachedTransformKey;
-  var fn = function createBitmapPattern(ctx, colorTransform) {
-    if (!colorTransform.mode) {
-      return defaultPattern;
-    }
-    var key = colorTransform.getTransformFingerprint();
-    if (key === cachedTransformKey) {
-      return cachedTransform;
-    }
-    var canvas = document.createElement('canvas');
-    canvas.width = img.width;
-    canvas.height = img.height;
-    var ctx = canvas.getContext('2d');
-    colorTransform.setAlpha(ctx, true);
-    ctx.drawImage(img, 0, 0);
-    cachedTransform = ctx.createPattern(canvas, repeat);
-    cachedTransformKey = key;
-    return cachedTransform;
-  };
-  fn.defaultFillStyle = defaultPattern;
-  return fn;
-}
-function initStyle(style, dictionaryResolved) {
-  if (style.type === undefined) {
-    return;
-  }
-  switch (style.type) {
-  case GRAPHICS_FILL_SOLID:
-    break;
-  case GRAPHICS_FILL_LINEAR_GRADIENT:
-  case GRAPHICS_FILL_RADIAL_GRADIENT:
-  case GRAPHICS_FILL_FOCAL_RADIAL_GRADIENT:
-    var records = style.records, colorStops = [];
-    for (var j = 0, n = records.length; j < n; j++) {
-      var record = records[j];
-      var colorStr = rgbaObjToStr(record.color);
-      colorStops.push({
-        ratio: record.ratio / 255,
-        color: colorStr
-      });
-    }
-    var gradientConstructor;
-    var isLinear = style.type === GRAPHICS_FILL_LINEAR_GRADIENT;
-    if (isLinear) {
-      gradientConstructor = buildLinearGradientFactory(colorStops);
-    } else {
-      gradientConstructor = buildRadialGradientFactory((style.focalPoint | 0) / 20, colorStops);
-    }
-    style.style = gradientConstructor;
-    break;
-  case GRAPHICS_FILL_REPEATING_BITMAP:
-  case GRAPHICS_FILL_CLIPPED_BITMAP:
-  case GRAPHICS_FILL_NONSMOOTHED_REPEATING_BITMAP:
-  case GRAPHICS_FILL_NONSMOOTHED_CLIPPED_BITMAP:
-    var bitmap = dictionaryResolved[style.bitmapId];
-    var repeat = style.type === GRAPHICS_FILL_REPEATING_BITMAP || style.type === GRAPHICS_FILL_NONSMOOTHED_REPEATING_BITMAP;
-    style.style = buildBitmapPatternFactory(bitmap.props.img, repeat ? 'repeat' : 'no-repeat');
-    break;
-  default:
-    fail('invalid fill style', 'shape');
-  }
-}
-var SOUND_SIZE_8_BIT = 0;
-var SOUND_SIZE_16_BIT = 1;
-var SOUND_TYPE_MONO = 0;
-var SOUND_TYPE_STEREO = 1;
-var SOUND_FORMAT_PCM_BE = 0;
-var SOUND_FORMAT_ADPCM = 1;
-var SOUND_FORMAT_MP3 = 2;
-var SOUND_FORMAT_PCM_LE = 3;
-var SOUND_FORMAT_NELLYMOSER_16 = 4;
-var SOUND_FORMAT_NELLYMOSER_8 = 5;
-var SOUND_FORMAT_NELLYMOSER = 6;
-var SOUND_FORMAT_SPEEX = 11;
-var SOUND_RATES = [
-    5512,
-    11250,
-    22500,
-    44100
-  ];
-var WaveHeader = new Uint8Array([
-    82,
-    73,
-    70,
-    70,
-    0,
-    0,
-    0,
-    0,
-    87,
-    65,
-    86,
-    69,
-    102,
-    109,
-    116,
-    32,
-    16,
-    0,
-    0,
-    0,
-    1,
-    0,
-    2,
-    0,
-    68,
-    172,
-    0,
-    0,
-    16,
-    177,
-    2,
-    0,
-    4,
-    0,
-    16,
-    0,
-    100,
-    97,
-    116,
-    97,
-    0,
-    0,
-    0,
-    0
-  ]);
-function packageWave(data, sampleRate, channels, size, swapBytes) {
-  var sizeInBytes = size >> 3;
-  var sizePerSecond = channels * sampleRate * sizeInBytes;
-  var sizePerSample = channels * sizeInBytes;
-  var dataLength = data.length + (data.length & 1);
-  var buffer = new ArrayBuffer(WaveHeader.length + dataLength);
-  var bytes = new Uint8Array(buffer);
-  bytes.set(WaveHeader);
-  if (swapBytes) {
-    for (var i = 0, j = WaveHeader.length; i < data.length; i += 2, j += 2) {
-      bytes[j] = data[i + 1];
-      bytes[j + 1] = data[i];
-    }
-  } else {
-    bytes.set(data, WaveHeader.length);
-  }
-  var view = new DataView(buffer);
-  view.setUint32(4, dataLength + 36, true);
-  view.setUint16(22, channels, true);
-  view.setUint32(24, sampleRate, true);
-  view.setUint32(28, sizePerSecond, true);
-  view.setUint16(32, sizePerSample, true);
-  view.setUint16(34, size, true);
-  view.setUint32(40, dataLength, true);
-  return {
-    data: bytes,
-    mimeType: 'audio/wav'
-  };
-}
-function defineSound(tag, dictionary) {
-  var channels = tag.soundType == SOUND_TYPE_STEREO ? 2 : 1;
-  var samplesCount = tag.samplesCount;
-  var sampleRate = SOUND_RATES[tag.soundRate];
-  var data = tag.soundData;
-  var pcm, packaged;
-  switch (tag.soundFormat) {
-  case SOUND_FORMAT_PCM_BE:
-    pcm = new Float32Array(samplesCount * channels);
-    if (tag.soundSize == SOUND_SIZE_16_BIT) {
-      for (var i = 0, j = 0; i < pcm.length; i++, j += 2)
-        pcm[i] = (data[j] << 24 | data[j + 1] << 16) / 2147483648;
-      packaged = packageWave(data, sampleRate, channels, 16, true);
-    } else {
-      for (var i = 0; i < pcm.length; i++)
-        pcm[i] = (data[i] - 128) / 128;
-      packaged = packageWave(data, sampleRate, channels, 8, false);
-    }
-    break;
-  case SOUND_FORMAT_PCM_LE:
-    pcm = new Float32Array(samplesCount * channels);
-    if (tag.soundSize == SOUND_SIZE_16_BIT) {
-      for (var i = 0, j = 0; i < pcm.length; i++, j += 2)
-        pcm[i] = (data[j + 1] << 24 | data[j] << 16) / 2147483648;
-      packaged = packageWave(data, sampleRate, channels, 16, false);
-    } else {
-      for (var i = 0; i < pcm.length; i++)
-        pcm[i] = (data[i] - 128) / 128;
-      packaged = packageWave(data, sampleRate, channels, 8, false);
-    }
-    break;
-  case SOUND_FORMAT_MP3:
-    packaged = {
-      data: new Uint8Array(data.subarray(2)),
-      mimeType: 'audio/mpeg'
-    };
-    break;
-  case SOUND_FORMAT_ADPCM:
-    var pcm16 = new Int16Array(samplesCount * channels);
-    decodeACPCMSoundData(data, pcm16, channels);
-    pcm = new Float32Array(samplesCount * channels);
-    for (var i = 0; i < pcm.length; i++)
-      pcm[i] = pcm16[i] / 32768;
-    packaged = packageWave(new Uint8Array(pcm16.buffer), sampleRate, channels, 16, !new Uint8Array(new Uint16Array([
-      1
-    ]).buffer)[0]);
-    break;
-  default:
-    throw new Error('Unsupported audio format: ' + tag.soundFormat);
-  }
-  var sound = {
-      type: 'sound',
-      id: tag.id,
-      sampleRate: sampleRate,
-      channels: channels,
-      pcm: pcm
-    };
-  if (packaged)
-    sound.packaged = packaged;
-  return sound;
-}
-var ACPCMIndexTables = [
-    [
-      -1,
-      2
-    ],
-    [
-      -1,
-      -1,
-      2,
-      4
-    ],
-    [
-      -1,
-      -1,
-      -1,
-      -1,
-      2,
-      4,
-      6,
-      8
-    ],
-    [
-      -1,
-      -1,
-      -1,
-      -1,
-      -1,
-      -1,
-      -1,
-      -1,
-      1,
-      2,
-      4,
-      6,
-      8,
-      10,
-      13,
-      16
-    ]
-  ];
-var ACPCMStepSizeTable = [
-    7,
-    8,
-    9,
-    10,
-    11,
-    12,
-    13,
-    14,
-    16,
-    17,
-    19,
-    21,
-    23,
-    25,
-    28,
-    31,
-    34,
-    37,
-    41,
-    45,
-    50,
-    55,
-    60,
-    66,
-    73,
-    80,
-    88,
-    97,
-    107,
-    118,
-    130,
-    143,
-    157,
-    173,
-    190,
-    209,
-    230,
-    253,
-    279,
-    307,
-    337,
-    371,
-    408,
-    449,
-    494,
-    544,
-    598,
-    658,
-    724,
-    796,
-    876,
-    963,
-    1060,
-    1166,
-    1282,
-    1411,
-    1552,
-    1707,
-    1878,
-    2066,
-    2272,
-    2499,
-    2749,
-    3024,
-    3327,
-    3660,
-    4026,
-    4428,
-    4871,
-    5358,
-    5894,
-    6484,
-    7132,
-    7845,
-    8630,
-    9493,
-    10442,
-    11487,
-    12635,
-    13899,
-    15289,
-    16818,
-    18500,
-    20350,
-    22385,
-    24623,
-    27086,
-    29794,
-    32767
-  ];
-function decodeACPCMSoundData(data, pcm16, channels) {
-  function readBits(n, signed) {
-    while (dataBufferLength < n) {
-      dataBuffer = dataBuffer << 8 | data[dataPosition++];
-      dataBufferLength += 8;
-    }
-    dataBufferLength -= n;
-    return dataBuffer >>> dataBufferLength & (1 << n) - 1;
-  }
-  var dataPosition = 0;
-  var dataBuffer = 0;
-  var dataBufferLength = 0;
-  var pcmPosition = 0;
-  var codeSize = readBits(2);
-  var indexTable = ACPCMIndexTables[codeSize];
-  while (pcmPosition < pcm16.length) {
-    var x = pcm16[pcmPosition++] = readBits(16) << 16 >> 16, x2;
-    var stepIndex = readBits(6), stepIndex2;
-    if (channels > 1) {
-      x2 = pcm16[pcmPosition++] = readBits(16) << 16 >> 16;
-      stepIndex2 = readBits(6);
-    }
-    var signMask = 1 << codeSize + 1;
-    for (var i = 0; i < 4095; i++) {
-      var nibble = readBits(codeSize + 2);
-      var step = ACPCMStepSizeTable[stepIndex];
-      var sum = 0;
-      for (var currentBit = signMask >> 1; currentBit; currentBit >>= 1, step >>= 1) {
-        if (nibble & currentBit)
-          sum += step;
-      }
-      x += (nibble & signMask ? -1 : 1) * (sum + step);
-      pcm16[pcmPosition++] = x = x < -32768 ? -32768 : x > 32767 ? 32767 : x;
-      stepIndex += indexTable[nibble & ~signMask];
-      stepIndex = stepIndex < 0 ? 0 : stepIndex > 88 ? 88 : stepIndex;
-      if (channels > 1) {
-        nibble = readBits(codeSize + 2);
-        step = ACPCMStepSizeTable[stepIndex2];
-        sum = 0;
-        for (var currentBit = signMask >> 1; currentBit; currentBit >>= 1, step >>= 1) {
-          if (nibble & currentBit)
-            sum += step;
-        }
-        x2 += (nibble & signMask ? -1 : 1) * (sum + step);
-        pcm16[pcmPosition++] = x2 = x2 < -32768 ? -32768 : x2 > 32767 ? 32767 : x2;
-        stepIndex2 += indexTable[nibble & ~signMask];
-        stepIndex2 = stepIndex2 < 0 ? 0 : stepIndex2 > 88 ? 88 : stepIndex2;
-      }
-    }
-  }
-}
-var nextSoundStreamId = 0;
-function SwfSoundStream(samplesCount, sampleRate, channels) {
-  this.streamId = nextSoundStreamId++;
-  this.samplesCount = samplesCount;
-  this.sampleRate = sampleRate;
-  this.channels = channels;
-  this.format = null;
-  this.currentSample = 0;
-}
-SwfSoundStream.prototype = {
-  get info() {
-    return {
-      samplesCount: this.samplesCount,
-      sampleRate: this.sampleRate,
-      channels: this.channels,
-      format: this.format,
-      streamId: this.streamId
-    };
-  },
-  decode: function (data) {
-    throw new Error('SwfSoundStream.decode: not implemented');
-  }
-};
-function SwfSoundStream_decode_PCM(data) {
-  var pcm = new Float32Array(data.length);
-  for (var i = 0; i < pcm.length; i++)
-    pcm[i] = (data[i] - 128) / 128;
-  this.currentSample += pcm.length / this.channels;
-  return {
-    streamId: this.streamId,
-    samplesCount: pcm.length / this.channels,
-    pcm: pcm
-  };
-}
-function SwfSoundStream_decode_PCM_be(data) {
-  var pcm = new Float32Array(data.length / 2);
-  for (var i = 0, j = 0; i < pcm.length; i++, j += 2)
-    pcm[i] = (data[j] << 24 | data[j + 1] << 16) / 2147483648;
-  this.currentSample += pcm.length / this.channels;
-  return {
-    streamId: this.streamId,
-    samplesCount: pcm.length / this.channels,
-    pcm: pcm
-  };
-}
-function SwfSoundStream_decode_PCM_le(data) {
-  var pcm = new Float32Array(data.length / 2);
-  for (var i = 0, j = 0; i < pcm.length; i++, j += 2)
-    pcm[i] = (data[j + 1] << 24 | data[j] << 16) / 2147483648;
-  this.currentSample += pcm.length / this.channels;
-  return {
-    streamId: this.streamId,
-    samplesCount: pcm.length / this.channels,
-    pcm: pcm
-  };
-}
-function SwfSoundStream_decode_MP3(data) {
-  var samplesCount = data[1] << 8 | data[0];
-  var seek = data[3] << 8 | data[2];
-  this.currentSample += samplesCount;
-  return {
-    streamId: this.streamId,
-    samplesCount: samplesCount,
-    data: new Uint8Array(data.subarray(4)),
-    seek: seek
-  };
-}
-function createSoundStream(tag) {
-  var channels = tag.streamType == SOUND_TYPE_STEREO ? 2 : 1;
-  var samplesCount = tag.samplesCount;
-  var sampleRate = SOUND_RATES[tag.streamRate];
-  var stream = new SwfSoundStream(samplesCount, sampleRate, channels);
-  switch (tag.streamCompression) {
-  case SOUND_FORMAT_PCM_BE:
-    stream.format = 'wave';
-    if (tag.soundSize == SOUND_SIZE_16_BIT) {
-      stream.decode = SwfSoundStream_decode_PCM_be;
-    } else {
-      stream.decode = SwfSoundStream_decode_PCM;
-    }
-    break;
-  case SOUND_FORMAT_PCM_LE:
-    stream.format = 'wave';
-    if (tag.soundSize == SOUND_SIZE_16_BIT) {
-      stream.decode = SwfSoundStream_decode_PCM_le;
-    } else {
-      stream.decode = SwfSoundStream_decode_PCM;
-    }
-    break;
-  case SOUND_FORMAT_MP3:
-    stream.format = 'mp3';
-    stream.decode = SwfSoundStream_decode_MP3;
-    break;
-  default:
-    throw new Error('Unsupported audio format: ' + tag.soundFormat);
-  }
-  return stream;
-}
-function defineText(tag, dictionary) {
-  var dependencies = [];
-  if (tag.hasFont) {
-    var font = dictionary[tag.fontId];
-    tag.font = font.uniqueName;
-    dependencies.push(font.id);
-  }
-  var props = {
-      type: 'text',
-      id: tag.id,
-      variableName: tag.variableName,
-      tag: tag
-    };
-  if (dependencies.length)
-    props.require = dependencies;
-  return props;
-}
-var $RELEASE = false;
-var isWorker = typeof window === 'undefined';
-if (isWorker && !true) {
-  importScripts.apply(null, [
-    '../../lib/DataView.js/DataView.js',
-    '../flash/util.js',
-    'config.js',
-    'swf.js',
-    'types.js',
-    'structs.js',
-    'tags.js',
-    'inflate.js',
-    'stream.js',
-    'templates.js',
-    'generator.js',
-    'handlers.js',
-    'parser.js',
-    'bitmap.js',
-    'button.js',
-    'font.js',
-    'image.js',
-    'label.js',
-    'shape.js',
-    'sound.js',
-    'text.js'
-  ]);
-}
-function defineSymbol(swfTag, symbols) {
-  var symbol;
-  switch (swfTag.code) {
-  case SWF_TAG_CODE_DEFINE_BITS:
-  case SWF_TAG_CODE_DEFINE_BITS_JPEG2:
-  case SWF_TAG_CODE_DEFINE_BITS_JPEG3:
-  case SWF_TAG_CODE_DEFINE_BITS_JPEG4:
-  case SWF_TAG_CODE_JPEG_TABLES:
-    symbol = defineImage(swfTag, symbols);
-    break;
-  case SWF_TAG_CODE_DEFINE_BITS_LOSSLESS:
-  case SWF_TAG_CODE_DEFINE_BITS_LOSSLESS2:
-    symbol = defineBitmap(swfTag);
-    break;
-  case SWF_TAG_CODE_DEFINE_BUTTON:
-  case SWF_TAG_CODE_DEFINE_BUTTON2:
-    symbol = defineButton(swfTag, symbols);
-    break;
-  case SWF_TAG_CODE_DEFINE_EDIT_TEXT:
-    symbol = defineText(swfTag, symbols);
-    break;
-  case SWF_TAG_CODE_DEFINE_FONT:
-  case SWF_TAG_CODE_DEFINE_FONT2:
-  case SWF_TAG_CODE_DEFINE_FONT3:
-  case SWF_TAG_CODE_DEFINE_FONT4:
-    symbol = defineFont(swfTag, symbols);
-    break;
-  case SWF_TAG_CODE_DEFINE_MORPH_SHAPE:
-  case SWF_TAG_CODE_DEFINE_MORPH_SHAPE2:
-  case SWF_TAG_CODE_DEFINE_SHAPE:
-  case SWF_TAG_CODE_DEFINE_SHAPE2:
-  case SWF_TAG_CODE_DEFINE_SHAPE3:
-  case SWF_TAG_CODE_DEFINE_SHAPE4:
-    symbol = defineShape(swfTag, symbols);
-    break;
-  case SWF_TAG_CODE_DEFINE_SOUND:
-    symbol = defineSound(swfTag, symbols);
-    break;
-  case SWF_TAG_CODE_DEFINE_BINARY_DATA:
-    symbol = {
-      type: 'binary',
-      id: swfTag.id,
-      data: swfTag.data
-    };
-    break;
-  case SWF_TAG_CODE_DEFINE_SPRITE:
-    var depths = {};
-    var frame = {
-        type: 'frame'
-      };
-    var frames = [];
-    var tags = swfTag.tags;
-    var frameScripts = null;
-    var frameIndex = 0;
-    var soundStream = null;
-    for (var i = 0, n = tags.length; i < n; i++) {
-      var tag = tags[i];
-      switch (tag.code) {
-      case SWF_TAG_CODE_DO_ACTION:
-        if (!frameScripts)
-          frameScripts = [];
-        frameScripts.push(frameIndex);
-        frameScripts.push(tag.actionsData);
-        break;
-      case SWF_TAG_CODE_START_SOUND:
-        var startSounds = frame.startSounds || (frame.startSounds = []);
-        startSounds.push(tag);
-        break;
-      case SWF_TAG_CODE_SOUND_STREAM_HEAD:
-        try {
-          soundStream = createSoundStream(tag);
-          frame.soundStream = soundStream.info;
-        } catch (e) {
-        }
-        break;
-      case SWF_TAG_CODE_SOUND_STREAM_BLOCK:
-        if (soundStream) {
-          frame.soundStreamBlock = soundStream.decode(tag.data);
-        }
-        break;
-      case SWF_TAG_CODE_FRAME_LABEL:
-        frame.labelName = tag.name;
-        break;
-      case SWF_TAG_CODE_PLACE_OBJECT:
-      case SWF_TAG_CODE_PLACE_OBJECT2:
-      case SWF_TAG_CODE_PLACE_OBJECT3:
-        depths[tag.depth] = tag;
-        break;
-      case SWF_TAG_CODE_REMOVE_OBJECT:
-      case SWF_TAG_CODE_REMOVE_OBJECT2:
-        depths[tag.depth] = null;
-        break;
-      case SWF_TAG_CODE_SHOW_FRAME:
-        frameIndex += tag.repeat;
-        frame.repeat = tag.repeat;
-        frame.depths = depths;
-        frames.push(frame);
-        depths = {};
-        frame = {
-          type: 'frame'
-        };
-        break;
-      }
-    }
-    symbol = {
-      type: 'sprite',
-      id: swfTag.id,
-      frameCount: swfTag.frameCount,
-      frames: frames,
-      frameScripts: frameScripts
-    };
-    break;
-  case SWF_TAG_CODE_DEFINE_TEXT:
-  case SWF_TAG_CODE_DEFINE_TEXT2:
-    symbol = defineLabel(swfTag, symbols);
-    break;
-  }
-  if (!symbol) {
-    return {
-      command: 'error',
-      message: 'unknown symbol type: ' + swfTag.code
-    };
-  }
-  symbol.isSymbol = true;
-  symbols[swfTag.id] = symbol;
-  return symbol;
-}
-function createParsingContext(commitData) {
-  var depths = {};
-  var symbols = {};
-  var frame = {
-      type: 'frame'
-    };
-  var tagsProcessed = 0;
-  var soundStream = null;
-  var lastProgressSent = 0;
-  return {
-    onstart: function (result) {
-      commitData({
-        command: 'init',
-        result: result
-      });
-    },
-    onprogress: function (result) {
-      if (Date.now() - lastProgressSent > 1000 / 24 || result.bytesLoaded === result.bytesTotal) {
-        commitData({
-          command: 'progress',
-          result: {
-            bytesLoaded: result.bytesLoaded,
-            bytesTotal: result.bytesTotal
-          }
-        });
-        lastProgressSent = Date.now();
-      }
-      var tags = result.tags;
-      for (var n = tags.length; tagsProcessed < n; tagsProcessed++) {
-        var tag = tags[tagsProcessed];
-        if ('id' in tag) {
-          var symbol = defineSymbol(tag, symbols);
-          commitData(symbol, symbol.transferables);
-          continue;
-        }
-        switch (tag.code) {
-        case SWF_TAG_CODE_DEFINE_SCENE_AND_FRAME_LABEL_DATA:
-          frame.sceneData = tag;
-          break;
-        case SWF_TAG_CODE_DEFINE_SCALING_GRID:
-          var symbolUpdate = {
-              isSymbol: true,
-              id: tag.symbolId,
-              updates: {
-                scale9Grid: tag.splitter
-              }
-            };
-          commitData(symbolUpdate);
-          break;
-        case SWF_TAG_CODE_DO_ABC:
-        case SWF_TAG_CODE_DO_ABC_:
-          var abcBlocks = frame.abcBlocks;
-          if (abcBlocks)
-            abcBlocks.push({
-              data: tag.data,
-              flags: tag.flags
-            });
-          else
-            frame.abcBlocks = [
-              {
-                data: tag.data,
-                flags: tag.flags
-              }
-            ];
-          break;
-        case SWF_TAG_CODE_DO_ACTION:
-          var actionBlocks = frame.actionBlocks;
-          if (actionBlocks)
-            actionBlocks.push(tag.actionsData);
-          else
-            frame.actionBlocks = [
-              tag.actionsData
-            ];
-          break;
-        case SWF_TAG_CODE_DO_INIT_ACTION:
-          var initActionBlocks = frame.initActionBlocks || (frame.initActionBlocks = []);
-          initActionBlocks.push({
-            spriteId: tag.spriteId,
-            actionsData: tag.actionsData
-          });
-          break;
-        case SWF_TAG_CODE_START_SOUND:
-          var startSounds = frame.startSounds;
-          if (!startSounds)
-            frame.startSounds = startSounds = [];
-          startSounds.push(tag);
-          break;
-        case SWF_TAG_CODE_SOUND_STREAM_HEAD:
-          try {
-            soundStream = createSoundStream(tag);
-            frame.soundStream = soundStream.info;
-          } catch (e) {
-          }
-          break;
-        case SWF_TAG_CODE_SOUND_STREAM_BLOCK:
-          if (soundStream) {
-            frame.soundStreamBlock = soundStream.decode(tag.data);
-          }
-          break;
-        case SWF_TAG_CODE_EXPORT_ASSETS:
-          var exports = frame.exports;
-          if (exports)
-            frame.exports = exports.concat(tag.exports);
-          else
-            frame.exports = tag.exports.slice(0);
-          break;
-        case SWF_TAG_CODE_SYMBOL_CLASS:
-          var symbolClasses = frame.symbolClasses;
-          if (symbolClasses)
-            frame.symbolClasses = symbolClasses.concat(tag.exports);
-          else
-            frame.symbolClasses = tag.exports.slice(0);
-          break;
-        case SWF_TAG_CODE_FRAME_LABEL:
-          frame.labelName = tag.name;
-          break;
-        case SWF_TAG_CODE_PLACE_OBJECT:
-        case SWF_TAG_CODE_PLACE_OBJECT2:
-        case SWF_TAG_CODE_PLACE_OBJECT3:
-          depths[tag.depth] = tag;
-          break;
-        case SWF_TAG_CODE_REMOVE_OBJECT:
-        case SWF_TAG_CODE_REMOVE_OBJECT2:
-          depths[tag.depth] = null;
-          break;
-        case SWF_TAG_CODE_SET_BACKGROUND_COLOR:
-          frame.bgcolor = tag.color;
-          break;
-        case SWF_TAG_CODE_SHOW_FRAME:
-          frame.repeat = tag.repeat;
-          frame.depths = depths;
-          frame.complete = !(!tag.finalTag);
-          commitData(frame);
-          depths = {};
-          frame = {
-            type: 'frame'
-          };
-          break;
-        }
-      }
-    },
-    oncomplete: function (result) {
-      commitData(result);
-      var stats;
-      if (typeof result.swfVersion === 'number') {
-        var bbox = result.bbox;
-        stats = {
-          topic: 'parseInfo',
-          parseTime: result.parseTime,
-          bytesTotal: result.bytesTotal,
-          swfVersion: result.swfVersion,
-          frameRate: result.frameRate,
-          width: (bbox.xMax - bbox.xMin) / 20,
-          height: (bbox.yMax - bbox.yMin) / 20,
-          isAvm2: !(!result.fileAttributes.doAbc)
-        };
-      }
-      commitData({
-        command: 'complete',
-        stats: stats
-      });
-    },
-    onexception: function (e) {
-      commitData({
-        type: 'exception',
-        message: e.message,
-        stack: e.stack
-      });
-    }
-  };
-}
-function parseBytes(bytes, commitData) {
-  SWF.parse(bytes, createParsingContext(commitData));
-}
-function ResourceLoader(scope) {
-  this.subscription = null;
-  var self = this;
-  if (!isWorker) {
-    this.messenger = {
-      postMessage: function (data) {
-        self.onmessage({
-          data: data
-        });
-      }
-    };
-  } else {
-    this.messenger = scope;
-    scope.onmessage = function (event) {
-      self.listener(event.data);
-    };
-  }
-}
-ResourceLoader.prototype = {
-  terminate: function () {
-    this.messenger = null;
-    this.listener = null;
-  },
-  onmessage: function (event) {
-    this.listener(event.data);
-  },
-  postMessage: function (data) {
-    this.listener && this.listener(data);
-  },
-  listener: function (data) {
-    if (this.subscription) {
-      this.subscription.callback(data.data, data.progress);
-    } else if (data === 'pipe:') {
-      this.subscription = {
-        subscribe: function (callback) {
-          this.callback = callback;
-        }
-      };
-      this.parseLoadedData(this.messenger, this.subscription);
-    } else {
-      this.parseLoadedData(this.messenger, data);
-    }
-  },
-  parseLoadedData: function (loader, request, context) {
-    function commitData(data, transferables) {
-      try {
-        loader.postMessage(data, transferables);
-      } catch (ex) {
-        if (ex != 'DataCloneError') {
-          throw ex;
-        }
-        loader.postMessage(data);
-      }
-    }
-    if (request instanceof ArrayBuffer) {
-      parseBytes(request, commitData);
-    } else if ('subscribe' in request) {
-      var pipe = SWF.parseAsync(createParsingContext(commitData));
-      request.subscribe(function (data, progress) {
-        if (data) {
-          pipe.push(data, progress);
-        } else {
-          pipe.close();
-        }
-      });
-    } else if (typeof FileReaderSync !== 'undefined') {
-      var reader = new FileReaderSync();
-      var buffer = reader.readAsArrayBuffer(request);
-      parseBytes(buffer, commitData);
-    } else {
-      var reader = new FileReader();
-      reader.onload = function () {
-        parseBytes(this.result, commitData);
-      };
-      reader.readAsArrayBuffer(request);
-    }
-  }
-};
-if (isWorker) {
-  var loader = new ResourceLoader(this);
-}
-var codeLengthOrder = [
-    16,
-    17,
-    18,
-    0,
-    8,
-    7,
-    9,
-    6,
-    10,
-    5,
-    11,
-    4,
-    12,
-    3,
-    13,
-    2,
-    14,
-    1,
-    15
-  ];
-var distanceCodes = [];
-var distanceExtraBits = [];
-for (var i = 0, j = 0, code = 1; i < 30; ++i) {
-  distanceCodes[i] = code;
-  code += 1 << (distanceExtraBits[i] = ~(~((j += i > 2 ? 1 : 0) / 2)));
-}
-var bitLengths = [];
-for (var i = 0; i < 32; ++i)
-  bitLengths[i] = 5;
-var fixedDistanceTable = makeHuffmanTable(bitLengths);
-var lengthCodes = [];
-var lengthExtraBits = [];
-for (var i = 0, j = 0, code = 3; i < 29; ++i) {
-  lengthCodes[i] = code - (i == 28 ? 1 : 0);
-  code += 1 << (lengthExtraBits[i] = ~(~((j += i > 4 ? 1 : 0) / 4 % 6)));
-}
-for (var i = 0; i < 288; ++i)
-  bitLengths[i] = i < 144 || i > 279 ? 8 : i < 256 ? 9 : 7;
-var fixedLiteralTable = makeHuffmanTable(bitLengths);
-function makeHuffmanTable(bitLengths) {
-  var maxBits = Math.max.apply(null, bitLengths);
-  var numLengths = bitLengths.length;
-  var size = 1 << maxBits;
-  var codes = new Uint32Array(size);
-  for (var code = 0, len = 1, skip = 2; len <= maxBits; code <<= 1, ++len, skip <<= 1) {
-    for (var val = 0; val < numLengths; ++val) {
-      if (bitLengths[val] === len) {
-        var lsb = 0;
-        for (var i = 0; i < len; ++i)
-          lsb = lsb * 2 + (code >> i & 1);
-        for (var i = lsb; i < size; i += skip)
-          codes[i] = len << 16 | val;
-        ++code;
-      }
-    }
-  }
-  return {
-    codes: codes,
-    maxBits: maxBits
-  };
-}
-function verifyDeflateHeader(bytes) {
-  var header = bytes[0] << 8 | bytes[1];
-}
-function createInflatedStream(bytes, outputLength) {
-  verifyDeflateHeader(bytes);
-  var stream = new Stream(bytes, 2);
-  var output = {
-      data: new Uint8Array(outputLength),
-      available: 0,
-      completed: false
-    };
-  var state = {
-      header: null,
-      distanceTable: null,
-      literalTable: null,
-      sym: null,
-      len: null,
-      sym2: null
-    };
-  do {
-    inflateBlock(stream, output, state);
-  } while (!output.completed && stream.pos < stream.end);
-  return new Stream(output.data, 0, output.available);
-}
-var InflateNoDataError = {};
-function inflateBlock(stream, output, state) {
-  var header = state.header !== null ? state.header : state.header = readBits(stream.bytes, stream, 3);
-  switch (header >> 1) {
-  case 0:
-    stream.align();
-    var pos = stream.pos;
-    if (stream.end - pos < 4) {
-      throw InflateNoDataError;
-    }
-    var len = stream.getUint16(pos, true);
-    var nlen = stream.getUint16(pos + 2, true);
-    if (stream.end - pos < 4 + len) {
-      throw InflateNoDataError;
-    }
-    var begin = pos + 4;
-    var end = stream.pos = begin + len;
-    var sbytes = stream.bytes, dbytes = output.data;
-    dbytes.set(sbytes.subarray(begin, end), output.available);
-    output.available += len;
-    break;
-  case 1:
-    inflate(stream, output, fixedLiteralTable, fixedDistanceTable, state);
-    break;
-  case 2:
-    var distanceTable, literalTable;
-    if (state.distanceTable !== null) {
-      distanceTable = state.distanceTable;
-      literalTable = state.literalTable;
-    } else {
-      var sbytes = stream.bytes;
-      var savedBufferPos = stream.pos;
-      var savedBitBuffer = stream.bitBuffer;
-      var savedBitLength = stream.bitLength;
-      var bitLengths = [];
-      var numLiteralCodes, numDistanceCodes;
-      try {
-        numLiteralCodes = readBits(sbytes, stream, 5) + 257;
-        numDistanceCodes = readBits(sbytes, stream, 5) + 1;
-        var numCodes = numLiteralCodes + numDistanceCodes;
-        var numLengthCodes = readBits(sbytes, stream, 4) + 4;
-        for (var i = 0; i < 19; ++i)
-          bitLengths[codeLengthOrder[i]] = i < numLengthCodes ? readBits(sbytes, stream, 3) : 0;
-        var codeLengthTable = makeHuffmanTable(bitLengths);
-        bitLengths = [];
-        var i = 0;
-        var prev = 0;
-        while (i < numCodes) {
-          var j = 1;
-          var sym = readCode(sbytes, stream, codeLengthTable);
-          switch (sym) {
-          case 16:
-            j = readBits(sbytes, stream, 2) + 3;
-            sym = prev;
-            break;
-          case 17:
-            j = readBits(sbytes, stream, 3) + 3;
-            sym = 0;
-            break;
-          case 18:
-            j = readBits(sbytes, stream, 7) + 11;
-            sym = 0;
-            break;
-          default:
-            prev = sym;
-          }
-          while (j--)
-            bitLengths[i++] = sym;
-        }
-      } catch (e) {
-        stream.pos = savedBufferPos;
-        stream.bitBuffer = savedBitBuffer;
-        stream.bitLength = savedBitLength;
-        throw e;
-      }
-      distanceTable = state.distanceTable = makeHuffmanTable(bitLengths.splice(numLiteralCodes, numDistanceCodes));
-      literalTable = state.literalTable = makeHuffmanTable(bitLengths);
-    }
-    inflate(stream, output, literalTable, distanceTable, state);
-    state.distanceTable = null;
-    state.literalTable = null;
-    break;
-  default:
-    fail('unknown block type', 'inflate');
-  }
-  state.header = null;
-  output.completed = !(!(header & 1));
-}
-function readBits(bytes, stream, size) {
-  var bitBuffer = stream.bitBuffer;
-  var bitLength = stream.bitLength;
-  if (size > bitLength) {
-    var pos = stream.pos;
-    var end = stream.end;
-    do {
-      if (pos >= end) {
-        stream.pos = pos;
-        stream.bitBuffer = bitBuffer;
-        stream.bitLength = bitLength;
-        throw InflateNoDataError;
-      }
-      bitBuffer |= bytes[pos++] << bitLength;
-      bitLength += 8;
-    } while (size > bitLength);
-    stream.pos = pos;
-  }
-  stream.bitBuffer = bitBuffer >>> size;
-  stream.bitLength = bitLength - size;
-  return bitBuffer & (1 << size) - 1;
-}
-function inflate(stream, output, literalTable, distanceTable, state) {
-  var pos = output.available;
-  var dbytes = output.data;
-  var sbytes = stream.bytes;
-  var sym = state.sym !== null ? state.sym : readCode(sbytes, stream, literalTable);
-  while (sym !== 256) {
-    if (sym < 256) {
-      dbytes[pos++] = sym;
-    } else {
-      state.sym = sym;
-      sym -= 257;
-      var len = state.len !== null ? state.len : state.len = lengthCodes[sym] + readBits(sbytes, stream, lengthExtraBits[sym]);
-      var sym2 = state.sym2 !== null ? state.sym2 : state.sym2 = readCode(sbytes, stream, distanceTable);
-      var distance = distanceCodes[sym2] + readBits(sbytes, stream, distanceExtraBits[sym2]);
-      var i = pos - distance;
-      while (len--)
-        dbytes[pos++] = dbytes[i++];
-      state.sym2 = null;
-      state.len = null;
-      state.sym = null;
-    }
-    output.available = pos;
-    sym = readCode(sbytes, stream, literalTable);
-  }
-}
-function readCode(bytes, stream, codeTable) {
-  var bitBuffer = stream.bitBuffer;
-  var bitLength = stream.bitLength;
-  var maxBits = codeTable.maxBits;
-  if (maxBits > bitLength) {
-    var pos = stream.pos;
-    var end = stream.end;
-    do {
-      if (pos >= end) {
-        stream.pos = pos;
-        stream.bitBuffer = bitBuffer;
-        stream.bitLength = bitLength;
-        throw InflateNoDataError;
-      }
-      bitBuffer |= bytes[pos++] << bitLength;
-      bitLength += 8;
-    } while (maxBits > bitLength);
-    stream.pos = pos;
-  }
-  var code = codeTable.codes[bitBuffer & (1 << maxBits) - 1];
-  var len = code >> 16;
-  stream.bitBuffer = bitBuffer >>> len;
-  stream.bitLength = bitLength - len;
-  return code & 65535;
-}
-(function (global) {
-  global['createInflatedStream'] = createInflatedStream;
-}(this));
-var StreamNoDataError = {};
-var Stream = function StreamClosure() {
-    function Stream_align() {
-      this.bitBuffer = this.bitLength = 0;
-    }
-    function Stream_ensure(size) {
-      if (this.pos + size > this.end) {
-        throw StreamNoDataError;
-      }
-    }
-    function Stream_remaining() {
-      return this.end - this.pos;
-    }
-    function Stream_substream(begin, end) {
-      var stream = new Stream(this.bytes);
-      stream.pos = begin;
-      stream.end = end;
-      return stream;
-    }
-    function Stream_push(data) {
-      var bytes = this.bytes;
-      var newBytesLength = this.end + data.length;
-      if (newBytesLength > bytes.length) {
-        throw 'stream buffer overfow';
-      }
-      bytes.set(data, this.end);
-      this.end = newBytesLength;
-    }
-    function Stream(buffer, offset, length, maxLength) {
-      if (offset === undefined)
-        offset = 0;
-      if (buffer.buffer instanceof ArrayBuffer) {
-        offset += buffer.byteOffset;
-        buffer = buffer.buffer;
-      }
-      if (length === undefined)
-        length = buffer.byteLength - offset;
-      if (maxLength === undefined)
-        maxLength = length;
-      var bytes = new Uint8Array(buffer, offset, maxLength);
-      var stream = new DataView(buffer, offset, maxLength);
-      stream.bytes = bytes;
-      stream.pos = 0;
-      stream.end = length;
-      stream.bitBuffer = 0;
-      stream.bitLength = 0;
-      stream.align = Stream_align;
-      stream.ensure = Stream_ensure;
-      stream.remaining = Stream_remaining;
-      stream.substream = Stream_substream;
-      stream.push = Stream_push;
-      return stream;
-    }
-    return Stream;
-  }();
-(function (global) {
-  global['Stream'] = Stream;
-}(this));
-function readSi8($bytes, $stream) {
-  return $stream.getInt8($stream.pos++);
-}
-function readSi16($bytes, $stream) {
-  return $stream.getInt16($stream.pos, $stream.pos += 2);
-}
-function readSi32($bytes, $stream) {
-  return $stream.getInt32($stream.pos, $stream.pos += 4);
-}
-function readUi8($bytes, $stream) {
-  return $bytes[$stream.pos++];
-}
-function readUi16($bytes, $stream) {
-  return $stream.getUint16($stream.pos, $stream.pos += 2);
-}
-function readUi32($bytes, $stream) {
-  return $stream.getUint32($stream.pos, $stream.pos += 4);
-}
-function readFixed($bytes, $stream) {
-  return $stream.getInt32($stream.pos, $stream.pos += 4) / 65536;
-}
-function readFixed8($bytes, $stream) {
-  return $stream.getInt16($stream.pos, $stream.pos += 2) / 256;
-}
-function readFloat16($bytes, $stream) {
-  var ui16 = $stream.getUint16($stream.pos);
-  $stream.pos += 2;
-  var sign = ui16 >> 15 ? -1 : 1;
-  var exponent = (ui16 & 31744) >> 10;
-  var fraction = ui16 & 1023;
-  if (!exponent)
-    return sign * pow(2, -14) * (fraction / 1024);
-  if (exponent === 31)
-    return fraction ? NaN : sign * Infinity;
-  return sign * pow(2, exponent - 15) * (1 + fraction / 1024);
-}
-function readFloat($bytes, $stream) {
-  return $stream.getFloat32($stream.pos, $stream.pos += 4);
-}
-function readDouble($bytes, $stream) {
-  return $stream.getFloat64($stream.pos, $stream.pos += 8);
-}
-function readEncodedU32($bytes, $stream) {
-  var val = $bytes[$stream.pos++];
-  if (!(val & 128))
-    return val;
-  val |= $bytes[$stream.pos++] << 7;
-  if (!(val & 16384))
-    return val;
-  val |= $bytes[$stream.pos++] << 14;
-  if (!(val & 2097152))
-    return val;
-  val |= $bytes[$stream.pos++] << 21;
-  if (!(val & 268435456))
-    return val;
-  return val | $bytes[$stream.pos++] << 28;
-}
-function readBool($bytes, $stream) {
-  return !(!$bytes[$stream.pos++]);
-}
-function align($bytes, $stream) {
-  $stream.align();
-}
-function readSb($bytes, $stream, size) {
-  return readUb($bytes, $stream, size) << 32 - size >> 32 - size;
-}
-var masks = new Uint32Array(33);
-for (var i = 1, mask = 0; i <= 32; ++i)
-  masks[i] = mask = mask << 1 | 1;
-function readUb($bytes, $stream, size) {
-  var buffer = $stream.bitBuffer;
-  var bitlen = $stream.bitLength;
-  while (size > bitlen) {
-    buffer = buffer << 8 | $bytes[$stream.pos++];
-    bitlen += 8;
-  }
-  bitlen -= size;
-  var val = buffer >>> bitlen & masks[size];
-  $stream.bitBuffer = buffer;
-  $stream.bitLength = bitlen;
-  return val;
-}
-function readFb($bytes, $stream, size) {
-  return readSb($bytes, $stream, size) / 65536;
-}
-function readString($bytes, $stream, length) {
-  var codes = [];
-  var pos = $stream.pos;
-  if (length) {
-    codes = slice.call($bytes, pos, pos += length);
-  } else {
-    length = 0;
-    for (var code; code = $bytes[pos++]; length++)
-      codes[length] = code;
-  }
-  $stream.pos = pos;
-  var numChunks = length / 65536;
-  var str = '';
-  for (var i = 0; i < numChunks; ++i) {
-    var begin = i * 65536;
-    var end = begin + 65536;
-    var chunk = codes.slice(begin, end);
-    str += fromCharCode.apply(null, chunk);
-  }
-  return decodeURIComponent(escape(str.replace('\0', '', 'g')));
-}
-function readBinary($bytes, $stream, size) {
-  return $bytes.subarray($stream.pos, $stream.pos = size ? $stream.pos + size : $stream.end);
-}
-(function (global) {
-  global['readSi8'] = readSi8;
-  global['readUi16'] = readUi16;
-  global['readUi32'] = readUi32;
-}(this));
-var tagHandler = function (global) {
-    function defineShape($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var $0 = $.bbox = {};
-      bbox($bytes, $stream, $0, swfVersion, tagCode);
-      var isMorph = $.isMorph = tagCode === 46 || tagCode === 84;
-      if (isMorph) {
-        var $1 = $.bboxMorph = {};
-        bbox($bytes, $stream, $1, swfVersion, tagCode);
-      }
-      var hasStrokes = $.hasStrokes = tagCode === 83 || tagCode === 84;
-      if (hasStrokes) {
-        var $2 = $.strokeBbox = {};
-        bbox($bytes, $stream, $2, swfVersion, tagCode);
-        if (isMorph) {
-          var $3 = $.strokeBboxMorph = {};
-          bbox($bytes, $stream, $3, swfVersion, tagCode);
-        }
-        var reserved = readUb($bytes, $stream, 5);
-        $.fillWinding = readUb($bytes, $stream, 1);
-        $.nonScalingStrokes = readUb($bytes, $stream, 1);
-        $.scalingStrokes = readUb($bytes, $stream, 1);
-      }
-      if (isMorph) {
-        $.offsetMorph = readUi32($bytes, $stream);
-        morphShapeWithStyle($bytes, $stream, $, swfVersion, tagCode, isMorph, hasStrokes);
-      } else {
-        shapeWithStyle($bytes, $stream, $, swfVersion, tagCode, isMorph, hasStrokes);
-      }
-      return $;
-    }
-    function placeObject($bytes, $stream, $, swfVersion, tagCode) {
-      var flags, hasEvents, clip, hasName, hasRatio, hasCxform, hasMatrix, place;
-      var move, hasBackgroundColor, hasVisibility, hasImage, hasClassName, cache;
-      var blend, hasFilters, eoe;
-      $ || ($ = {});
-      if (tagCode > 4) {
-        if (tagCode > 26) {
-          flags = readUi16($bytes, $stream);
-        } else {
-          flags = readUi8($bytes, $stream);
-        }
-        hasEvents = $.hasEvents = flags >> 7 & 1;
-        clip = $.clip = flags >> 6 & 1;
-        hasName = $.hasName = flags >> 5 & 1;
-        hasRatio = $.hasRatio = flags >> 4 & 1;
-        hasCxform = $.hasCxform = flags >> 3 & 1;
-        hasMatrix = $.hasMatrix = flags >> 2 & 1;
-        place = $.place = flags >> 1 & 1;
-        move = $.move = flags & 1;
-        if (tagCode === 70) {
-          hasBackgroundColor = $.hasBackgroundColor = flags >> 15 & 1;
-          hasVisibility = $.hasVisibility = flags >> 14 & 1;
-          hasImage = $.hasImage = flags >> 12 & 1;
-          hasClassName = $.hasClassName = flags >> 11 & 1;
-          cache = $.cache = flags >> 10 & 1;
-          blend = $.blend = flags >> 9 & 1;
-          hasFilters = $.hasFilters = flags >> 8 & 1;
-        } else {
-          cache = $.cache = 0;
-          blend = $.blend = 0;
-          hasFilters = $.hasFilters = 0;
-        }
-        $.depth = readUi16($bytes, $stream);
-        if (hasClassName) {
-          $.className = readString($bytes, $stream, 0);
-        }
-        if (place) {
-          $.symbolId = readUi16($bytes, $stream);
-        }
-        if (hasMatrix) {
-          var $0 = $.matrix = {};
-          matrix($bytes, $stream, $0, swfVersion, tagCode);
-        }
-        if (hasCxform) {
-          var $1 = $.cxform = {};
-          cxform($bytes, $stream, $1, swfVersion, tagCode);
-        }
-        if (hasRatio) {
-          $.ratio = readUi16($bytes, $stream);
-        }
-        if (hasName) {
-          $.name = readString($bytes, $stream, 0);
-        }
-        if (clip) {
-          $.clipDepth = readUi16($bytes, $stream);
-        }
-        if (hasFilters) {
-          var count = readUi8($bytes, $stream);
-          var $2 = $.filters = [];
-          var $3 = count;
-          while ($3--) {
-            var $4 = {};
-            anyFilter($bytes, $stream, $4, swfVersion, tagCode);
-            $2.push($4);
-          }
-        }
-        if (blend) {
-          $.blendMode = readUi8($bytes, $stream);
-        }
-        if (cache) {
-          $.bmpCache = readUi8($bytes, $stream);
-        }
-        if (hasEvents) {
-          var reserved = readUi16($bytes, $stream);
-          if (swfVersion >= 6) {
-            var allFlags = readUi32($bytes, $stream);
-          } else {
-            var allFlags = readUi16($bytes, $stream);
-          }
-          var $28 = $.events = [];
-          do {
-            var $29 = {};
-            var temp = events($bytes, $stream, $29, swfVersion, tagCode);
-            eoe = temp.eoe;
-            $28.push($29);
-          } while (!eoe);
-        }
-        if (hasBackgroundColor) {
-          var $126 = $.backgroundColor = {};
-          argb($bytes, $stream, $126, swfVersion, tagCode);
-        }
-        if (hasVisibility) {
-          $.visibility = readUi8($bytes, $stream);
-        }
-      } else {
-        $.place = 1;
-        $.symbolId = readUi16($bytes, $stream);
-        $.depth = readUi16($bytes, $stream);
-        $.hasMatrix = 1;
-        var $30 = $.matrix = {};
-        matrix($bytes, $stream, $30, swfVersion, tagCode);
-        if ($stream.remaining()) {
-          $.hasCxform = 1;
-          var $31 = $.cxform = {};
-          cxform($bytes, $stream, $31, swfVersion, tagCode);
-        }
-      }
-      return $;
-    }
-    function removeObject($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      if (tagCode === 5) {
-        $.symbolId = readUi16($bytes, $stream);
-      }
-      $.depth = readUi16($bytes, $stream);
-      return $;
-    }
-    function defineImage($bytes, $stream, $, swfVersion, tagCode) {
-      var imgData;
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      if (tagCode > 21) {
-        var alphaDataOffset = readUi32($bytes, $stream);
-        if (tagCode === 90) {
-          $.deblock = readFixed8($bytes, $stream);
-        }
-        imgData = $.imgData = readBinary($bytes, $stream, alphaDataOffset);
-        $.alphaData = readBinary($bytes, $stream, 0);
-      } else {
-        imgData = $.imgData = readBinary($bytes, $stream, 0);
-      }
-      switch (imgData[0] << 8 | imgData[1]) {
-      case 65496:
-      case 65497:
-        $.mimeType = 'image/jpeg';
-        break;
-      case 35152:
-        $.mimeType = 'image/png';
-        break;
-      case 18249:
-        $.mimeType = 'image/gif';
-        break;
-      default:
-        $.mimeType = 'application/octet-stream';
-      }
-      if (tagCode === 6) {
-        $.incomplete = 1;
-      }
-      return $;
-    }
-    function defineButton($bytes, $stream, $, swfVersion, tagCode) {
-      var eob, hasFilters, count, blend;
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      if (tagCode == 7) {
-        var $0 = $.characters = [];
-        do {
-          var $1 = {};
-          var temp = button($bytes, $stream, $1, swfVersion, tagCode);
-          eob = temp.eob;
-          $0.push($1);
-        } while (!eob);
-        $.actionsData = readBinary($bytes, $stream, 0);
-      } else {
-        var trackFlags = readUi8($bytes, $stream);
-        $.trackAsMenu = trackFlags >> 7 & 1;
-        var actionOffset = readUi16($bytes, $stream);
-        var $28 = $.characters = [];
-        do {
-          var $29 = {};
-          var flags = readUi8($bytes, $stream);
-          var eob = $29.eob = !flags;
-          if (swfVersion >= 8) {
-            blend = $29.blend = flags >> 5 & 1;
-            hasFilters = $29.hasFilters = flags >> 4 & 1;
-          } else {
-            blend = $29.blend = 0;
-            hasFilters = $29.hasFilters = 0;
-          }
-          $29.stateHitTest = flags >> 3 & 1;
-          $29.stateDown = flags >> 2 & 1;
-          $29.stateOver = flags >> 1 & 1;
-          $29.stateUp = flags & 1;
-          if (!eob) {
-            $29.symbolId = readUi16($bytes, $stream);
-            $29.depth = readUi16($bytes, $stream);
-            var $30 = $29.matrix = {};
-            matrix($bytes, $stream, $30, swfVersion, tagCode);
-            if (tagCode === 34) {
-              var $31 = $29.cxform = {};
-              cxform($bytes, $stream, $31, swfVersion, tagCode);
-            }
-            if (hasFilters) {
-              var count = readUi8($bytes, $stream);
-              var $2 = $.filters = [];
-              var $3 = count;
-              while ($3--) {
-                var $4 = {};
-                anyFilter($bytes, $stream, $4, swfVersion, tagCode);
-                $2.push($4);
-              }
-            }
-            if (blend) {
-              $29.blendMode = readUi8($bytes, $stream);
-            }
-          }
-          $28.push($29);
-        } while (!eob);
-        if (!(!actionOffset)) {
-          var $56 = $.buttonActions = [];
-          do {
-            var $57 = {};
-            buttonCondAction($bytes, $stream, $57, swfVersion, tagCode);
-            $56.push($57);
-          } while ($stream.remaining() > 0);
-        }
-      }
-      return $;
-    }
-    function defineJPEGTables($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = 0;
-      $.imgData = readBinary($bytes, $stream, 0);
-      $.mimeType = 'application/octet-stream';
-      return $;
-    }
-    function setBackgroundColor($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      var $0 = $.color = {};
-      rgb($bytes, $stream, $0, swfVersion, tagCode);
-      return $;
-    }
-    function defineBinaryData($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var reserved = readUi32($bytes, $stream);
-      $.data = readBinary($bytes, $stream, 0);
-      return $;
-    }
-    function defineFont($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var firstOffset = readUi16($bytes, $stream);
-      var glyphCount = $.glyphCount = firstOffset / 2;
-      var restOffsets = [];
-      var $0 = glyphCount - 1;
-      while ($0--) {
-        restOffsets.push(readUi16($bytes, $stream));
-      }
-      $.offsets = [
-        firstOffset
-      ].concat(restOffsets);
-      var $1 = $.glyphs = [];
-      var $2 = glyphCount;
-      while ($2--) {
-        var $3 = {};
-        shape($bytes, $stream, $3, swfVersion, tagCode);
-        $1.push($3);
-      }
-      return $;
-    }
-    function defineLabel($bytes, $stream, $, swfVersion, tagCode) {
-      var eot;
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var $0 = $.bbox = {};
-      bbox($bytes, $stream, $0, swfVersion, tagCode);
-      var $1 = $.matrix = {};
-      matrix($bytes, $stream, $1, swfVersion, tagCode);
-      var glyphBits = $.glyphBits = readUi8($bytes, $stream);
-      var advanceBits = $.advanceBits = readUi8($bytes, $stream);
-      var $2 = $.records = [];
-      do {
-        var $3 = {};
-        var temp = textRecord($bytes, $stream, $3, swfVersion, tagCode, glyphBits, advanceBits);
-        eot = temp.eot;
-        $2.push($3);
-      } while (!eot);
-      return $;
-    }
-    function doAction($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      if (tagCode === 59) {
-        $.spriteId = readUi16($bytes, $stream);
-      }
-      $.actionsData = readBinary($bytes, $stream, 0);
-      return $;
-    }
-    function defineSound($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var soundFlags = readUi8($bytes, $stream);
-      $.soundFormat = soundFlags >> 4 & 15;
-      $.soundRate = soundFlags >> 2 & 3;
-      $.soundSize = soundFlags >> 1 & 1;
-      $.soundType = soundFlags & 1;
-      $.samplesCount = readUi32($bytes, $stream);
-      $.soundData = readBinary($bytes, $stream, 0);
-      return $;
-    }
-    function startSound($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      if (tagCode == 15) {
-        $.soundId = readUi16($bytes, $stream);
-      }
-      if (tagCode == 89) {
-        $.soundClassName = readString($bytes, $stream, 0);
-      }
-      var $0 = $.soundInfo = {};
-      soundInfo($bytes, $stream, $0, swfVersion, tagCode);
-      return $;
-    }
-    function soundStreamHead($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      var playbackFlags = readUi8($bytes, $stream);
-      $.playbackRate = playbackFlags >> 2 & 3;
-      $.playbackSize = playbackFlags >> 1 & 1;
-      $.playbackType = playbackFlags & 1;
-      var streamFlags = readUi8($bytes, $stream);
-      var streamCompression = $.streamCompression = streamFlags >> 4 & 15;
-      $.streamRate = streamFlags >> 2 & 3;
-      $.streamSize = streamFlags >> 1 & 1;
-      $.streamType = streamFlags & 1;
-      $.samplesCount = readUi32($bytes, $stream);
-      if (streamCompression == 2) {
-        $.latencySeek = readSi16($bytes, $stream);
-      }
-      return $;
-    }
-    function soundStreamBlock($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.data = readBinary($bytes, $stream, 0);
-      return $;
-    }
-    function defineBitmap($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var format = $.format = readUi8($bytes, $stream);
-      $.width = readUi16($bytes, $stream);
-      $.height = readUi16($bytes, $stream);
-      $.hasAlpha = tagCode === 36;
-      if (format === 3) {
-        $.colorTableSize = readUi8($bytes, $stream);
-      }
-      $.bmpData = readBinary($bytes, $stream, 0);
-      return $;
-    }
-    function defineText($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var $0 = $.bbox = {};
-      bbox($bytes, $stream, $0, swfVersion, tagCode);
-      var flags = readUi16($bytes, $stream);
-      var hasText = $.hasText = flags >> 7 & 1;
-      $.wordWrap = flags >> 6 & 1;
-      $.multiline = flags >> 5 & 1;
-      $.password = flags >> 4 & 1;
-      $.readonly = flags >> 3 & 1;
-      var hasColor = $.hasColor = flags >> 2 & 1;
-      var hasMaxLength = $.hasMaxLength = flags >> 1 & 1;
-      var hasFont = $.hasFont = flags & 1;
-      var hasFontClass = $.hasFontClass = flags >> 15 & 1;
-      $.autoSize = flags >> 14 & 1;
-      var hasLayout = $.hasLayout = flags >> 13 & 1;
-      $.noSelect = flags >> 12 & 1;
-      $.border = flags >> 11 & 1;
-      $.wasStatic = flags >> 10 & 1;
-      $.html = flags >> 9 & 1;
-      $.useOutlines = flags >> 8 & 1;
-      if (hasFont) {
-        $.fontId = readUi16($bytes, $stream);
-      }
-      if (hasFontClass) {
-        $.fontClass = readString($bytes, $stream, 0);
-      }
-      if (hasFont) {
-        $.fontHeight = readUi16($bytes, $stream);
-      }
-      if (hasColor) {
-        var $1 = $.color = {};
-        rgba($bytes, $stream, $1, swfVersion, tagCode);
-      }
-      if (hasMaxLength) {
-        $.maxLength = readUi16($bytes, $stream);
-      }
-      if (hasLayout) {
-        $.align = readUi8($bytes, $stream);
-        $.leftMargin = readUi16($bytes, $stream);
-        $.rightMargin = readUi16($bytes, $stream);
-        $.indent = readSi16($bytes, $stream);
-        $.leading = readSi16($bytes, $stream);
-      }
-      $.variableName = readString($bytes, $stream, 0);
-      if (hasText) {
-        $.initialText = readString($bytes, $stream, 0);
-      }
-      return $;
-    }
-    function frameLabel($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.name = readString($bytes, $stream, 0);
-      return $;
-    }
-    function defineFont2($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.id = readUi16($bytes, $stream);
-      var hasLayout = $.hasLayout = readUb($bytes, $stream, 1);
-      if (swfVersion > 5) {
-        $.shiftJis = readUb($bytes, $stream, 1);
-      } else {
-        var reserved = readUb($bytes, $stream, 1);
-      }
-      $.smallText = readUb($bytes, $stream, 1);
-      $.ansi = readUb($bytes, $stream, 1);
-      var wideOffset = $.wideOffset = readUb($bytes, $stream, 1);
-      var wide = $.wide = readUb($bytes, $stream, 1);
-      $.italic = readUb($bytes, $stream, 1);
-      $.bold = readUb($bytes, $stream, 1);
-      if (swfVersion > 5) {
-        $.language = readUi8($bytes, $stream);
-      } else {
-        var reserved = readUi8($bytes, $stream);
-        $.language = 0;
-      }
-      var nameLength = readUi8($bytes, $stream);
-      $.name = readString($bytes, $stream, nameLength);
-      if (tagCode === 75) {
-        $.resolution = 20;
-      }
-      var glyphCount = $.glyphCount = readUi16($bytes, $stream);
-      if (wideOffset) {
-        var $0 = $.offsets = [];
-        var $1 = glyphCount;
-        while ($1--) {
-          $0.push(readUi32($bytes, $stream));
-        }
-        $.mapOffset = readUi32($bytes, $stream);
-      } else {
-        var $2 = $.offsets = [];
-        var $3 = glyphCount;
-        while ($3--) {
-          $2.push(readUi16($bytes, $stream));
-        }
-        $.mapOffset = readUi16($bytes, $stream);
-      }
-      var $4 = $.glyphs = [];
-      var $5 = glyphCount;
-      while ($5--) {
-        var $6 = {};
-        shape($bytes, $stream, $6, swfVersion, tagCode);
-        $4.push($6);
-      }
-      if (wide) {
-        var $47 = $.codes = [];
-        var $48 = glyphCount;
-        while ($48--) {
-          $47.push(readUi16($bytes, $stream));
-        }
-      } else {
-        var $49 = $.codes = [];
-        var $50 = glyphCount;
-        while ($50--) {
-          $49.push(readUi8($bytes, $stream));
-        }
-      }
-      if (hasLayout) {
-        $.ascent = readUi16($bytes, $stream);
-        $.descent = readUi16($bytes, $stream);
-        $.leading = readSi16($bytes, $stream);
-        var $51 = $.advance = [];
-        var $52 = glyphCount;
-        while ($52--) {
-          $51.push(readSi16($bytes, $stream));
-        }
-        var $53 = $.bbox = [];
-        var $54 = glyphCount;
-        while ($54--) {
-          var $55 = {};
-          bbox($bytes, $stream, $55, swfVersion, tagCode);
-          $53.push($55);
-        }
-        var kerningCount = readUi16($bytes, $stream);
-        var $56 = $.kerning = [];
-        var $57 = kerningCount;
-        while ($57--) {
-          var $58 = {};
-          kerning($bytes, $stream, $58, swfVersion, tagCode, wide);
-          $56.push($58);
-        }
-      }
-      return $;
-    }
-    function fileAttributes($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      var reserved = readUb($bytes, $stream, 1);
-      $.useDirectBlit = readUb($bytes, $stream, 1);
-      $.useGpu = readUb($bytes, $stream, 1);
-      $.hasMetadata = readUb($bytes, $stream, 1);
-      $.doAbc = readUb($bytes, $stream, 1);
-      $.noCrossDomainCaching = readUb($bytes, $stream, 1);
-      $.relativeUrls = readUb($bytes, $stream, 1);
-      $.network = readUb($bytes, $stream, 1);
-      var pad = readUb($bytes, $stream, 24);
-      return $;
-    }
-    function doABC($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      if (tagCode === 82) {
-        $.flags = readUi32($bytes, $stream);
-      } else {
-        $.flags = 0;
-      }
-      if (tagCode === 82) {
-        $.name = readString($bytes, $stream, 0);
-      } else {
-        $.name = '';
-      }
-      $.data = readBinary($bytes, $stream, 0);
-      return $;
-    }
-    function exportAssets($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      var exportsCount = readUi16($bytes, $stream);
-      var $0 = $.exports = [];
-      var $1 = exportsCount;
-      while ($1--) {
-        var $2 = {};
-        $2.symbolId = readUi16($bytes, $stream);
-        $2.className = readString($bytes, $stream, 0);
-        $0.push($2);
-      }
-      return $;
-    }
-    function symbolClass($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      var symbolCount = readUi16($bytes, $stream);
-      var $0 = $.exports = [];
-      var $1 = symbolCount;
-      while ($1--) {
-        var $2 = {};
-        $2.symbolId = readUi16($bytes, $stream);
-        $2.className = readString($bytes, $stream, 0);
-        $0.push($2);
-      }
-      return $;
-    }
-    function defineScalingGrid($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      $.symbolId = readUi16($bytes, $stream);
-      var $0 = $.splitter = {};
-      bbox($bytes, $stream, $0, swfVersion, tagCode);
-      return $;
-    }
-    function defineScene($bytes, $stream, $, swfVersion, tagCode) {
-      $ || ($ = {});
-      var sceneCount = readEncodedU32($bytes, $stream);
-      var $0 = $.scenes = [];
-      var $1 = sceneCount;
-      while ($1--) {
-        var $2 = {};
-        $2.offset = readEncodedU32($bytes, $stream);
-        $2.name = readString($bytes, $stream, 0);
-        $0.push($2);
-      }
-      var labelCount = readEncodedU32($bytes, $stream);
-      var $3 = $.labels = [];
-      var $4 = labelCount;
-      while ($4--) {
-        var $5 = {};
-        $5.frame = readEncodedU32($bytes, $stream);
-        $5.name = readString($bytes, $stream, 0);
-        $3.push($5);
-      }
-      return $;
-    }
-    function bbox($bytes, $stream, $, swfVersion, tagCode) {
-      align($bytes, $stream);
-      var bits = readUb($bytes, $stream, 5);
-      var xMin = readSb($bytes, $stream, bits);
-      var xMax = readSb($bytes, $stream, bits);
-      var yMin = readSb($bytes, $stream, bits);
-      var yMax = readSb($bytes, $stream, bits);
-      $.xMin = xMin;
-      $.xMax = xMax;
-      $.yMin = yMin;
-      $.yMax = yMax;
-      align($bytes, $stream);
-    }
-    function rgb($bytes, $stream, $, swfVersion, tagCode) {
-      $.red = readUi8($bytes, $stream);
-      $.green = readUi8($bytes, $stream);
-      $.blue = readUi8($bytes, $stream);
-      $.alpha = 255;
-      return;
-    }
-    function rgba($bytes, $stream, $, swfVersion, tagCode) {
-      $.red = readUi8($bytes, $stream);
-      $.green = readUi8($bytes, $stream);
-      $.blue = readUi8($bytes, $stream);
-      $.alpha = readUi8($bytes, $stream);
-      return;