Merge mozilla-central and inbound
authorEd Morley <emorley@mozilla.com>
Fri, 03 Oct 2014 15:14:53 +0100
changeset 208705 7a45d556f280831c80ec0d510e4b91160955ae66
parent 208651 388e101e75c826f64aa3fb0de4b7fcf1faadcbbf (current diff)
parent 208704 60e90dd7f64f8d0fea7661370c01dea74f102261 (diff)
child 208706 4e05fcdee48f8a54dc27ca4e11ec66e70896fa9a
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
milestone35.0a1
Merge mozilla-central and inbound
js/src/configure.in
mobile/android/base/GeckoApp.java
--- a/browser/extensions/shumway/content/ShumwayStreamConverter.jsm
+++ b/browser/extensions/shumway/content/ShumwayStreamConverter.jsm
@@ -26,16 +26,17 @@ const Cu = Components.utils;
 const SHUMWAY_CONTENT_TYPE = 'application/x-shockwave-flash';
 const EXPECTED_PLAYPREVIEW_URI_PREFIX = 'data:application/x-moz-playpreview;,' +
                                         SHUMWAY_CONTENT_TYPE;
 
 const FIREFOX_ID = '{ec8030f7-c20a-464f-9b0e-13a3a9e97384}';
 const SEAMONKEY_ID = '{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}';
 
 const MAX_CLIPBOARD_DATA_SIZE = 8000;
+const MAX_USER_INPUT_TIMEOUT = 250; // ms
 
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
 Cu.import('resource://gre/modules/Services.jsm');
 Cu.import('resource://gre/modules/NetUtil.jsm');
 Cu.import('resource://gre/modules/Promise.jsm');
 
 XPCOMUtils.defineLazyModuleGetter(this, 'PrivateBrowsingUtils',
   'resource://gre/modules/PrivateBrowsingUtils.jsm');
@@ -251,16 +252,17 @@ function ChromeActions(url, window, docu
   this.movieParams = null;
   this.baseUrl = url;
   this.isOverlay = false;
   this.isPausedAtStart = false;
   this.window = window;
   this.document = document;
   this.externalComInitialized = false;
   this.allowScriptAccess = false;
+  this.lastUserInput = 0;
   this.crossdomainRequestsCache = Object.create(null);
   this.telemetry = {
     startTime: Date.now(),
     features: [],
     errors: [],
     pageIndex: 0
   };
 }
@@ -411,19 +413,20 @@ ChromeActions.prototype = {
       }
     });
   },
   fallback: function(automatic) {
     automatic = !!automatic;
     fallbackToNativePlugin(this.window, !automatic, automatic);
   },
   setClipboard: function (data) {
+    // We don't trust our Shumway non-privileged code just yet to verify the
+    // user input -- using monitorUserInput function below to track that.
     if (typeof data !== 'string' ||
-        data.length > MAX_CLIPBOARD_DATA_SIZE ||
-        !this.document.hasFocus()) {
+        (Date.now() - this.lastUserInput) > MAX_USER_INPUT_TIMEOUT) {
       return;
     }
     // TODO other security checks?
 
     let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"]
                       .getService(Ci.nsIClipboardHelper);
     clipboard.copyString(data);
   },
@@ -467,35 +470,43 @@ ChromeActions.prototype = {
           !this.telemetry.errors[errorType]) {
         this.telemetry.errors[errorType] = true; // record only one report per SWF
         ShumwayTelemetry.onError(errorType);
       }
       break;
     }
   },
   reportIssue: function(exceptions) {
-    var base = "http://shumway-issue-reporter.paas.allizom.org/input?";
+    var urlTemplate = "https://bugzilla.mozilla.org/enter_bug.cgi?op_sys=All&priority=--" +
+                      "&rep_platform=All&target_milestone=---&version=Trunk&product=Firefox" +
+                      "&component=Shumway&short_desc=&comment={comment}" +
+                      "&bug_file_loc={url}";
     var windowUrl = this.window.parent.wrappedJSObject.location + '';
-    var params = 'url=' + encodeURIComponent(windowUrl);
-    params += '&swf=' + encodeURIComponent(this.url);
+    var url = urlTemplate.split('{url}').join(encodeURIComponent(windowUrl));
+    var params = {
+      swf: encodeURIComponent(this.url)
+    };
     getVersionInfo().then(function (versions) {
-      params += '&ffbuild=' + encodeURIComponent(versions.geckoMstone + ' (' +
-                                                 versions.geckoBuildID + ')');
-      params += '&shubuild=' + encodeURIComponent(versions.shumwayVersion);
+      params.versions = versions;
     }).then(function () {
-      var postDataStream = StringInputStream.
-                           createInstance(Ci.nsIStringInputStream);
-      postDataStream.data = 'exceptions=' + encodeURIComponent(exceptions);
-      var postData = MimeInputStream.createInstance(Ci.nsIMIMEInputStream);
-      postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
-      postData.addContentLength = true;
-      postData.setData(postDataStream);
-      this.window.openDialog('chrome://browser/content', '_blank',
-                             'all,dialog=no', base + params, null, null,
-                             postData);
+      params.ffbuild = encodeURIComponent(params.versions.geckoMstone +
+                                          ' (' + params.versions.geckoBuildID + ')');
+      params.shubuild = encodeURIComponent(params.versions.shumwayVersion);
+      params.exceptions = encodeURIComponent(exceptions);
+      var comment = '%2B%2B%2B This bug was initially via the problem reporting functionality in ' +
+                    'Shumway %2B%2B%2B%0A%0A' +
+                    'Please add any further information that you deem helpful here:%0A%0A%0A' +
+                    '----------------------%0A%0A' +
+                    'Technical Information:%0A' +
+                    'Firefox version: ' + params.ffbuild + '%0A' +
+                    'Shumway version: ' + params.shubuild;
+      url = url.split('{comment}').join(comment);
+      //this.window.openDialog('chrome://browser/content', '_blank', 'all,dialog=no', url);
+      dump(111);
+      this.window.open(url);
     }.bind(this));
   },
   externalCom: function (data) {
     if (!this.allowScriptAccess)
       return;
 
     // TODO check security ?
     var parentWindow = this.window.parent.wrappedJSObject;
@@ -521,16 +532,33 @@ ChromeActions.prototype = {
       return embedTag.__flash__unregisterCallback(data.functionName);
     }
   },
   getWindowUrl: function() {
     return this.window.parent.wrappedJSObject.location + '';
   }
 };
 
+function monitorUserInput(actions) {
+  function notifyUserInput() {
+    var win = actions.window;
+    var winUtils = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor).
+                       getInterface(Components.interfaces.nsIDOMWindowUtils);
+    if (winUtils.isHandlingUserInput) {
+      actions.lastUserInput = Date.now();
+    }
+  }
+
+  var document = actions.document;
+  document.addEventListener('mousedown', notifyUserInput, false);
+  document.addEventListener('mouseup', notifyUserInput, false);
+  document.addEventListener('keydown', notifyUserInput, false);
+  document.addEventListener('keyup', notifyUserInput, false);
+}
+
 // Event listener to trigger chrome privedged code.
 function RequestListener(actions) {
   this.actions = actions;
 }
 // Receive an event and synchronously or asynchronously responds.
 RequestListener.prototype.receive = function(event) {
   var message = event.target;
   var action = event.detail.action;
@@ -732,21 +760,22 @@ function initExternalCom(wrappedWindow, 
         }
         return xml + '</object>';
       case 'string':
         return '<string>' + obj.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;') + '</string>';
       case 'undefined':
         return '<undefined/>';
       }
     };
-    var sandbox = new Cu.Sandbox(wrappedWindow, {sandboxPrototype: wrappedWindow});
-    wrappedWindow.__flash__eval = function (evalInSandbox, sandbox, expr) {
+    wrappedWindow.__flash__eval = function (expr) {
       this.console.log('__flash__eval: ' + expr);
-      return evalInSandbox(expr, sandbox);
-    }.bind(wrappedWindow, Cu.evalInSandbox, sandbox);
+      // allowScriptAccess protects page from unwanted swf scripts,
+      // we can execute script in the page context without restrictions.
+      return this.eval(expr);
+    }.bind(wrappedWindow);
     wrappedWindow.__flash__call = function (expr) {
       this.console.log('__flash__call (ignored): ' + expr);
     };
   }
   wrappedObject.__flash__registerCallback = function (functionName) {
     wrappedWindow.console.log('__flash__registerCallback: ' + functionName);
     this[functionName] = function () {
       var args = Array.prototype.slice.call(arguments, 0);
@@ -984,16 +1013,17 @@ ShumwayStreamConverterBase.prototype = {
           activateShumwayScripts(domWindow, isSimpleMode);
         }.bind(actions, domWindow, isSimpleMode);
         ActivationQueue.enqueue(actions);
 
         let requestListener = new RequestListener(actions);
         domWindow.addEventListener('shumway.message', function(event) {
           requestListener.receive(event);
         }, false, true);
+        monitorUserInput(actions);
 
         listener.onStopRequest(aRequest, context, statusCode);
       }
     };
 
     // Keep the URL the same so the browser sees it as the same.
     channel.originalURI = aRequest.URI;
     channel.loadGroup = aRequest.loadGroup;
--- a/browser/extensions/shumway/content/ShumwayUtils.jsm
+++ b/browser/extensions/shumway/content/ShumwayUtils.jsm
@@ -24,17 +24,16 @@ const PREF_IGNORE_CTP = PREF_PREFIX + 'i
 
 let Cc = Components.classes;
 let Ci = Components.interfaces;
 let Cm = Components.manager;
 let Cu = Components.utils;
 
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
 Cu.import('resource://gre/modules/Services.jsm');
-Cu.import('resource://shumway/ShumwayStreamConverter.jsm');
 
 let Svc = {};
 XPCOMUtils.defineLazyServiceGetter(Svc, 'mime',
                                    '@mozilla.org/mime;1',
                                    'nsIMIMEService');
 XPCOMUtils.defineLazyServiceGetter(Svc, 'pluginHost',
                                    '@mozilla.org/plugin/host;1',
                                    'nsIPluginHost');
@@ -106,16 +105,17 @@ let ShumwayUtils = {
     return !getBoolPref(PREF_DISABLED, true);
   },
 
   _ensureRegistered: function _ensureRegistered() {
     if (this._registered)
       return;
 
     // Load the component and register it.
+    Cu.import('resource://shumway/ShumwayStreamConverter.jsm');
     converterFactory.register(ShumwayStreamConverter);
     overlayConverterFactory.register(ShumwayStreamOverlayConverter);
 
     var ignoreCTP = getBoolPref(PREF_IGNORE_CTP, true);
 
     Svc.pluginHost.registerPlayPreviewMimeType(SWF_CONTENT_TYPE, ignoreCTP);
 
     this._registered = true;
@@ -125,16 +125,17 @@ let ShumwayUtils = {
 
   _ensureUnregistered: function _ensureUnregistered() {
     if (!this._registered)
       return;
 
     // Remove the contract/component.
     converterFactory.unregister();
     overlayConverterFactory.unregister();
+    Cu.unload('resource://shumway/ShumwayStreamConverter.jsm');
 
     Svc.pluginHost.unregisterPlayPreviewMimeType(SWF_CONTENT_TYPE);
 
     this._registered = false;
 
     log('Shumway is unregistered');
   }
 };
index 79d7cfb004bbef92db888c56630746b2db1bb2aa..4e922552889b14480dad19422453ae24c780670c
GIT binary patch
literal 26770
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
index 32981fe49ce173665c877cd454ab44f2f0ba653a..63c9564979b702b2835e648a49cc7d5e1934f806
GIT binary patch
literal 79820
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
index 329ac5bba16fd42cbbc4177ce22961efa4c80a28..a7526f14b7ec883ff38e0c9841e62e97d4215579
GIT binary patch
literal 202165
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
DKaWZ-
--- a/browser/extensions/shumway/content/playerglobal/playerglobal.json
+++ b/browser/extensions/shumway/content/playerglobal/playerglobal.json
@@ -96,2746 +96,2746 @@
     "length": 253
   },
   {
     "name": "flash/display/AVM1Movie",
     "defs": [
       "flash.display:AVM1Movie"
     ],
     "offset": 4595,
-    "length": 356
+    "length": 318
   },
   {
     "name": "flash/display/Bitmap",
     "defs": [
       "flash.display:Bitmap"
     ],
-    "offset": 4951,
+    "offset": 4913,
     "length": 390
   },
   {
     "name": "flash/display/BitmapData",
     "defs": [
       "flash.display:BitmapData"
     ],
-    "offset": 5341,
+    "offset": 5303,
     "length": 1471
   },
   {
     "name": "flash/display/BitmapDataChannel",
     "defs": [
       "flash.display:BitmapDataChannel"
     ],
-    "offset": 6812,
+    "offset": 6774,
     "length": 274
   },
   {
     "name": "flash/display/BitmapEncodingColorSpace",
     "defs": [
       "flash.display:BitmapEncodingColorSpace"
     ],
-    "offset": 7086,
+    "offset": 7048,
     "length": 355
   },
   {
     "name": "flash/display/BlendMode",
     "defs": [
       "flash.display:BlendMode"
     ],
-    "offset": 7441,
+    "offset": 7403,
     "length": 624
   },
   {
     "name": "flash/display/CapsStyle",
     "defs": [
       "flash.display:CapsStyle"
     ],
-    "offset": 8065,
+    "offset": 8027,
     "length": 256
   },
   {
     "name": "flash/display/ColorCorrection",
     "defs": [
       "flash.display:ColorCorrection"
     ],
-    "offset": 8321,
+    "offset": 8283,
     "length": 262
   },
   {
     "name": "flash/display/ColorCorrectionSupport",
     "defs": [
       "flash.display:ColorCorrectionSupport"
     ],
-    "offset": 8583,
+    "offset": 8545,
     "length": 314
   },
   {
     "name": "flash/display/DisplayObject",
     "defs": [
       "flash.display:DisplayObject"
     ],
-    "offset": 8897,
+    "offset": 8859,
     "length": 1500
   },
   {
     "name": "flash/display/DisplayObjectContainer",
     "defs": [
       "flash.display:DisplayObjectContainer"
     ],
-    "offset": 10397,
+    "offset": 10359,
     "length": 898
   },
   {
     "name": "flash/display/FocusDirection",
     "defs": [
       "flash.display:FocusDirection"
     ],
-    "offset": 11295,
+    "offset": 11257,
     "length": 262
   },
   {
     "name": "flash/display/FrameLabel",
     "defs": [
       "flash.display:FrameLabel"
     ],
-    "offset": 11557,
+    "offset": 11519,
     "length": 278
   },
   {
     "name": "flash/display/Graphics",
     "defs": [
       "flash.display:Graphics"
     ],
-    "offset": 11835,
+    "offset": 11797,
     "length": 1028
   },
   {
     "name": "flash/display/GradientType",
     "defs": [
       "flash.display:GradientType"
     ],
-    "offset": 12863,
+    "offset": 12825,
     "length": 239
   },
   {
     "name": "flash/display/GraphicsBitmapFill",
     "defs": [
       "flash.display:GraphicsBitmapFill"
     ],
-    "offset": 13102,
+    "offset": 13064,
     "length": 346
   },
   {
     "name": "flash/display/GraphicsEndFill",
     "defs": [
       "flash.display:GraphicsEndFill"
     ],
-    "offset": 13448,
+    "offset": 13410,
     "length": 215
   },
   {
     "name": "flash/display/GraphicsGradientFill",
     "defs": [
       "flash.display:GraphicsGradientFill"
     ],
-    "offset": 13663,
+    "offset": 13625,
     "length": 697
   },
   {
     "name": "flash/display/GraphicsPath",
     "defs": [
       "flash.display:GraphicsPath"
     ],
-    "offset": 14360,
+    "offset": 14322,
     "length": 1258
   },
   {
     "name": "flash/display/GraphicsPathCommand",
     "defs": [
       "flash.display:GraphicsPathCommand"
     ],
-    "offset": 15618,
+    "offset": 15580,
     "length": 368
   },
   {
     "name": "flash/display/GraphicsPathWinding",
     "defs": [
       "flash.display:GraphicsPathWinding"
     ],
-    "offset": 15986,
+    "offset": 15948,
     "length": 259
   },
   {
     "name": "flash/display/GraphicsShaderFill",
     "defs": [
       "flash.display:GraphicsShaderFill"
     ],
-    "offset": 16245,
+    "offset": 16207,
     "length": 299
   },
   {
     "name": "flash/display/GraphicsSolidFill",
     "defs": [
       "flash.display:GraphicsSolidFill"
     ],
-    "offset": 16544,
+    "offset": 16506,
     "length": 283
   },
   {
     "name": "flash/display/GraphicsStroke",
     "defs": [
       "flash.display:GraphicsStroke"
     ],
-    "offset": 16827,
+    "offset": 16789,
     "length": 1542
   },
   {
     "name": "flash/display/GraphicsTrianglePath",
     "defs": [
       "flash.display:GraphicsTrianglePath"
     ],
-    "offset": 18369,
+    "offset": 18331,
     "length": 680
   },
   {
     "name": "flash/display/IBitmapDrawable",
     "defs": [
       "flash.display:IBitmapDrawable"
     ],
-    "offset": 19049,
+    "offset": 19011,
     "length": 105
   },
   {
     "name": "flash/display/IDrawCommand",
     "defs": [
       "flash.display:IDrawCommand"
     ],
-    "offset": 19154,
+    "offset": 19116,
     "length": 102
   },
   {
     "name": "flash/display/IGraphicsData",
     "defs": [
       "flash.display:IGraphicsData"
     ],
-    "offset": 19256,
+    "offset": 19218,
     "length": 103
   },
   {
     "name": "flash/display/IGraphicsFill",
     "defs": [
       "flash.display:IGraphicsFill"
     ],
-    "offset": 19359,
+    "offset": 19321,
     "length": 103
   },
   {
     "name": "flash/display/IGraphicsPath",
     "defs": [
       "flash.display:IGraphicsPath"
     ],
-    "offset": 19462,
+    "offset": 19424,
     "length": 103
   },
   {
     "name": "flash/display/IGraphicsStroke",
     "defs": [
       "flash.display:IGraphicsStroke"
     ],
-    "offset": 19565,
+    "offset": 19527,
     "length": 105
   },
   {
     "name": "flash/display/InteractiveObject",
     "defs": [
       "flash.display:InteractiveObject"
     ],
-    "offset": 19670,
+    "offset": 19632,
     "length": 764
   },
   {
     "name": "flash/display/InterpolationMethod",
     "defs": [
       "flash.display:InterpolationMethod"
     ],
-    "offset": 20434,
+    "offset": 20396,
     "length": 254
   },
   {
     "name": "flash/display/JointStyle",
     "defs": [
       "flash.display:JointStyle"
     ],
-    "offset": 20688,
+    "offset": 20650,
     "length": 258
   },
   {
     "name": "flash/display/JPEGEncoderOptions",
     "defs": [
       "flash.display:JPEGEncoderOptions"
     ],
-    "offset": 20946,
+    "offset": 20908,
     "length": 216
   },
   {
     "name": "flash/display/JPEGXREncoderOptions",
     "defs": [
       "flash.display:JPEGXREncoderOptions"
     ],
-    "offset": 21162,
+    "offset": 21124,
     "length": 295
   },
   {
     "name": "flash/display/LineScaleMode",
     "defs": [
       "flash.display:LineScaleMode"
     ],
-    "offset": 21457,
+    "offset": 21419,
     "length": 307
   },
   {
     "name": "flash/display/Loader",
     "defs": [
       "flash.display:Loader"
     ],
-    "offset": 21764,
+    "offset": 21726,
     "length": 1320
   },
   {
     "name": "flash/display/LoaderInfo",
     "defs": [
       "flash.display:LoaderInfo"
     ],
-    "offset": 23084,
+    "offset": 23046,
     "length": 1227
   },
   {
     "name": "flash/display/MorphShape",
     "defs": [
       "flash.display:MorphShape"
     ],
-    "offset": 24311,
+    "offset": 24273,
     "length": 263
   },
   {
     "name": "flash/display/MovieClip",
     "defs": [
       "flash.display:MovieClip"
     ],
-    "offset": 24574,
+    "offset": 24536,
     "length": 871
   },
   {
     "name": "flash/display/NativeMenu",
     "defs": [
       "flash.display:NativeMenu"
     ],
-    "offset": 25445,
+    "offset": 25407,
     "length": 207
   },
   {
     "name": "flash/display/NativeMenuItem",
     "defs": [
       "flash.display:NativeMenuItem"
     ],
-    "offset": 25652,
+    "offset": 25614,
     "length": 279
   },
   {
     "name": "flash/display/PixelSnapping",
     "defs": [
       "flash.display:PixelSnapping"
     ],
-    "offset": 25931,
+    "offset": 25893,
     "length": 264
   },
   {
     "name": "flash/display/PNGEncoderOptions",
     "defs": [
       "flash.display:PNGEncoderOptions"
     ],
-    "offset": 26195,
+    "offset": 26157,
     "length": 224
   },
   {
     "name": "flash/display/Scene",
     "defs": [
       "flash.display:Scene"
     ],
-    "offset": 26419,
+    "offset": 26381,
     "length": 255
   },
   {
     "name": "flash/display/Shader",
     "defs": [
       "flash.display:Shader"
     ],
-    "offset": 26674,
+    "offset": 26636,
     "length": 368
   },
   {
     "name": "flash/display/ShaderData",
     "defs": [
       "flash.display:ShaderData"
     ],
-    "offset": 27042,
+    "offset": 27004,
     "length": 195
   },
   {
     "name": "flash/display/ShaderInput",
     "defs": [
       "flash.display:ShaderInput"
     ],
-    "offset": 27237,
+    "offset": 27199,
     "length": 334
   },
   {
     "name": "flash/display/ShaderJob",
     "defs": [
       "flash.display:ShaderJob"
     ],
-    "offset": 27571,
+    "offset": 27533,
     "length": 492
   },
   {
     "name": "flash/display/ShaderParameter",
     "defs": [
       "flash.display:ShaderParameter"
     ],
-    "offset": 28063,
+    "offset": 28025,
     "length": 308
   },
   {
     "name": "flash/display/ShaderParameterType",
     "defs": [
       "flash.display:ShaderParameterType"
     ],
-    "offset": 28371,
+    "offset": 28333,
     "length": 618
   },
   {
     "name": "flash/display/ShaderPrecision",
     "defs": [
       "flash.display:ShaderPrecision"
     ],
-    "offset": 28989,
+    "offset": 28951,
     "length": 237
   },
   {
     "name": "flash/display/Shape",
     "defs": [
       "flash.display:Shape"
     ],
-    "offset": 29226,
+    "offset": 29188,
     "length": 266
   },
   {
     "name": "flash/display/SimpleButton",
     "defs": [
       "flash.display:SimpleButton"
     ],
-    "offset": 29492,
+    "offset": 29454,
     "length": 682
   },
   {
     "name": "flash/display/SpreadMethod",
     "defs": [
       "flash.display:SpreadMethod"
     ],
-    "offset": 30174,
+    "offset": 30136,
     "length": 264
   },
   {
     "name": "flash/display/Sprite",
     "defs": [
       "flash.display:Sprite"
     ],
-    "offset": 30438,
+    "offset": 30400,
     "length": 670
   },
   {
     "name": "flash/display/Stage",
     "defs": [
       "flash.display:Stage"
     ],
-    "offset": 31108,
+    "offset": 31070,
     "length": 3649
   },
   {
     "name": "flash/display/Stage3D",
     "defs": [
       "flash.display:Stage3D"
     ],
-    "offset": 34757,
+    "offset": 34719,
     "length": 443
   },
   {
     "name": "flash/display/StageAlign",
     "defs": [
       "flash.display:StageAlign"
     ],
-    "offset": 35200,
+    "offset": 35162,
     "length": 383
   },
   {
     "name": "flash/display/StageDisplayState",
     "defs": [
       "flash.display:StageDisplayState"
     ],
-    "offset": 35583,
+    "offset": 35545,
     "length": 319
   },
   {
     "name": "flash/display/StageQuality",
     "defs": [
       "flash.display:StageQuality"
     ],
-    "offset": 35902,
+    "offset": 35864,
     "length": 429
   },
   {
     "name": "flash/display/StageScaleMode",
     "defs": [
       "flash.display:StageScaleMode"
     ],
-    "offset": 36331,
+    "offset": 36293,
     "length": 317
   },
   {
     "name": "flash/display/SWFVersion",
     "defs": [
       "flash.display:SWFVersion"
     ],
-    "offset": 36648,
+    "offset": 36610,
     "length": 454
   },
   {
     "name": "flash/display/TriangleCulling",
     "defs": [
       "flash.display:TriangleCulling"
     ],
-    "offset": 37102,
+    "offset": 37064,
     "length": 278
   },
   {
     "name": "flash/external/ExternalInterface",
     "defs": [
       "flash.external:ExternalInterface"
     ],
-    "offset": 37380,
+    "offset": 37342,
     "length": 3261
   },
   {
     "name": "flash/events/AccelerometerEvent",
     "defs": [
       "flash.events:AccelerometerEvent"
     ],
-    "offset": 40641,
+    "offset": 40603,
     "length": 817
   },
   {
     "name": "flash/events/ActivityEvent",
     "defs": [
       "flash.events:ActivityEvent"
     ],
-    "offset": 41458,
+    "offset": 41420,
     "length": 505
   },
   {
     "name": "flash/events/AsyncErrorEvent",
     "defs": [
       "flash.events:AsyncErrorEvent"
     ],
-    "offset": 41963,
+    "offset": 41925,
     "length": 522
   },
   {
     "name": "flash/events/ContextMenuEvent",
     "defs": [
       "flash.events:ContextMenuEvent"
     ],
-    "offset": 42485,
+    "offset": 42447,
     "length": 829
   },
   {
     "name": "flash/events/DataEvent",
     "defs": [
       "flash.events:DataEvent"
     ],
-    "offset": 43314,
+    "offset": 43276,
     "length": 546
   },
   {
     "name": "flash/events/ErrorEvent",
     "defs": [
       "flash.events:ErrorEvent"
     ],
-    "offset": 43860,
+    "offset": 43822,
     "length": 494
   },
   {
     "name": "flash/events/Event",
     "defs": [
       "flash.events:Event"
     ],
-    "offset": 44354,
-    "length": 2280
+    "offset": 44316,
+    "length": 2036
   },
   {
     "name": "flash/events/EventDispatcher",
     "defs": [
       "flash.events:EventDispatcher"
     ],
-    "offset": 46634,
+    "offset": 46352,
     "length": 649
   },
   {
     "name": "flash/events/EventPhase",
     "defs": [
       "flash.events:EventPhase"
     ],
-    "offset": 47283,
+    "offset": 47001,
     "length": 262
   },
   {
     "name": "flash/events/FocusEvent",
     "defs": [
       "flash.events:FocusEvent"
     ],
-    "offset": 47545,
+    "offset": 47263,
     "length": 980
   },
   {
     "name": "flash/events/FullScreenEvent",
     "defs": [
       "flash.events:FullScreenEvent"
     ],
-    "offset": 48525,
+    "offset": 48243,
     "length": 643
   },
   {
     "name": "flash/events/GameInputEvent",
     "defs": [
       "flash.events:GameInputEvent"
     ],
-    "offset": 49168,
+    "offset": 48886,
     "length": 390
   },
   {
     "name": "flash/events/GeolocationEvent",
     "defs": [
       "flash.events:GeolocationEvent"
     ],
-    "offset": 49558,
+    "offset": 49276,
     "length": 1137
   },
   {
     "name": "flash/events/GestureEvent",
     "defs": [
       "flash.events:GestureEvent"
     ],
-    "offset": 50695,
-    "length": 813
+    "offset": 50413,
+    "length": 669
   },
   {
     "name": "flash/events/GesturePhase",
     "defs": [
       "flash.events:GesturePhase"
     ],
-    "offset": 51508,
+    "offset": 51082,
     "length": 281
   },
   {
     "name": "flash/events/HTTPStatusEvent",
     "defs": [
       "flash.events:HTTPStatusEvent"
     ],
-    "offset": 51789,
+    "offset": 51363,
     "length": 746
   },
   {
     "name": "flash/events/IEventDispatcher",
     "defs": [
       "flash.events:IEventDispatcher"
     ],
-    "offset": 52535,
+    "offset": 52109,
     "length": 353
   },
   {
     "name": "flash/events/IMEEvent",
     "defs": [
       "flash.events:IMEEvent"
     ],
-    "offset": 52888,
+    "offset": 52462,
     "length": 632
   },
   {
     "name": "flash/events/IOErrorEvent",
     "defs": [
       "flash.events:IOErrorEvent"
     ],
-    "offset": 53520,
+    "offset": 53094,
     "length": 605
   },
   {
     "name": "flash/events/KeyboardEvent",
     "defs": [
       "flash.events:KeyboardEvent"
     ],
-    "offset": 54125,
+    "offset": 53699,
     "length": 1044
   },
   {
     "name": "flash/events/MouseEvent",
     "defs": [
       "flash.events:MouseEvent"
     ],
-    "offset": 55169,
-    "length": 2142
+    "offset": 54743,
+    "length": 1503
   },
   {
     "name": "flash/events/NetDataEvent",
     "defs": [
       "flash.events:NetDataEvent"
     ],
-    "offset": 57311,
+    "offset": 56246,
     "length": 565
   },
   {
     "name": "flash/events/NetFilterEvent",
     "defs": [
       "flash.events:NetFilterEvent"
     ],
-    "offset": 57876,
+    "offset": 56811,
     "length": 454
   },
   {
     "name": "flash/events/NetMonitorEvent",
     "defs": [
       "flash.events:NetMonitorEvent"
     ],
-    "offset": 58330,
+    "offset": 57265,
     "length": 516
   },
   {
     "name": "flash/events/NetStatusEvent",
     "defs": [
       "flash.events:NetStatusEvent"
     ],
-    "offset": 58846,
+    "offset": 57781,
     "length": 498
   },
   {
     "name": "flash/events/OutputProgressEvent",
     "defs": [
       "flash.events:OutputProgressEvent"
     ],
-    "offset": 59344,
+    "offset": 58279,
     "length": 638
   },
   {
     "name": "flash/events/PressAndTapGestureEvent",
     "defs": [
       "flash.events:PressAndTapGestureEvent"
     ],
-    "offset": 59982,
+    "offset": 58917,
     "length": 944
   },
   {
     "name": "flash/events/ProgressEvent",
     "defs": [
       "flash.events:ProgressEvent"
     ],
-    "offset": 60926,
-    "length": 683
+    "offset": 59861,
+    "length": 460
   },
   {
     "name": "flash/events/SampleDataEvent",
     "defs": [
       "flash.events:SampleDataEvent"
     ],
-    "offset": 61609,
+    "offset": 60321,
     "length": 639
   },
   {
     "name": "flash/events/SecurityErrorEvent",
     "defs": [
       "flash.events:SecurityErrorEvent"
     ],
-    "offset": 62248,
+    "offset": 60960,
     "length": 511
   },
   {
     "name": "flash/events/ShaderEvent",
     "defs": [
       "flash.events:ShaderEvent"
     ],
-    "offset": 62759,
+    "offset": 61471,
     "length": 742
   },
   {
     "name": "flash/events/SoftKeyboardEvent",
     "defs": [
       "flash.events:SoftKeyboardEvent"
     ],
-    "offset": 63501,
+    "offset": 62213,
     "length": 793
   },
   {
     "name": "flash/events/SoftKeyboardTrigger",
     "defs": [
       "flash.events:SoftKeyboardTrigger"
     ],
-    "offset": 64294,
+    "offset": 63006,
     "length": 287
   },
   {
     "name": "flash/events/StageVideoAvailabilityEvent",
     "defs": [
       "flash.events:StageVideoAvailabilityEvent"
     ],
-    "offset": 64581,
+    "offset": 63293,
     "length": 377
   },
   {
     "name": "flash/events/StageVideoEvent",
     "defs": [
       "flash.events:StageVideoEvent"
     ],
-    "offset": 64958,
+    "offset": 63670,
     "length": 535
   },
   {
     "name": "flash/events/StatusEvent",
     "defs": [
       "flash.events:StatusEvent"
     ],
-    "offset": 65493,
+    "offset": 64205,
     "length": 578
   },
   {
     "name": "flash/events/SyncEvent",
     "defs": [
       "flash.events:SyncEvent"
     ],
-    "offset": 66071,
+    "offset": 64783,
     "length": 466
   },
   {
     "name": "flash/events/TextEvent",
     "defs": [
       "flash.events:TextEvent"
     ],
-    "offset": 66537,
+    "offset": 65249,
     "length": 569
   },
   {
     "name": "flash/events/ThrottleEvent",
     "defs": [
       "flash.events:ThrottleEvent"
     ],
-    "offset": 67106,
+    "offset": 65818,
     "length": 553
   },
   {
     "name": "flash/events/ThrottleType",
     "defs": [
       "flash.events:ThrottleType"
     ],
-    "offset": 67659,
+    "offset": 66371,
     "length": 268
   },
   {
     "name": "flash/events/TimerEvent",
     "defs": [
       "flash.events:TimerEvent"
     ],
-    "offset": 67927,
+    "offset": 66639,
     "length": 505
   },
   {
     "name": "flash/events/TouchEvent",
     "defs": [
       "flash.events:TouchEvent"
     ],
-    "offset": 68432,
+    "offset": 67144,
     "length": 2322
   },
   {
     "name": "flash/events/TransformGestureEvent",
     "defs": [
       "flash.events:TransformGestureEvent"
     ],
-    "offset": 70754,
+    "offset": 69466,
     "length": 1154
   },
   {
     "name": "flash/events/UncaughtErrorEvent",
     "defs": [
       "flash.events:UncaughtErrorEvent"
     ],
-    "offset": 71908,
+    "offset": 70620,
     "length": 525
   },
   {
     "name": "flash/events/UncaughtErrorEvents",
     "defs": [
       "flash.events:UncaughtErrorEvents"
     ],
-    "offset": 72433,
+    "offset": 71145,
     "length": 208
   },
   {
     "name": "flash/events/VideoEvent",
     "defs": [
       "flash.events:VideoEvent"
     ],
-    "offset": 72641,
+    "offset": 71353,
     "length": 461
   },
   {
     "name": "flash/geom/ColorTransform",
     "defs": [
       "flash.geom:ColorTransform"
     ],
-    "offset": 73102,
+    "offset": 71814,
     "length": 586
   },
   {
     "name": "flash/geom/Matrix",
     "defs": [
       "flash.geom:Matrix"
     ],
-    "offset": 73688,
+    "offset": 72400,
     "length": 814
   },
   {
     "name": "flash/geom/Matrix3D",
     "defs": [
       "flash.geom:Matrix3D"
     ],
-    "offset": 74502,
+    "offset": 73214,
     "length": 1092
   },
   {
     "name": "flash/geom/Orientation3D",
     "defs": [
       "flash.geom:Orientation3D"
     ],
-    "offset": 75594,
+    "offset": 74306,
     "length": 290
   },
   {
     "name": "flash/geom/PerspectiveProjection",
     "defs": [
       "flash.geom:PerspectiveProjection"
     ],
-    "offset": 75884,
+    "offset": 74596,
     "length": 389
   },
   {
     "name": "flash/geom/Point",
     "defs": [
       "flash.geom:Point"
     ],
-    "offset": 76273,
+    "offset": 74985,
     "length": 516
   },
   {
     "name": "flash/geom/Rectangle",
     "defs": [
       "flash.geom:Rectangle"
     ],
-    "offset": 76789,
+    "offset": 75501,
     "length": 889
   },
   {
     "name": "flash/geom/Transform",
     "defs": [
       "flash.geom:Transform"
     ],
-    "offset": 77678,
+    "offset": 76390,
     "length": 553
   },
   {
     "name": "flash/geom/Utils3D",
     "defs": [
       "flash.geom:Utils3D"
     ],
-    "offset": 78231,
+    "offset": 76943,
     "length": 342
   },
   {
     "name": "flash/geom/Vector3D",
     "defs": [
       "flash.geom:Vector3D"
     ],
-    "offset": 78573,
+    "offset": 77285,
     "length": 830
   },
   {
     "name": "flash/filters/BevelFilter",
     "defs": [
       "flash.filters:BevelFilter"
     ],
-    "offset": 79403,
+    "offset": 78115,
     "length": 685
   },
   {
     "name": "flash/filters/BitmapFilter",
     "defs": [
       "flash.filters:BitmapFilter"
     ],
-    "offset": 80088,
+    "offset": 78800,
     "length": 209
   },
   {
     "name": "flash/filters/BitmapFilterQuality",
     "defs": [
       "flash.filters:BitmapFilterQuality"
     ],
-    "offset": 80297,
+    "offset": 79009,
     "length": 256
   },
   {
     "name": "flash/filters/BitmapFilterType",
     "defs": [
       "flash.filters:BitmapFilterType"
     ],
-    "offset": 80553,
+    "offset": 79265,
     "length": 268
   },
   {
     "name": "flash/filters/BlurFilter",
     "defs": [
       "flash.filters:BlurFilter"
     ],
-    "offset": 80821,
+    "offset": 79533,
     "length": 342
   },
   {
     "name": "flash/filters/ColorMatrixFilter",
     "defs": [
       "flash.filters:ColorMatrixFilter"
     ],
-    "offset": 81163,
+    "offset": 79875,
     "length": 294
   },
   {
     "name": "flash/filters/ConvolutionFilter",
     "defs": [
       "flash.filters:ConvolutionFilter"
     ],
-    "offset": 81457,
+    "offset": 80169,
     "length": 570
   },
   {
     "name": "flash/filters/DisplacementMapFilter",
     "defs": [
       "flash.filters:DisplacementMapFilter"
     ],
-    "offset": 82027,
+    "offset": 80739,
     "length": 632
   },
   {
     "name": "flash/filters/DisplacementMapFilterMode",
     "defs": [
       "flash.filters:DisplacementMapFilterMode"
     ],
-    "offset": 82659,
+    "offset": 81371,
     "length": 315
   },
   {
     "name": "flash/filters/DropShadowFilter",
     "defs": [
       "flash.filters:DropShadowFilter"
     ],
-    "offset": 82974,
+    "offset": 81686,
     "length": 627
   },
   {
     "name": "flash/filters/GlowFilter",
     "defs": [
       "flash.filters:GlowFilter"
     ],
-    "offset": 83601,
+    "offset": 82313,
     "length": 517
   },
   {
     "name": "flash/filters/GradientBevelFilter",
     "defs": [
       "flash.filters:GradientBevelFilter"
     ],
-    "offset": 84118,
+    "offset": 82830,
     "length": 649
   },
   {
     "name": "flash/filters/GradientGlowFilter",
     "defs": [
       "flash.filters:GradientGlowFilter"
     ],
-    "offset": 84767,
+    "offset": 83479,
     "length": 646
   },
   {
     "name": "flash/filters/ShaderFilter",
     "defs": [
       "flash.filters:ShaderFilter"
     ],
-    "offset": 85413,
+    "offset": 84125,
     "length": 626
   },
   {
     "name": "flash/globalization/Collator",
     "defs": [
       "flash.globalization:Collator"
     ],
-    "offset": 86039,
+    "offset": 84751,
     "length": 692
   },
   {
     "name": "flash/globalization/CollatorMode",
     "defs": [
       "flash.globalization:CollatorMode"
     ],
-    "offset": 86731,
+    "offset": 85443,
     "length": 257
   },
   {
     "name": "flash/globalization/CurrencyFormatter",
     "defs": [
       "flash.globalization:CurrencyFormatter"
     ],
-    "offset": 86988,
+    "offset": 85700,
     "length": 1104
   },
   {
     "name": "flash/globalization/CurrencyParseResult",
     "defs": [
       "flash.globalization:CurrencyParseResult"
     ],
-    "offset": 88092,
+    "offset": 86804,
     "length": 350
   },
   {
     "name": "flash/globalization/DateTimeFormatter",
     "defs": [
       "flash.globalization:DateTimeFormatter"
     ],
-    "offset": 88442,
+    "offset": 87154,
     "length": 830
   },
   {
     "name": "flash/globalization/DateTimeNameContext",
     "defs": [
       "flash.globalization:DateTimeNameContext"
     ],
-    "offset": 89272,
+    "offset": 87984,
     "length": 273
   },
   {
     "name": "flash/globalization/DateTimeNameStyle",
     "defs": [
       "flash.globalization:DateTimeNameStyle"
     ],
-    "offset": 89545,
+    "offset": 88257,
     "length": 330
   },
   {
     "name": "flash/globalization/DateTimeStyle",
     "defs": [
       "flash.globalization:DateTimeStyle"
     ],
-    "offset": 89875,
+    "offset": 88587,
     "length": 330
   },
   {
     "name": "flash/globalization/LastOperationStatus",
     "defs": [
       "flash.globalization:LastOperationStatus"
     ],
-    "offset": 90205,
+    "offset": 88917,
     "length": 1104
   },
   {
     "name": "flash/globalization/LocaleID",
     "defs": [
       "flash.globalization:LocaleID"
     ],
-    "offset": 91309,
+    "offset": 90021,
     "length": 560
   },
   {
     "name": "flash/globalization/NationalDigitsType",
     "defs": [
       "flash.globalization:NationalDigitsType"
     ],
-    "offset": 91869,
+    "offset": 90581,
     "length": 1055
   },
   {
     "name": "flash/globalization/NumberFormatter",
     "defs": [
       "flash.globalization:NumberFormatter"
     ],
-    "offset": 92924,
+    "offset": 91636,
     "length": 946
   },
   {
     "name": "flash/globalization/NumberParseResult",
     "defs": [
       "flash.globalization:NumberParseResult"
     ],
-    "offset": 93870,
+    "offset": 92582,
     "length": 367
   },
   {
     "name": "flash/globalization/StringTools",
     "defs": [
       "flash.globalization:StringTools"
     ],
-    "offset": 94237,
+    "offset": 92949,
     "length": 460
   },
   {
     "name": "flash/media/AudioDecoder",
     "defs": [
       "flash.media:AudioDecoder"
     ],
-    "offset": 94697,
+    "offset": 93409,
     "length": 448
   },
   {
     "name": "flash/media/Camera",
     "defs": [
       "flash.media:Camera"
     ],
-    "offset": 95145,
+    "offset": 93857,
     "length": 1029
   },
   {
     "name": "flash/media/H264Level",
     "defs": [
       "flash.media:H264Level"
     ],
-    "offset": 96174,
+    "offset": 94886,
     "length": 613
   },
   {
     "name": "flash/media/H264Profile",
     "defs": [
       "flash.media:H264Profile"
     ],
-    "offset": 96787,
+    "offset": 95499,
     "length": 233
   },
   {
     "name": "flash/media/H264VideoStreamSettings",
     "defs": [
       "flash.media:H264VideoStreamSettings"
     ],
-    "offset": 97020,
+    "offset": 95732,
     "length": 1137
   },
   {
     "name": "flash/media/ID3Info",
     "defs": [
       "flash.media:ID3Info"
     ],
-    "offset": 98157,
+    "offset": 96869,
     "length": 300
   },
   {
     "name": "flash/media/Microphone",
     "defs": [
       "flash.media:Microphone"
     ],
-    "offset": 98457,
+    "offset": 97169,
     "length": 986
   },
   {
     "name": "flash/media/MicrophoneEnhancedMode",
     "defs": [
       "flash.media:MicrophoneEnhancedMode"
     ],
-    "offset": 99443,
+    "offset": 98155,
     "length": 367
   },
   {
     "name": "flash/media/MicrophoneEnhancedOptions",
     "defs": [
       "flash.media:MicrophoneEnhancedOptions"
     ],
-    "offset": 99810,
+    "offset": 98522,
     "length": 604
   },
   {
     "name": "flash/media/Sound",
     "defs": [
       "flash.media:Sound"
     ],
-    "offset": 100414,
+    "offset": 99126,
     "length": 837
   },
   {
     "name": "flash/media/SoundChannel",
     "defs": [
       "flash.media:SoundChannel"
     ],
-    "offset": 101251,
+    "offset": 99963,
     "length": 390
   },
   {
     "name": "flash/media/SoundCodec",
     "defs": [
       "flash.media:SoundCodec"
     ],
-    "offset": 101641,
+    "offset": 100353,
     "length": 287
   },
   {
     "name": "flash/media/SoundLoaderContext",
     "defs": [
       "flash.media:SoundLoaderContext"
     ],
-    "offset": 101928,
+    "offset": 100640,
     "length": 261
   },
   {
     "name": "flash/media/SoundMixer",
     "defs": [
       "flash.media:SoundMixer"
     ],
-    "offset": 102189,
+    "offset": 100901,
     "length": 513
   },
   {
     "name": "flash/media/SoundTransform",
     "defs": [
       "flash.media:SoundTransform"
     ],
-    "offset": 102702,
+    "offset": 101414,
     "length": 422
   },
   {
     "name": "flash/media/StageVideo",
     "defs": [
       "flash.media:StageVideo"
     ],
-    "offset": 103124,
+    "offset": 101836,
     "length": 570
   },
   {
     "name": "flash/media/StageVideoAvailability",
     "defs": [
       "flash.media:StageVideoAvailability"
     ],
-    "offset": 103694,
+    "offset": 102406,
     "length": 271
   },
   {
     "name": "flash/media/Video",
     "defs": [
       "flash.media:Video"
     ],
-    "offset": 103965,
-    "length": 533
+    "offset": 102677,
+    "length": 494
   },
   {
     "name": "flash/media/VideoCodec",
     "defs": [
       "flash.media:VideoCodec"
     ],
-    "offset": 104498,
+    "offset": 103171,
     "length": 256
   },
   {
     "name": "flash/media/VideoStatus",
     "defs": [
       "flash.media:VideoStatus"
     ],
-    "offset": 104754,
+    "offset": 103427,
     "length": 286
   },
   {
     "name": "flash/media/VideoStreamSettings",
     "defs": [
       "flash.media:VideoStreamSettings"
     ],
-    "offset": 105040,
+    "offset": 103713,
     "length": 651
   },
   {
     "name": "flash/profiler/Telemetry",
     "defs": [
       "flash.profiler:Telemetry"
     ],
-    "offset": 105691,
+    "offset": 104364,
     "length": 422
   },
   {
     "name": "flash/printing/PrintJob",
     "defs": [
       "flash.printing:PrintJob"
     ],
-    "offset": 106113,
+    "offset": 104786,
     "length": 711
   },
   {
     "name": "flash/printing/PrintJobOptions",
     "defs": [
       "flash.printing:PrintJobOptions"
     ],
-    "offset": 106824,
+    "offset": 105497,
     "length": 216
   },
   {
     "name": "flash/printing/PrintJobOrientation",
     "defs": [
       "flash.printing:PrintJobOrientation"
     ],
-    "offset": 107040,
+    "offset": 105713,
     "length": 265
   },
   {
     "name": "flash/security/CertificateStatus",
     "defs": [
       "flash.security:CertificateStatus"
     ],
-    "offset": 107305,
+    "offset": 105978,
     "length": 533
   },
   {
     "name": "flash/security/X500DistinguishedName",
     "defs": [
       "flash.security:X500DistinguishedName"
     ],
-    "offset": 107838,
+    "offset": 106511,
     "length": 427
   },
   {
     "name": "flash/security/X509Certificate",
     "defs": [
       "flash.security:X509Certificate"
     ],
-    "offset": 108265,
+    "offset": 106938,
     "length": 635
   },
   {
     "name": "flash/sampler/ClassFactory",
     "defs": [
       "flash.sampler:ClassFactory"
     ],
-    "offset": 108900,
+    "offset": 107573,
     "length": 285
   },
   {
     "name": "flash/sampler/DeleteObjectSample",
     "defs": [
       "flash.sampler:DeleteObjectSample"
     ],
-    "offset": 109185,
+    "offset": 107858,
     "length": 233
   },
   {
     "name": "flash/sampler/NewObjectSample",
     "defs": [
       "flash.sampler:NewObjectSample"
     ],
-    "offset": 109418,
+    "offset": 108091,
     "length": 308
   },
   {
     "name": "flash/sampler/Sample",
     "defs": [
       "flash.sampler:Sample"
     ],
-    "offset": 109726,
+    "offset": 108399,
     "length": 205
   },
   {
     "name": "flash/sampler/StackFrame",
     "defs": [
       "flash.sampler:StackFrame"
     ],
-    "offset": 109931,
+    "offset": 108604,
     "length": 310
   },
   {
     "name": "flash/system/ApplicationDomain",
     "defs": [
       "flash.system:ApplicationDomain"
     ],
-    "offset": 110241,
+    "offset": 108914,
     "length": 498
   },
   {
     "name": "flash/system/ApplicationInstaller",
     "defs": [
       "flash.system:ApplicationInstaller"
     ],
-    "offset": 110739,
+    "offset": 109412,
     "length": 426
   },
   {
     "name": "flash/system/AuthorizedFeatures",
     "defs": [
       "flash.system:AuthorizedFeatures"
     ],
-    "offset": 111165,
+    "offset": 109838,
     "length": 456
   },
   {
     "name": "flash/system/AuthorizedFeaturesLoader",
     "defs": [
       "flash.system:AuthorizedFeaturesLoader"
     ],
-    "offset": 111621,
+    "offset": 110294,
     "length": 398
   },
   {
     "name": "flash/system/Capabilities",
     "defs": [
       "flash.system:Capabilities"
     ],
-    "offset": 112019,
+    "offset": 110692,
     "length": 1133
   },
   {
     "name": "flash/system/DomainMemoryWithStage3D",
     "defs": [
       "flash.system:DomainMemoryWithStage3D"
     ],
-    "offset": 113152,
+    "offset": 111825,
     "length": 191
   },
   {
     "name": "flash/system/FSCommand",
     "defs": [
       "flash.system:FSCommand",
       "flash.system:fscommand"
     ],
-    "offset": 113343,
+    "offset": 112016,
     "length": 285
   },
   {
     "name": "flash/system/ImageDecodingPolicy",
     "defs": [
       "flash.system:ImageDecodingPolicy"
     ],
-    "offset": 113628,
+    "offset": 112301,
     "length": 257
   },
   {
     "name": "flash/system/IME",
     "defs": [
       "flash.system:IME"
     ],
-    "offset": 113885,
+    "offset": 112558,
     "length": 507
   },
   {
     "name": "flash/system/IMEConversionMode",
     "defs": [
       "flash.system:IMEConversionMode"
     ],
-    "offset": 114392,
+    "offset": 113065,
     "length": 432
   },
   {
     "name": "flash/system/JPEGLoaderContext",
     "defs": [
       "flash.system:JPEGLoaderContext"
     ],
-    "offset": 114824,
+    "offset": 113497,
     "length": 309
   },
   {
     "name": "flash/system/LoaderContext",
     "defs": [
       "flash.system:LoaderContext"
     ],
-    "offset": 115133,
+    "offset": 113806,
     "length": 515
   },
   {
     "name": "flash/system/MessageChannel",
     "defs": [
       "flash.system:MessageChannel"
     ],
-    "offset": 115648,
+    "offset": 114321,
     "length": 584
   },
   {
     "name": "flash/system/MessageChannelState",
     "defs": [
       "flash.system:MessageChannelState"
     ],
-    "offset": 116232,
+    "offset": 114905,
     "length": 278
   },
   {
     "name": "flash/system/Security",
     "defs": [
       "flash.system:Security"
     ],
-    "offset": 116510,
+    "offset": 115183,
     "length": 773
   },
   {
     "name": "flash/system/SecurityDomain",
     "defs": [
       "flash.system:SecurityDomain"
     ],
-    "offset": 117283,
+    "offset": 115956,
     "length": 265
   },
   {
     "name": "flash/system/SecurityPanel",
     "defs": [
       "flash.system:SecurityPanel"
     ],
-    "offset": 117548,
+    "offset": 116221,
     "length": 430
   },
   {
     "name": "flash/system/System",
     "defs": [
       "flash.system:System"
     ],
-    "offset": 117978,
+    "offset": 116651,
     "length": 629
   },
   {
     "name": "flash/system/SystemUpdater",
     "defs": [
       "flash.system:SystemUpdater"
     ],
-    "offset": 118607,
+    "offset": 117280,
     "length": 322
   },
   {
     "name": "flash/system/SystemUpdaterType",
     "defs": [
       "flash.system:SystemUpdaterType"
     ],
-    "offset": 118929,
+    "offset": 117602,
     "length": 241
   },
   {
     "name": "flash/system/TouchscreenType",
     "defs": [
       "flash.system:TouchscreenType"
     ],
-    "offset": 119170,
+    "offset": 117843,
     "length": 268
   },
   {
     "name": "flash/trace/Trace",
     "defs": [
       "flash.trace:Trace"
     ],
-    "offset": 119438,
+    "offset": 118111,
     "length": 488
   },
   {
     "name": "flash/ui/ContextMenu",
     "defs": [
       "flash.ui:ContextMenu"
     ],
-    "offset": 119926,
+    "offset": 118599,
     "length": 1036
   },
   {
     "name": "flash/ui/ContextMenuBuiltInItems",
     "defs": [
       "flash.ui:ContextMenuBuiltInItems"
     ],
-    "offset": 120962,
+    "offset": 119635,
     "length": 871
   },
   {
     "name": "flash/ui/ContextMenuClipboardItems",
     "defs": [
       "flash.ui:ContextMenuClipboardItems"
     ],
-    "offset": 121833,
+    "offset": 120506,
     "length": 587
   },
   {
     "name": "flash/ui/ContextMenuItem",
     "defs": [
       "flash.ui:ContextMenuItem"
     ],
-    "offset": 122420,
+    "offset": 121093,
     "length": 458
   },
   {
     "name": "flash/ui/GameInput",
     "defs": [
       "flash.ui:GameInput"
     ],
-    "offset": 122878,
+    "offset": 121551,
     "length": 333
   },
   {
     "name": "flash/ui/GameInputControl",
     "defs": [
       "flash.ui:GameInputControl"
     ],
-    "offset": 123211,
+    "offset": 121884,
     "length": 458
   },
   {
     "name": "flash/ui/GameInputControlType",
     "defs": [
       "flash.ui:GameInputControlType"
     ],
-    "offset": 123669,
+    "offset": 122342,
     "length": 389
   },
   {
     "name": "flash/ui/GameInputDevice",
     "defs": [
       "flash.ui:GameInputDevice"
     ],
-    "offset": 124058,
+    "offset": 122731,
     "length": 623
   },
   {
     "name": "flash/ui/GameInputFinger",
     "defs": [
       "flash.ui:GameInputFinger"
     ],
-    "offset": 124681,
+    "offset": 123354,
     "length": 291
   },
   {
     "name": "flash/ui/GameInputHand",
     "defs": [
       "flash.ui:GameInputHand"
     ],
-    "offset": 124972,
+    "offset": 123645,
     "length": 256
   },
   {
     "name": "flash/ui/Keyboard",
     "defs": [
       "flash.ui:Keyboard"
     ],
-    "offset": 125228,
+    "offset": 123901,
     "length": 9336
   },
   {
     "name": "flash/ui/KeyboardType",
     "defs": [
       "flash.ui:KeyboardType"
     ],
-    "offset": 134564,
+    "offset": 133237,
     "length": 266
   },
   {
     "name": "flash/ui/KeyLocation",
     "defs": [
       "flash.ui:KeyLocation"
     ],
-    "offset": 134830,
+    "offset": 133503,
     "length": 273
   },
   {
     "name": "flash/ui/Mouse",
     "defs": [
       "flash.ui:Mouse"
     ],
-    "offset": 135103,
+    "offset": 133776,
     "length": 397
   },
   {
     "name": "flash/ui/MouseCursor",
     "defs": [
       "flash.ui:MouseCursor"
     ],
-    "offset": 135500,
+    "offset": 134173,
     "length": 302
   },
   {
     "name": "flash/ui/MouseCursorData",
     "defs": [
       "flash.ui:MouseCursorData"
     ],
-    "offset": 135802,
+    "offset": 134475,
     "length": 352
   },
   {
     "name": "flash/ui/Multitouch",
     "defs": [
       "flash.ui:Multitouch"
     ],
-    "offset": 136154,
+    "offset": 134827,
     "length": 435
   },
   {
     "name": "flash/ui/MultitouchInputMode",
     "defs": [
       "flash.ui:MultitouchInputMode"
     ],
-    "offset": 136589,
+    "offset": 135262,
     "length": 279
   },
   {
     "name": "flash/sensors/Accelerometer",
     "defs": [
       "flash.sensors:Accelerometer"
     ],
-    "offset": 136868,
+    "offset": 135541,
     "length": 357
   },
   {
     "name": "flash/sensors/Geolocation",
     "defs": [
       "flash.sensors:Geolocation"
     ],
-    "offset": 137225,
+    "offset": 135898,
     "length": 351
   },
   {
     "name": "flash/display3D/Context3D",
     "defs": [
       "flash.display3D:Context3D"
     ],
-    "offset": 137576,
+    "offset": 136249,
     "length": 2088
   },
   {
     "name": "flash/display3D/Context3DBlendFactor",
     "defs": [
       "flash.display3D:Context3DBlendFactor"
     ],
-    "offset": 139664,
+    "offset": 138337,
     "length": 681
   },
   {
     "name": "flash/display3D/Context3DClearMask",
     "defs": [
       "flash.display3D:Context3DClearMask"
     ],
-    "offset": 140345,
+    "offset": 139018,
     "length": 292
   },
   {
     "name": "flash/display3D/Context3DProfile",
     "defs": [
       "flash.display3D:Context3DProfile"
     ],
-    "offset": 140637,
+    "offset": 139310,
     "length": 282
   },
   {
     "name": "flash/display3D/Context3DProgramType",
     "defs": [
       "flash.display3D:Context3DProgramType"
     ],
-    "offset": 140919,
+    "offset": 139592,
     "length": 263
   },
   {
     "name": "flash/display3D/Context3DRenderMode",
     "defs": [
       "flash.display3D:Context3DRenderMode"
     ],
-    "offset": 141182,
+    "offset": 139855,
     "length": 257
   },
   {
     "name": "flash/display3D/Context3DCompareMode",
     "defs": [
       "flash.display3D:Context3DCompareMode"
     ],
-    "offset": 141439,
+    "offset": 140112,
     "length": 452
   },
   {
     "name": "flash/display3D/Context3DStencilAction",
     "defs": [
       "flash.display3D:Context3DStencilAction"
     ],
-    "offset": 141891,
+    "offset": 140564,
     "length": 499
   },
   {
     "name": "flash/display3D/Context3DTextureFormat",
     "defs": [
       "flash.display3D:Context3DTextureFormat"
     ],
-    "offset": 142390,
+    "offset": 141063,
     "length": 315
   },
   {
     "name": "flash/display3D/Context3DTriangleFace",
     "defs": [
       "flash.display3D:Context3DTriangleFace"
     ],
-    "offset": 142705,
+    "offset": 141378,
     "length": 323
   },
   {
     "name": "flash/display3D/Context3DVertexBufferFormat",
     "defs": [
       "flash.display3D:Context3DVertexBufferFormat"
     ],
-    "offset": 143028,
+    "offset": 141701,
     "length": 365
   },
   {
     "name": "flash/display3D/IndexBuffer3D",
     "defs": [
       "flash.display3D:IndexBuffer3D"
     ],
-    "offset": 143393,
+    "offset": 142066,
     "length": 364
   },
   {
     "name": "flash/display3D/Program3D",
     "defs": [
       "flash.display3D:Program3D"
     ],
-    "offset": 143757,
+    "offset": 142430,
     "length": 275
   },
   {
     "name": "flash/display3D/VertexBuffer3D",
     "defs": [
       "flash.display3D:VertexBuffer3D"
     ],
-    "offset": 144032,
+    "offset": 142705,
     "length": 367
   },
   {
     "name": "flash/display3D/textures/CubeTexture",
     "defs": [
       "flash.display3D.textures:CubeTexture"
     ],
-    "offset": 144399,
+    "offset": 143072,
     "length": 501
   },
   {
     "name": "flash/display3D/textures/Texture",
     "defs": [
       "flash.display3D.textures:Texture"
     ],
-    "offset": 144900,
+    "offset": 143573,
     "length": 487
   },
   {
     "name": "flash/display3D/textures/TextureBase",
     "defs": [
       "flash.display3D.textures:TextureBase"
     ],
-    "offset": 145387,
+    "offset": 144060,
     "length": 292
   },
   {
     "name": "flash/net/DynamicPropertyOutput",
     "defs": [
       "flash.net:DynamicPropertyOutput"
     ],
-    "offset": 145679,
+    "offset": 144352,
     "length": 308
   },
   {
     "name": "flash/net/FileFilter",
     "defs": [
       "flash.net:FileFilter"
     ],
-    "offset": 145987,
+    "offset": 144660,
     "length": 318
   },
   {
     "name": "flash/net/FileReference",
     "defs": [
       "flash.net:FileReference"
     ],
-    "offset": 146305,
+    "offset": 144978,
     "length": 666
   },
   {
     "name": "flash/net/FileReferenceList",
     "defs": [
       "flash.net:FileReferenceList"
     ],
-    "offset": 146971,
+    "offset": 145644,
     "length": 315
   },
   {
     "name": "flash/net/GroupSpecifier",
     "defs": [
       "flash.net:GroupSpecifier"
     ],
-    "offset": 147286,
+    "offset": 145959,
     "length": 1492
   },
   {
     "name": "flash/net/IDynamicPropertyOutput",
     "defs": [
       "flash.net:IDynamicPropertyOutput"
     ],
-    "offset": 148778,
+    "offset": 147451,
     "length": 197
   },
   {
     "name": "flash/net/IDynamicPropertyWriter",
     "defs": [
       "flash.net:IDynamicPropertyWriter"
     ],
-    "offset": 148975,
+    "offset": 147648,
     "length": 225
   },
   {
     "name": "flash/net/LocalConnection",
     "defs": [
       "flash.net:LocalConnection"
     ],
-    "offset": 149200,
+    "offset": 147873,
     "length": 495
   },
   {
     "name": "flash/net/NetConnection",
     "defs": [
       "flash.net:NetConnection"
     ],
-    "offset": 149695,
+    "offset": 148368,
     "length": 906
   },
   {
     "name": "flash/net/NetGroup",
     "defs": [
       "flash.net:NetGroup"
     ],
-    "offset": 150601,
+    "offset": 149274,
     "length": 1299
   },
   {
     "name": "flash/net/NetGroupInfo",
     "defs": [
       "flash.net:NetGroupInfo"
     ],
-    "offset": 151900,
+    "offset": 150573,
     "length": 768
   },
   {
     "name": "flash/net/NetGroupReceiveMode",
     "defs": [
       "flash.net:NetGroupReceiveMode"
     ],
-    "offset": 152668,
+    "offset": 151341,
     "length": 245
   },
   {
     "name": "flash/net/NetGroupReplicationStrategy",
     "defs": [
       "flash.net:NetGroupReplicationStrategy"
     ],
-    "offset": 152913,
+    "offset": 151586,
     "length": 283
   },
   {
     "name": "flash/net/NetGroupSendMode",
     "defs": [
       "flash.net:NetGroupSendMode"
     ],
-    "offset": 153196,
+    "offset": 151869,
     "length": 273
   },
   {
     "name": "flash/net/NetGroupSendResult",
     "defs": [
       "flash.net:NetGroupSendResult"
     ],
-    "offset": 153469,
+    "offset": 152142,
     "length": 270
   },
   {
     "name": "flash/net/NetMonitor",
     "defs": [
       "flash.net:NetMonitor"
     ],
-    "offset": 153739,
+    "offset": 152412,
     "length": 279
   },
   {
     "name": "flash/net/NetStream",
     "defs": [
       "flash.net:NetStream"
     ],
-    "offset": 154018,
-    "length": 3103
+    "offset": 152691,
+    "length": 3064
   },
   {
     "name": "flash/net/NetStreamAppendBytesAction",
     "defs": [
       "flash.net:NetStreamAppendBytesAction"
     ],
-    "offset": 157121,
+    "offset": 155755,
     "length": 315
   },
   {
     "name": "flash/net/NetStreamMulticastInfo",
     "defs": [
       "flash.net:NetStreamMulticastInfo"
     ],
-    "offset": 157436,
+    "offset": 156070,
     "length": 2712
   },
   {
     "name": "flash/net/NetStreamInfo",
     "defs": [
       "flash.net:NetStreamInfo"
     ],
-    "offset": 160148,
+    "offset": 158782,
     "length": 1958
   },
   {
     "name": "flash/net/NetStreamPlayOptions",
     "defs": [
       "flash.net:NetStreamPlayOptions"
     ],
-    "offset": 162106,
+    "offset": 160740,
     "length": 355
   },
   {
     "name": "flash/net/NetStreamPlayTransitions",
     "defs": [
       "flash.net:NetStreamPlayTransitions"
     ],
-    "offset": 162461,
+    "offset": 161095,
     "length": 406
   },
   {
     "name": "flash/net/ObjectEncoding",
     "defs": [
       "flash.net:ObjectEncoding"
     ],
-    "offset": 162867,
+    "offset": 161501,
     "length": 345
   },
   {
     "name": "flash/net/Responder",
     "defs": [
       "flash.net:Responder"
     ],
-    "offset": 163212,
+    "offset": 161846,
     "length": 239
   },
   {
     "name": "flash/net/SecureSocket",
     "defs": [
       "flash.net:SecureSocket"
     ],
-    "offset": 163451,
+    "offset": 162085,
     "length": 566
   },
   {
     "name": "flash/net/SharedObject",
     "defs": [
       "flash.net:SharedObject"
     ],
-    "offset": 164017,
+    "offset": 162651,
     "length": 1108
   },
   {
     "name": "flash/net/SharedObjectFlushStatus",
     "defs": [
       "flash.net:SharedObjectFlushStatus"
     ],
-    "offset": 165125,
+    "offset": 163759,
     "length": 257
   },
   {
     "name": "flash/net/URLLoader",
     "defs": [
       "flash.net:URLLoader"
     ],
-    "offset": 165382,
+    "offset": 164016,
     "length": 1501
   },
   {
     "name": "flash/net/Socket",
     "defs": [
       "flash.net:Socket"
     ],
-    "offset": 166883,
+    "offset": 165517,
     "length": 1282
   },
   {
     "name": "flash/net/URLLoaderDataFormat",
     "defs": [
       "flash.net:URLLoaderDataFormat"
     ],
-    "offset": 168165,
+    "offset": 166799,
     "length": 276
   },
   {
     "name": "flash/net/URLRequest",
     "defs": [
       "flash.net:URLRequest"
     ],
-    "offset": 168441,
+    "offset": 167075,
     "length": 402
   },
   {
     "name": "flash/net/URLRequestHeader",
     "defs": [
       "flash.net:URLRequestHeader"
     ],
-    "offset": 168843,
+    "offset": 167477,
     "length": 223
   },
   {
     "name": "flash/net/URLStream",
     "defs": [
       "flash.net:URLStream"
     ],
-    "offset": 169066,
+    "offset": 167700,
     "length": 908
   },
   {
     "name": "flash/net/URLRequestMethod",
     "defs": [
       "flash.net:URLRequestMethod"
     ],
-    "offset": 169974,
+    "offset": 168608,
     "length": 304
   },
   {
     "name": "flash/net/URLVariables",
     "defs": [
       "flash.net:URLVariables"
     ],
-    "offset": 170278,
+    "offset": 168912,
     "length": 972
   },
   {
     "name": "flash/net/XMLSocket",
     "defs": [
       "flash.net:XMLSocket"
     ],
-    "offset": 171250,
+    "offset": 169884,
     "length": 480
   },
   {
     "name": "flash/text/AntiAliasType",
     "defs": [
       "flash.text:AntiAliasType"
     ],
-    "offset": 171730,
+    "offset": 170364,
     "length": 239
   },
   {
     "name": "flash/text/CSMSettings",
     "defs": [
       "flash.text:CSMSettings"
     ],
-    "offset": 171969,
+    "offset": 170603,
     "length": 248
   },
   {
     "name": "flash/text/Font",
     "defs": [
       "flash.text:Font"
     ],
-    "offset": 172217,
+    "offset": 170851,
     "length": 361
   },
   {
     "name": "flash/text/FontStyle",
     "defs": [
       "flash.text:FontStyle"
     ],
-    "offset": 172578,
+    "offset": 171212,
     "length": 292
   },
   {
     "name": "flash/text/FontType",
     "defs": [
       "flash.text:FontType"
     ],
-    "offset": 172870,
+    "offset": 171504,
     "length": 269
   },
   {
     "name": "flash/text/GridFitType",
     "defs": [
       "flash.text:GridFitType"
     ],
-    "offset": 173139,
+    "offset": 171773,
     "length": 258
   },
   {
     "name": "flash/text/StaticText",
     "defs": [
       "flash.text:StaticText"
     ],
-    "offset": 173397,
+    "offset": 172031,
     "length": 299
   },
   {
     "name": "flash/text/StyleSheet",
     "defs": [
       "flash.text:StyleSheet"
     ],
-    "offset": 173696,
+    "offset": 172330,
     "length": 523
   },
   {
     "name": "flash/text/TextColorType",
     "defs": [
       "flash.text:TextColorType"
     ],
-    "offset": 174219,
+    "offset": 172853,
     "length": 241
   },
   {
     "name": "flash/text/TextDisplayMode",
     "defs": [
       "flash.text:TextDisplayMode"
     ],
-    "offset": 174460,
+    "offset": 173094,
     "length": 258
   },
   {
     "name": "flash/text/TextField",
     "defs": [
       "flash.text:TextField"
     ],
-    "offset": 174718,
+    "offset": 173352,
     "length": 2507
   },
   {
     "name": "flash/text/TextFieldAutoSize",
     "defs": [
       "flash.text:TextFieldAutoSize"
     ],
-    "offset": 177225,
+    "offset": 175859,
     "length": 291
   },
   {
     "name": "flash/text/TextFieldType",
     "defs": [
       "flash.text:TextFieldType"
     ],
-    "offset": 177516,
+    "offset": 176150,
     "length": 235
   },
   {
     "name": "flash/text/TextFormat",
     "defs": [
       "flash.text:TextFormat"
     ],
-    "offset": 177751,
+    "offset": 176385,
     "length": 778
   },
   {
     "name": "flash/text/TextFormatAlign",
     "defs": [
       "flash.text:TextFormatAlign"
     ],
-    "offset": 178529,
+    "offset": 177163,
     "length": 343
   },
   {
     "name": "flash/text/TextFormatDisplay",
     "defs": [
       "flash.text:TextFormatDisplay"
     ],
-    "offset": 178872,
+    "offset": 177506,
     "length": 241
   },
   {
     "name": "flash/text/TextInteractionMode",
     "defs": [
       "flash.text:TextInteractionMode"
     ],
-    "offset": 179113,
+    "offset": 177747,
     "length": 253
   },
   {
     "name": "flash/text/TextLineMetrics",
     "defs": [
       "flash.text:TextLineMetrics"
     ],
-    "offset": 179366,
+    "offset": 178000,
     "length": 300
   },
   {
     "name": "flash/text/TextRenderer",
     "defs": [
       "flash.text:TextRenderer"
     ],
-    "offset": 179666,
+    "offset": 178300,
     "length": 373
   },
   {
     "name": "flash/text/TextRun",
     "defs": [
       "flash.text:TextRun"
     ],
-    "offset": 180039,
+    "offset": 178673,
     "length": 294
   },
   {
     "name": "flash/text/TextSnapshot",
     "defs": [
       "flash.text:TextSnapshot"
     ],
-    "offset": 180333,
+    "offset": 178967,
     "length": 513
   },
   {
     "name": "flash/text/engine/BreakOpportunity",
     "defs": [
       "flash.text.engine:BreakOpportunity"
     ],
-    "offset": 180846,
+    "offset": 179480,
     "length": 293
   },
   {
     "name": "flash/text/engine/CFFHinting",
     "defs": [
       "flash.text.engine:CFFHinting"
     ],
-    "offset": 181139,
+    "offset": 179773,
     "length": 256
   },
   {
     "name": "flash/text/engine/ContentElement",
     "defs": [
       "flash.text.engine:ContentElement"
     ],
-    "offset": 181395,
+    "offset": 180029,
     "length": 624
   },
   {
     "name": "flash/text/engine/DigitCase",
     "defs": [
       "flash.text.engine:DigitCase"
     ],
-    "offset": 182019,
+    "offset": 180653,
     "length": 277
   },
   {
     "name": "flash/text/engine/DigitWidth",
     "defs": [
       "flash.text.engine:DigitWidth"
     ],
-    "offset": 182296,
+    "offset": 180930,
     "length": 288
   },
   {
     "name": "flash/text/engine/EastAsianJustifier",
     "defs": [
       "flash.text.engine:EastAsianJustifier"
     ],
-    "offset": 182584,
+    "offset": 181218,
     "length": 495
   },
   {
     "name": "flash/text/engine/ElementFormat",
     "defs": [
       "flash.text.engine:ElementFormat"
     ],
-    "offset": 183079,
+    "offset": 181713,
     "length": 1204
   },
   {
     "name": "flash/text/engine/FontDescription",
     "defs": [
       "flash.text.engine:FontDescription"
     ],
-    "offset": 184283,
+    "offset": 182917,
     "length": 672
   },
   {
     "name": "flash/text/engine/FontLookup",
     "defs": [
       "flash.text.engine:FontLookup"
     ],
-    "offset": 184955,
+    "offset": 183589,
     "length": 254
   },
   {
     "name": "flash/text/engine/FontMetrics",
     "defs": [
       "flash.text.engine:FontMetrics"
     ],
-    "offset": 185209,
+    "offset": 183843,
     "length": 512
   },
   {
     "name": "flash/text/engine/FontPosture",
     "defs": [
       "flash.text.engine:FontPosture"
     ],
-    "offset": 185721,
+    "offset": 184355,
     "length": 245
   },
   {
     "name": "flash/text/engine/FontWeight",
     "defs": [
       "flash.text.engine:FontWeight"
     ],
-    "offset": 185966,
+    "offset": 184600,
     "length": 239
   },
   {
     "name": "flash/text/engine/GraphicElement",
     "defs": [
       "flash.text.engine:GraphicElement"
     ],
-    "offset": 186205,
+    "offset": 184839,
     "length": 497
   },
   {
     "name": "flash/text/engine/GroupElement",
     "defs": [
       "flash.text.engine:GroupElement"
     ],
-    "offset": 186702,
+    "offset": 185336,
     "length": 714
   },
   {
     "name": "flash/text/engine/JustificationStyle",
     "defs": [
       "flash.text.engine:JustificationStyle"
     ],
-    "offset": 187416,
+    "offset": 186050,
     "length": 356
   },
   {
     "name": "flash/text/engine/Kerning",
     "defs": [
       "flash.text.engine:Kerning"
     ],
-    "offset": 187772,
+    "offset": 186406,
     "length": 248
   },
   {
     "name": "flash/text/engine/LigatureLevel",
     "defs": [
       "flash.text.engine:LigatureLevel"
     ],
-    "offset": 188020,
+    "offset": 186654,
     "length": 338
   },
   {
     "name": "flash/text/engine/LineJustification",
     "defs": [
       "flash.text.engine:LineJustification"
     ],
-    "offset": 188358,
+    "offset": 186992,
     "length": 388
   },
   {
     "name": "flash/text/engine/RenderingMode",
     "defs": [
       "flash.text.engine:RenderingMode"
     ],
-    "offset": 188746,
+    "offset": 187380,
     "length": 243
   },
   {
     "name": "flash/text/engine/SpaceJustifier",
     "defs": [
       "flash.text.engine:SpaceJustifier"
     ],
-    "offset": 188989,
+    "offset": 187623,
     "length": 527
   },
   {
     "name": "flash/text/engine/TabAlignment",
     "defs": [
       "flash.text.engine:TabAlignment"
     ],
-    "offset": 189516,
+    "offset": 188150,
     "length": 299
   },
   {
     "name": "flash/text/engine/TabStop",
     "defs": [
       "flash.text.engine:TabStop"
     ],
-    "offset": 189815,
+    "offset": 188449,
     "length": 357
   },
   {
     "name": "flash/text/engine/TextBaseline",
     "defs": [
       "flash.text.engine:TextBaseline"
     ],
-    "offset": 190172,
+    "offset": 188806,
     "length": 483
   },
   {
     "name": "flash/text/engine/TextBlock",
     "defs": [
       "flash.text.engine:TextBlock"
     ],
-    "offset": 190655,
+    "offset": 189289,
     "length": 2184
   },
   {
     "name": "flash/text/engine/TextElement",
     "defs": [
       "flash.text.engine:TextElement"
     ],
-    "offset": 192839,
+    "offset": 191473,
     "length": 383
   },
   {
     "name": "flash/text/engine/TextJustifier",
     "defs": [
       "flash.text.engine:TextJustifier"
     ],
-    "offset": 193222,
+    "offset": 191856,
     "length": 774
   },
   {
     "name": "flash/text/engine/TextLine",
     "defs": [
       "flash.text.engine:TextLine"
     ],
-    "offset": 193996,
+    "offset": 192630,
     "length": 2027
   },
   {
     "name": "flash/text/engine/TextLineCreationResult",
     "defs": [
       "flash.text.engine:TextLineCreationResult"
     ],
-    "offset": 196023,
+    "offset": 194657,
     "length": 360
   },
   {
     "name": "flash/text/engine/TextLineMirrorRegion",
     "defs": [
       "flash.text.engine:TextLineMirrorRegion"
     ],
-    "offset": 196383,
+    "offset": 195017,
     "length": 451
   },
   {
     "name": "flash/text/engine/TextLineValidity",
     "defs": [
       "flash.text.engine:TextLineValidity"
     ],
-    "offset": 196834,
+    "offset": 195468,
     "length": 332
   },
   {
     "name": "flash/text/engine/TextRotation",
     "defs": [
       "flash.text.engine:TextRotation"
     ],
-    "offset": 197166,
+    "offset": 195800,
     "length": 352
   },
   {
     "name": "flash/text/engine/TypographicCase",
     "defs": [
       "flash.text.engine:TypographicCase"
     ],
-    "offset": 197518,
+    "offset": 196152,
     "length": 436
   },
   {
     "name": "flash/text/ime/CompositionAttributeRange",
     "defs": [
       "flash.text.ime:CompositionAttributeRange"
     ],
-    "offset": 197954,
+    "offset": 196588,
     "length": 315
   },
   {
     "name": "flash/text/ime/IIMEClient",
     "defs": [
       "flash.text.ime:IIMEClient"
     ],
-    "offset": 198269,
+    "offset": 196903,
     "length": 525
   },
   {
     "name": "flash/net/FlashNetScript",
     "defs": [
       "flash.net:navigateToURL",
       "flash.net:sendToURL",
       "flash.net:registerClassAlias",
       "flash.net:getClassByAlias"
     ],
-    "offset": 198794,
+    "offset": 197428,
     "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": 199137,
+    "offset": 197771,
     "length": 606
   },
   {
     "name": "flash/utils/Endian",
     "defs": [
       "flash.utils:Endian"
     ],
-    "offset": 199743,
+    "offset": 198377,
     "length": 243
   },
   {
     "name": "flash/utils/IExternalizable",
     "defs": [
       "flash.utils:IExternalizable"
     ],
-    "offset": 199986,
+    "offset": 198620,
     "length": 223
   },
   {
     "name": "flash/utils/ObjectInput",
     "defs": [
       "flash.utils:ObjectInput"
     ],
-    "offset": 200209,
+    "offset": 198843,
     "length": 706
   },
   {
     "name": "flash/utils/ObjectOutput",
     "defs": [
       "flash.utils:ObjectOutput"
     ],
-    "offset": 200915,
+    "offset": 199549,
     "length": 648
   },
   {
     "name": "flash/utils/Timer",
     "defs": [
       "flash.utils:Timer"
     ],
-    "offset": 201563,
+    "offset": 200197,
     "length": 973
   },
   {
     "name": "flash/utils/SetIntervalTimer",
     "defs": [
       "flash.utils:SetIntervalTimer",
       "flash.utils:setInterval",
       "flash.utils:setTimeout",
       "flash.utils:clearInterval",
       "flash.utils:clearTimeout"
     ],
-    "offset": 202536,
+    "offset": 201170,
     "length": 995
   }
 ]
\ No newline at end of file
--- a/browser/extensions/shumway/content/shumway.gfx.js
+++ b/browser/extensions/shumway/content/shumway.gfx.js
@@ -1,16832 +1,11141 @@
-/**
- * Copyright 2014 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.
- */
-// Manifest gfx
 console.time("Load Shared Dependencies");
-var jsGlobal = (function () {
-  return this || (1, eval)('this');
-})();
-var inBrowser = typeof console != "undefined";
-
-var release = false;
-var profile = false;
-
-if (!jsGlobal.performance) {
-  jsGlobal.performance = {};
-}
-
-if (!jsGlobal.performance.now) {
-  jsGlobal.performance.now = typeof dateNow !== 'undefined' ? dateNow : Date.now;
-}
-
-function log(message) {
-  var optionalParams = [];
-  for (var _i = 0; _i < (arguments.length - 1); _i++) {
-    optionalParams[_i] = arguments[_i + 1];
+var jsGlobal = function() {
+  return this || (0,eval)("this");
+}(), inBrowser = "undefined" != typeof console;
+jsGlobal.performance || (jsGlobal.performance = {});
+jsGlobal.performance.now || (jsGlobal.performance.now = "undefined" !== typeof dateNow ? dateNow : Date.now);
+function log(d) {
+  for (var m = 0;m < arguments.length - 1;m++) {
   }
   jsGlobal.print.apply(jsGlobal, arguments);
 }
-
-function warn(message) {
-  var optionalParams = [];
-  for (var _i = 0; _i < (arguments.length - 1); _i++) {
-    optionalParams[_i] = arguments[_i + 1];
+function warn(d) {
+  for (var m = 0;m < arguments.length - 1;m++) {
   }
-  if (inBrowser) {
-    console.warn.apply(console, arguments);
-  } else {
-    jsGlobal.print(Shumway.IndentingWriter.RED + message + Shumway.IndentingWriter.ENDC);
-  }
+  inBrowser ? console.warn.apply(console, arguments) : jsGlobal.print(Shumway.IndentingWriter.RED + d + Shumway.IndentingWriter.ENDC);
 }
-
 var Shumway;
-(function (Shumway) {
-  (function (CharacterCodes) {
-    CharacterCodes[CharacterCodes["_0"] = 48] = "_0";
-    CharacterCodes[CharacterCodes["_1"] = 49] = "_1";
-    CharacterCodes[CharacterCodes["_2"] = 50] = "_2";
-    CharacterCodes[CharacterCodes["_3"] = 51] = "_3";
-    CharacterCodes[CharacterCodes["_4"] = 52] = "_4";
-    CharacterCodes[CharacterCodes["_5"] = 53] = "_5";
-    CharacterCodes[CharacterCodes["_6"] = 54] = "_6";
-    CharacterCodes[CharacterCodes["_7"] = 55] = "_7";
-    CharacterCodes[CharacterCodes["_8"] = 56] = "_8";
-    CharacterCodes[CharacterCodes["_9"] = 57] = "_9";
-  })(Shumway.CharacterCodes || (Shumway.CharacterCodes = {}));
-  var CharacterCodes = Shumway.CharacterCodes;
-
-  Shumway.UINT32_CHAR_BUFFER_LENGTH = 10;
-  Shumway.UINT32_MAX = 0xFFFFFFFF;
-  Shumway.UINT32_MAX_DIV_10 = 0x19999999;
-  Shumway.UINT32_MAX_MOD_10 = 0x5;
-
-  function isString(value) {
-    return typeof value === "string";
-  }
-  Shumway.isString = isString;
-
-  function isFunction(value) {
-    return typeof value === "function";
-  }
-  Shumway.isFunction = isFunction;
-
-  function isNumber(value) {
-    return typeof value === "number";
-  }
-  Shumway.isNumber = isNumber;
-
-  function isInteger(value) {
-    return (value | 0) === value;
-  }
-  Shumway.isInteger = isInteger;
-
-  function isArray(value) {
-    return value instanceof Array;
+(function(d) {
+  function m(b) {
+    return(b | 0) === b;
   }
-  Shumway.isArray = isArray;
-
-  function isNumberOrString(value) {
-    return typeof value === "number" || typeof value === "string";
-  }
-  Shumway.isNumberOrString = isNumberOrString;
-
-  function isObject(value) {
-    return typeof value === "object" || typeof value === 'function';
+  function s(b) {
+    return "object" === typeof b || "function" === typeof b;
   }
-  Shumway.isObject = isObject;
-
-  function toNumber(x) {
-    return +x;
+  function e(b) {
+    return String(Number(b)) === b;
   }
-  Shumway.toNumber = toNumber;
-
-  function isNumericString(value) {
-    return String(Number(value)) === value;
-  }
-  Shumway.isNumericString = isNumericString;
-
-  function isNumeric(value) {
-    if (typeof value === "number") {
-      return true;
+  function t(b) {
+    var h = 0;
+    if ("number" === typeof b) {
+      return h = b | 0, b === h && 0 <= h ? !0 : b >>> 0 === b;
     }
-    if (typeof value === "string") {
-      var c = value.charCodeAt(0);
-      if ((65 <= c && c <= 90) || (97 <= c && c <= 122) || (c === 36) || (c === 95)) {
-        return false;
-      }
-      return isIndex(value) || isNumericString(value);
-    }
-
-    return false;
-  }
-  Shumway.isNumeric = isNumeric;
-
-  function isIndex(value) {
-    var index = 0;
-    if (typeof value === "number") {
-      index = (value | 0);
-      if (value === index && index >= 0) {
-        return true;
-      }
-      return value >>> 0 === value;
-    }
-    if (typeof value !== "string") {
-      return false;
-    }
-    var length = value.length;
-    if (length === 0) {
-      return false;
-    }
-    if (value === "0") {
-      return true;
+    if ("string" !== typeof b) {
+      return!1;
     }
-
-    if (length > Shumway.UINT32_CHAR_BUFFER_LENGTH) {
-      return false;
-    }
-    var i = 0;
-    index = value.charCodeAt(i++) - 48 /* _0 */;
-    if (index < 1 || index > 9) {
-      return false;
-    }
-    var oldIndex = 0;
-    var c = 0;
-    while (i < length) {
-      c = value.charCodeAt(i++) - 48 /* _0 */;
-      if (c < 0 || c > 9) {
-        return false;
-      }
-      oldIndex = index;
-      index = 10 * index + c;
-    }
-
-    if ((oldIndex < Shumway.UINT32_MAX_DIV_10) || (oldIndex === Shumway.UINT32_MAX_DIV_10 && c <= Shumway.UINT32_MAX_MOD_10)) {
-      return true;
+    var a = b.length;
+    if (0 === a) {
+      return!1;
     }
-    return false;
-  }
-  Shumway.isIndex = isIndex;
-
-  function isNullOrUndefined(value) {
-    return value == undefined;
-  }
-  Shumway.isNullOrUndefined = isNullOrUndefined;
-
-  (function (Debug) {
-    function backtrace() {
-      try  {
-        throw new Error();
-      } catch (e) {
-        return e.stack ? e.stack.split('\n').slice(2).join('\n') : '';
-      }
+    if ("0" === b) {
+      return!0;
     }
-    Debug.backtrace = backtrace;
-
-    function error(message) {
-      if (!inBrowser) {
-        warn(message + "\n\nStack Trace:\n" + Debug.backtrace());
-      }
-      throw new Error(message);
-    }
-    Debug.error = error;
-
-    function assert(condition, message) {
-      if (typeof message === "undefined") { message = "assertion failed"; }
-      if (condition === "") {
-        condition = true;
-      }
-      if (!condition) {
-        Debug.error(message.toString());
-      }
+    if (a > d.UINT32_CHAR_BUFFER_LENGTH) {
+      return!1;
     }
-    Debug.assert = assert;
-
-    function assertUnreachable(msg) {
-      var location = new Error().stack.split('\n')[1];
-      throw new Error("Reached unreachable location " + location + msg);
-    }
-    Debug.assertUnreachable = assertUnreachable;
-
-    function assertNotImplemented(condition, message) {
-      if (!condition) {
-        Debug.error("NotImplemented: " + message);
-      }
-    }
-    Debug.assertNotImplemented = assertNotImplemented;
-
-    function warning(message) {
-      release || warn(message);
-    }
-    Debug.warning = warning;
-
-    function notUsed(message) {
-      release || Debug.assert(false, "Not Used " + message);
-    }
-    Debug.notUsed = notUsed;
-
-    function notImplemented(message) {
-      log("release: " + release);
-      release || Debug.assert(false, "Not Implemented " + message);
+    var n = 0, h = b.charCodeAt(n++) - 48;
+    if (1 > h || 9 < h) {
+      return!1;
     }
-    Debug.notImplemented = notImplemented;
-
-    function abstractMethod(message) {
-      Debug.assert(false, "Abstract Method " + message);
-    }
-    Debug.abstractMethod = abstractMethod;
-
-    var somewhatImplementedCache = {};
-
-    function somewhatImplemented(message) {
-      if (somewhatImplementedCache[message]) {
-        return;
-      }
-      somewhatImplementedCache[message] = true;
-      Debug.warning("somewhatImplemented: " + message);
+    for (var f = 0, q = 0;n < a;) {
+      q = b.charCodeAt(n++) - 48;
+      if (0 > q || 9 < q) {
+        return!1;
+      }
+      f = h;
+      h = 10 * h + q;
     }
-    Debug.somewhatImplemented = somewhatImplemented;
-
-    function unexpected(message) {
-      Debug.assert(false, "Unexpected: " + message);
-    }
-    Debug.unexpected = unexpected;
-
-    function untested(message) {
-      Debug.warning("Congratulations, you've found a code path for which we haven't found a test case. Please submit the test case: " + message);
-    }
-    Debug.untested = untested;
-  })(Shumway.Debug || (Shumway.Debug = {}));
-  var Debug = Shumway.Debug;
-
-  function getTicks() {
-    return performance.now();
+    return f < d.UINT32_MAX_DIV_10 || f === d.UINT32_MAX_DIV_10 && q <= d.UINT32_MAX_MOD_10 ? !0 : !1;
   }
-  Shumway.getTicks = getTicks;
-
-  (function (ArrayUtilities) {
-    var assert = Shumway.Debug.assert;
-
-    function popManyInto(src, count, dst) {
-      release || assert(src.length >= count);
-      for (var i = count - 1; i >= 0; i--) {
-        dst[i] = src.pop();
-      }
-      dst.length = count;
-    }
-    ArrayUtilities.popManyInto = popManyInto;
-
-    function popMany(array, count) {
-      release || assert(array.length >= count);
-      var start = array.length - count;
-      var result = array.slice(start, this.length);
-      array.splice(start, count);
-      return result;
+  (function(b) {
+    b[b._0 = 48] = "_0";
+    b[b._1 = 49] = "_1";
+    b[b._2 = 50] = "_2";
+    b[b._3 = 51] = "_3";
+    b[b._4 = 52] = "_4";
+    b[b._5 = 53] = "_5";
+    b[b._6 = 54] = "_6";
+    b[b._7 = 55] = "_7";
+    b[b._8 = 56] = "_8";
+    b[b._9 = 57] = "_9";
+  })(d.CharacterCodes || (d.CharacterCodes = {}));
+  d.UINT32_CHAR_BUFFER_LENGTH = 10;
+  d.UINT32_MAX = 4294967295;
+  d.UINT32_MAX_DIV_10 = 429496729;
+  d.UINT32_MAX_MOD_10 = 5;
+  d.isString = function(b) {
+    return "string" === typeof b;
+  };
+  d.isFunction = function(b) {
+    return "function" === typeof b;
+  };
+  d.isNumber = function(b) {
+    return "number" === typeof b;
+  };
+  d.isInteger = m;
+  d.isArray = function(b) {
+    return b instanceof Array;
+  };
+  d.isNumberOrString = function(b) {
+    return "number" === typeof b || "string" === typeof b;
+  };
+  d.isObject = s;
+  d.toNumber = function(b) {
+    return+b;
+  };
+  d.isNumericString = e;
+  d.isNumeric = function(b) {
+    if ("number" === typeof b) {
+      return!0;
     }
-    ArrayUtilities.popMany = popMany;
-
-    function popManyIntoVoid(array, count) {
-      release || assert(array.length >= count);
-      array.length = array.length - count;
-    }
-    ArrayUtilities.popManyIntoVoid = popManyIntoVoid;
-
-    function pushMany(dst, src) {
-      for (var i = 0; i < src.length; i++) {
-        dst.push(src[i]);
-      }
-    }
-    ArrayUtilities.pushMany = pushMany;
-
-    function top(array) {
-      return array.length && array[array.length - 1];
-    }
-    ArrayUtilities.top = top;
-
-    function last(array) {
-      return array.length && array[array.length - 1];
-    }
-    ArrayUtilities.last = last;
-
-    function peek(array) {
-      release || assert(array.length > 0);
-      return array[array.length - 1];
+    if ("string" === typeof b) {
+      var h = b.charCodeAt(0);
+      return 65 <= h && 90 >= h || 97 <= h && 122 >= h || 36 === h || 95 === h ? !1 : t(b) || e(b);
     }
-    ArrayUtilities.peek = peek;
-
-    function indexOf(array, value) {
-      for (var i = 0, j = array.length; i < j; i++) {
-        if (array[i] === value) {
-          return i;
-        }
-      }
-      return -1;
-    }
-    ArrayUtilities.indexOf = indexOf;
-
-    function pushUnique(array, value) {
-      for (var i = 0, j = array.length; i < j; i++) {
-        if (array[i] === value) {
-          return i;
-        }
-      }
-      array.push(value);
-      return array.length - 1;
-    }
-    ArrayUtilities.pushUnique = pushUnique;
-
-    function unique(array) {
-      var result = [];
-      for (var i = 0; i < array.length; i++) {
-        pushUnique(result, array[i]);
-      }
-      return result;
+    return!1;
+  };
+  d.isIndex = t;
+  d.isNullOrUndefined = function(b) {
+    return void 0 == b;
+  };
+  (function(b) {
+    b.backtrace = function() {
+      try {
+        throw Error();
+      } catch (b) {
+        return b.stack ? b.stack.split("\n").slice(2).join("\n") : "";
+      }
+    };
+    b.error = function(h) {
+      inBrowser ? warn(h) : warn(h + "\n\nStack Trace:\n" + b.backtrace());
+      throw Error(h);
+    };
+    b.assert = function(h, n) {
+      "undefined" === typeof n && (n = "assertion failed");
+      "" === h && (h = !0);
+      h || b.error(n.toString());
+    };
+    b.assertUnreachable = function(b) {
+      throw Error("Reached unreachable location " + Error().stack.split("\n")[1] + b);
+    };
+    b.assertNotImplemented = function(h, n) {
+      h || b.error("notImplemented: " + n);
+    };
+    b.warning = function(b) {
+      warn(b);
+    };
+    b.notUsed = function(h) {
+      b.assert(!1, "Not Used " + h);
+    };
+    b.notImplemented = function(h) {
+      log("release: false");
+      b.assert(!1, "Not Implemented " + h);
+    };
+    b.abstractMethod = function(h) {
+      b.assert(!1, "Abstract Method " + h);
+    };
+    var h = {};
+    b.somewhatImplemented = function(a) {
+      h[a] || (h[a] = !0, b.warning("somewhatImplemented: " + a));
+    };
+    b.unexpected = function(h) {
+      b.assert(!1, "Unexpected: " + h);
+    };
+    b.untested = function(h) {
+      b.warning("Congratulations, you've found a code path for which we haven't found a test case. Please submit the test case: " + h);
+    };
+  })(d.Debug || (d.Debug = {}));
+  var k = d.Debug;
+  d.getTicks = function() {
+    return performance.now();
+  };
+  (function(b) {
+    function h(f, b) {
+      for (var n = 0, h = f.length;n < h;n++) {
+        if (f[n] === b) {
+          return n;
+        }
+      }
+      f.push(b);
+      return f.length - 1;
     }
-    ArrayUtilities.unique = unique;
-
-    function copyFrom(dst, src) {
-      dst.length = 0;
-      ArrayUtilities.pushMany(dst, src);
-    }
-    ArrayUtilities.copyFrom = copyFrom;
-
-    function ensureTypedArrayCapacity(array, capacity) {
-      if (array.length < capacity) {
-        var oldArray = array;
-        array = new array.constructor(Shumway.IntegerUtilities.nearestPowerOfTwo(capacity));
-        array.set(oldArray, 0);
-      }
-      return array;
-    }
-    ArrayUtilities.ensureTypedArrayCapacity = ensureTypedArrayCapacity;
-
-    var ArrayWriter = (function () {
-      function ArrayWriter(initialCapacity) {
-        if (typeof initialCapacity === "undefined") { initialCapacity = 16; }
-        this._u8 = null;
-        this._u16 = null;
-        this._i32 = null;
-        this._f32 = null;
-        this._offset = 0;
-        this.ensureCapacity(initialCapacity);
-      }
-      ArrayWriter.prototype.reset = function () {
+    var a = d.Debug.assert;
+    b.popManyInto = function(f, b, n) {
+      a(f.length >= b);
+      for (var h = b - 1;0 <= h;h--) {
+        n[h] = f.pop();
+      }
+      n.length = b;
+    };
+    b.popMany = function(f, b) {
+      a(f.length >= b);
+      var n = f.length - b, h = f.slice(n, this.length);
+      f.splice(n, b);
+      return h;
+    };
+    b.popManyIntoVoid = function(f, b) {
+      a(f.length >= b);
+      f.length -= b;
+    };
+    b.pushMany = function(f, b) {
+      for (var n = 0;n < b.length;n++) {
+        f.push(b[n]);
+      }
+    };
+    b.top = function(f) {
+      return f.length && f[f.length - 1];
+    };
+    b.last = function(f) {
+      return f.length && f[f.length - 1];
+    };
+    b.peek = function(f) {
+      a(0 < f.length);
+      return f[f.length - 1];
+    };
+    b.indexOf = function(f, b) {
+      for (var n = 0, h = f.length;n < h;n++) {
+        if (f[n] === b) {
+          return n;
+        }
+      }
+      return-1;
+    };
+    b.pushUnique = h;
+    b.unique = function(f) {
+      for (var b = [], n = 0;n < f.length;n++) {
+        h(b, f[n]);
+      }
+      return b;
+    };
+    b.copyFrom = function(f, n) {
+      f.length = 0;
+      b.pushMany(f, n);
+    };
+    b.ensureTypedArrayCapacity = function(f, b) {
+      if (f.length < b) {
+        var n = f;
+        f = new f.constructor(d.IntegerUtilities.nearestPowerOfTwo(b));
+        f.set(n, 0);
+      }
+      return f;
+    };
+    var n = function() {
+      function f(f) {
+        "undefined" === typeof f && (f = 16);
+        this._f32 = this._i32 = this._u16 = this._u8 = null;
         this._offset = 0;
-      };
-
-      Object.defineProperty(ArrayWriter.prototype, "offset", {
-        get: function () {
-          return this._offset;
-        },
-        enumerable: true,
-        configurable: true
-      });
-
-      ArrayWriter.prototype.getIndex = function (size) {
-        release || assert(size === 1 || size === 2 || size === 4 || size === 8 || size === 16);
-        var index = this._offset / size;
-        release || assert((index | 0) === index);
-        return index;
-      };
-
-      ArrayWriter.prototype.ensureAdditionalCapacity = function (size) {
-        this.ensureCapacity(this._offset + size);
-      };
-
-      ArrayWriter.prototype.ensureCapacity = function (minCapacity) {
+        this.ensureCapacity(f);
+      }
+      f.prototype.reset = function() {
+        this._offset = 0;
+      };
+      Object.defineProperty(f.prototype, "offset", {get:function() {
+        return this._offset;
+      }, enumerable:!0, configurable:!0});
+      f.prototype.getIndex = function(f) {
+        a(1 === f || 2 === f || 4 === f || 8 === f || 16 === f);
+        f = this._offset / f;
+        a((f | 0) === f);
+        return f;
+      };
+      f.prototype.ensureAdditionalCapacity = function() {
+        this.ensureCapacity(this._offset + 68);
+      };
+      f.prototype.ensureCapacity = function(f) {
         if (!this._u8) {
-          this._u8 = new Uint8Array(minCapacity);
-        } else if (this._u8.length > minCapacity) {
-          return;
-        }
-        var oldCapacity = this._u8.length;
-
-        var newCapacity = oldCapacity * 2;
-        if (newCapacity < minCapacity) {
-          newCapacity = minCapacity;
-        }
-        var u8 = new Uint8Array(newCapacity);
-        u8.set(this._u8, 0);
-        this._u8 = u8;
-        this._u16 = new Uint16Array(u8.buffer);
-        this._i32 = new Int32Array(u8.buffer);
-        this._f32 = new Float32Array(u8.buffer);
-      };
-
-      ArrayWriter.prototype.writeInt = function (v) {
-        release || assert((this._offset & 0x3) === 0);
+          this._u8 = new Uint8Array(f);
+        } else {
+          if (this._u8.length > f) {
+            return;
+          }
+        }
+        var b = 2 * this._u8.length;
+        b < f && (b = f);
+        f = new Uint8Array(b);
+        f.set(this._u8, 0);
+        this._u8 = f;
+        this._u16 = new Uint16Array(f.buffer);
+        this._i32 = new Int32Array(f.buffer);
+        this._f32 = new Float32Array(f.buffer);
+      };
+      f.prototype.writeInt = function(f) {
+        a(0 === (this._offset & 3));
         this.ensureCapacity(this._offset + 4);
-        this.writeIntUnsafe(v);
-      };
-
-      ArrayWriter.prototype.writeIntAt = function (v, offset) {
-        release || assert(offset >= 0 && offset <= this._offset);
-        release || assert((offset & 0x3) === 0);
-        this.ensureCapacity(offset + 4);
-        var index = offset >> 2;
-        this._i32[index] = v;
-      };
-
-      ArrayWriter.prototype.writeIntUnsafe = function (v) {
-        var index = this._offset >> 2;
-        this._i32[index] = v;
+        this.writeIntUnsafe(f);
+      };
+      f.prototype.writeIntAt = function(f, b) {
+        a(0 <= b && b <= this._offset);
+        a(0 === (b & 3));
+        this.ensureCapacity(b + 4);
+        this._i32[b >> 2] = f;
+      };
+      f.prototype.writeIntUnsafe = function(f) {
+        this._i32[this._offset >> 2] = f;
         this._offset += 4;
       };
-
-      ArrayWriter.prototype.writeFloat = function (v) {
-        release || assert((this._offset & 0x3) === 0);
+      f.prototype.writeFloat = function(f) {
+        a(0 === (this._offset & 3));
         this.ensureCapacity(this._offset + 4);
-        this.writeFloatUnsafe(v);
-      };
-
-      ArrayWriter.prototype.writeFloatUnsafe = function (v) {
-        var index = this._offset >> 2;
-        this._f32[index] = v;
+        this.writeFloatUnsafe(f);
+      };
+      f.prototype.writeFloatUnsafe = function(f) {
+        this._f32[this._offset >> 2] = f;
         this._offset += 4;
       };
-
-      ArrayWriter.prototype.write4Floats = function (a, b, c, d) {
-        release || assert((this._offset & 0x3) === 0);
+      f.prototype.write4Floats = function(f, b, n, h) {
+        a(0 === (this._offset & 3));
         this.ensureCapacity(this._offset + 16);
-        this.write4FloatsUnsafe(a, b, c, d);
-      };
-
-      ArrayWriter.prototype.write4FloatsUnsafe = function (a, b, c, d) {
-        var index = this._offset >> 2;
-        this._f32[index + 0] = a;
-        this._f32[index + 1] = b;
-        this._f32[index + 2] = c;
-        this._f32[index + 3] = d;
+        this.write4FloatsUnsafe(f, b, n, h);
+      };
+      f.prototype.write4FloatsUnsafe = function(f, b, n, h) {
+        var a = this._offset >> 2;
+        this._f32[a + 0] = f;
+        this._f32[a + 1] = b;
+        this._f32[a + 2] = n;
+        this._f32[a + 3] = h;
         this._offset += 16;
       };
-
-      ArrayWriter.prototype.write6Floats = function (a, b, c, d, e, f) {
-        release || assert((this._offset & 0x3) === 0);
+      f.prototype.write6Floats = function(f, b, n, h, c, g) {
+        a(0 === (this._offset & 3));
         this.ensureCapacity(this._offset + 24);
-        this.write6FloatsUnsafe(a, b, c, d, e, f);
-      };
-
-      ArrayWriter.prototype.write6FloatsUnsafe = function (a, b, c, d, e, f) {
-        var index = this._offset >> 2;
-        this._f32[index + 0] = a;
-        this._f32[index + 1] = b;
-        this._f32[index + 2] = c;
-        this._f32[index + 3] = d;
-        this._f32[index + 4] = e;
-        this._f32[index + 5] = f;
+        this.write6FloatsUnsafe(f, b, n, h, c, g);
+      };
+      f.prototype.write6FloatsUnsafe = function(f, b, n, h, a, c) {
+        var g = this._offset >> 2;
+        this._f32[g + 0] = f;
+        this._f32[g + 1] = b;
+        this._f32[g + 2] = n;
+        this._f32[g + 3] = h;
+        this._f32[g + 4] = a;
+        this._f32[g + 5] = c;
         this._offset += 24;
       };
-
-      ArrayWriter.prototype.subF32View = function () {
+      f.prototype.subF32View = function() {
         return this._f32.subarray(0, this._offset >> 2);
       };
-
-      ArrayWriter.prototype.subI32View = function () {
+      f.prototype.subI32View = function() {
         return this._i32.subarray(0, this._offset >> 2);
       };
-
-      ArrayWriter.prototype.subU16View = function () {
+      f.prototype.subU16View = function() {
         return this._u16.subarray(0, this._offset >> 1);
       };
-
-      ArrayWriter.prototype.subU8View = function () {
+      f.prototype.subU8View = function() {
         return this._u8.subarray(0, this._offset);
       };
-
-      ArrayWriter.prototype.hashWords = function (hash, offset, length) {
-        var i32 = this._i32;
-        for (var i = 0; i < length; i++) {
-          hash = (((31 * hash) | 0) + i32[i]) | 0;
-        }
-        return hash;
-      };
-
-      ArrayWriter.prototype.reserve = function (size) {
-        size = (size + 3) & ~0x3;
-        this.ensureCapacity(this._offset + size);
-        this._offset += size;
-      };
-      return ArrayWriter;
-    })();
-    ArrayUtilities.ArrayWriter = ArrayWriter;
-  })(Shumway.ArrayUtilities || (Shumway.ArrayUtilities = {}));
-  var ArrayUtilities = Shumway.ArrayUtilities;
-
-  var ArrayReader = (function () {
-    function ArrayReader(buffer) {
-      this._u8 = new Uint8Array(buffer);
-      this._u16 = new Uint16Array(buffer);
-      this._i32 = new Int32Array(buffer);
-      this._f32 = new Float32Array(buffer);
+      f.prototype.hashWords = function(f, b, n) {
+        b = this._i32;
+        for (var h = 0;h < n;h++) {
+          f = (31 * f | 0) + b[h] | 0;
+        }
+        return f;
+      };
+      f.prototype.reserve = function(f) {
+        f = f + 3 & -4;
+        this.ensureCapacity(this._offset + f);
+        this._offset += f;
+      };
+      return f;
+    }();
+    b.ArrayWriter = n;
+  })(d.ArrayUtilities || (d.ArrayUtilities = {}));
+  var a = d.ArrayUtilities, c = function() {
+    function b(b) {
+      this._u8 = new Uint8Array(b);
+      this._u16 = new Uint16Array(b);
+      this._i32 = new Int32Array(b);
+      this._f32 = new Float32Array(b);
       this._offset = 0;
     }
-    Object.defineProperty(ArrayReader.prototype, "offset", {
-      get: function () {
-        return this._offset;
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-    ArrayReader.prototype.isEmpty = function () {
+    Object.defineProperty(b.prototype, "offset", {get:function() {
+      return this._offset;
+    }, enumerable:!0, configurable:!0});
+    b.prototype.isEmpty = function() {
       return this._offset === this._u8.length;
     };
-
-    ArrayReader.prototype.readInt = function () {
-      release || Debug.assert((this._offset & 0x3) === 0);
-      release || Debug.assert(this._offset <= this._u8.length - 4);
-      var v = this._i32[this._offset >> 2];
-      this._offset += 4;
-      return v;
-    };
-
-    ArrayReader.prototype.readFloat = function () {
-      release || Debug.assert((this._offset & 0x3) === 0);
-      release || Debug.assert(this._offset <= this._u8.length - 4);
-      var v = this._f32[this._offset >> 2];
+    b.prototype.readInt = function() {
+      k.assert(0 === (this._offset & 3));
+      k.assert(this._offset <= this._u8.length - 4);
+      var b = this._i32[this._offset >> 2];
       this._offset += 4;
-      return v;
-    };
-    return ArrayReader;
-  })();
-  Shumway.ArrayReader = ArrayReader;
-
-  (function (ObjectUtilities) {
-    function boxValue(value) {
-      if (isNullOrUndefined(value) || isObject(value)) {
-        return value;
-      }
-      return Object(value);
-    }
-    ObjectUtilities.boxValue = boxValue;
-
-    function toKeyValueArray(object) {
-      var hasOwnProperty = Object.prototype.hasOwnProperty;
-      var array = [];
-      for (var k in object) {
-        if (hasOwnProperty.call(object, k)) {
-          array.push([k, object[k]]);
-        }
-      }
-      return array;
-    }
-    ObjectUtilities.toKeyValueArray = toKeyValueArray;
-
-    function isPrototypeWriteable(object) {
-      return Object.getOwnPropertyDescriptor(object, "prototype").writable;
-    }
-    ObjectUtilities.isPrototypeWriteable = isPrototypeWriteable;
-
-    function hasOwnProperty(object, name) {
-      return Object.prototype.hasOwnProperty.call(object, name);
-    }
-    ObjectUtilities.hasOwnProperty = hasOwnProperty;
-
-    function propertyIsEnumerable(object, name) {
-      return Object.prototype.propertyIsEnumerable.call(object, name);
-    }
-    ObjectUtilities.propertyIsEnumerable = propertyIsEnumerable;
-
-    function getOwnPropertyDescriptor(object, name) {
-      return Object.getOwnPropertyDescriptor(object, name);
-    }
-    ObjectUtilities.getOwnPropertyDescriptor = getOwnPropertyDescriptor;
-
-    function hasOwnGetter(object, name) {
-      var d = Object.getOwnPropertyDescriptor(object, name);
-      return !!(d && d.get);
-    }
-    ObjectUtilities.hasOwnGetter = hasOwnGetter;
-
-    function getOwnGetter(object, name) {
-      var d = Object.getOwnPropertyDescriptor(object, name);
-      return d ? d.get : null;
-    }
-    ObjectUtilities.getOwnGetter = getOwnGetter;
-
-    function hasOwnSetter(object, name) {
-      var d = Object.getOwnPropertyDescriptor(object, name);
-      return !!(d && !!d.set);
-    }
-    ObjectUtilities.hasOwnSetter = hasOwnSetter;
-
-    function createObject(prototype) {
-      return Object.create(prototype);
-    }
-    ObjectUtilities.createObject = createObject;
-
-    function createEmptyObject() {
-      return Object.create(null);
-    }
-    ObjectUtilities.createEmptyObject = createEmptyObject;
-
-    function createMap() {
-      return Object.create(null);
-    }
-    ObjectUtilities.createMap = createMap;
-
-    function createArrayMap() {
-      return [];
-    }
-    ObjectUtilities.createArrayMap = createArrayMap;
-
-    function defineReadOnlyProperty(object, name, value) {
-      Object.defineProperty(object, name, {
-        value: value,
-        writable: false,
-        configurable: true,
-        enumerable: false
-      });
-    }
-    ObjectUtilities.defineReadOnlyProperty = defineReadOnlyProperty;
-
-    function getOwnPropertyDescriptors(object) {
-      var o = ObjectUtilities.createMap();
-      var properties = Object.getOwnPropertyNames(object);
-      for (var i = 0; i < properties.length; i++) {
-        o[properties[i]] = Object.getOwnPropertyDescriptor(object, properties[i]);
-      }
-      return o;
-    }
-    ObjectUtilities.getOwnPropertyDescriptors = getOwnPropertyDescriptors;
-
-    function cloneObject(object) {
-      var clone = Object.create(Object.getPrototypeOf(object));
-      copyOwnProperties(clone, object);
-      return clone;
+      return b;
+    };
+    b.prototype.readFloat = function() {
+      k.assert(0 === (this._offset & 3));
+      k.assert(this._offset <= this._u8.length - 4);
+      var b = this._f32[this._offset >> 2];
+      this._offset += 4;
+      return b;
+    };
+    return b;
+  }();
+  d.ArrayReader = c;
+  (function(b) {
+    function h(b, f) {
+      return Object.prototype.hasOwnProperty.call(b, f);
     }
-    ObjectUtilities.cloneObject = cloneObject;
-
-    function copyProperties(object, template) {
-      for (var property in template) {
-        object[property] = template[property];
-      }
-    }
-    ObjectUtilities.copyProperties = copyProperties;
-
-    function copyOwnProperties(object, template) {
-      for (var property in template) {
-        if (hasOwnProperty(template, property)) {
-          object[property] = template[property];
-        }
-      }
-    }
-    ObjectUtilities.copyOwnProperties = copyOwnProperties;
-
-    function copyOwnPropertyDescriptors(object, template, overwrite) {
-      if (typeof overwrite === "undefined") { overwrite = true; }
-      for (var property in template) {
-        if (hasOwnProperty(template, property)) {
-          var descriptor = Object.getOwnPropertyDescriptor(template, property);
-          if (!overwrite && hasOwnProperty(object, property)) {
-            continue;
-          }
-          release || Debug.assert(descriptor);
-          try  {
-            Object.defineProperty(object, property, descriptor);
-          } catch (e) {
-          }
-        }
-      }
-    }
-    ObjectUtilities.copyOwnPropertyDescriptors = copyOwnPropertyDescriptors;
-
-    function getLatestGetterOrSetterPropertyDescriptor(object, name) {
-      var descriptor = {};
-      while (object) {
-        var tmp = Object.getOwnPropertyDescriptor(object, name);
-        if (tmp) {
-          descriptor.get = descriptor.get || tmp.get;
-          descriptor.set = descriptor.set || tmp.set;
-        }
-        if (descriptor.get && descriptor.set) {
-          break;
-        }
-        object = Object.getPrototypeOf(object);
-      }
-      return descriptor;
-    }
-    ObjectUtilities.getLatestGetterOrSetterPropertyDescriptor = getLatestGetterOrSetterPropertyDescriptor;
-
-    function defineNonEnumerableGetterOrSetter(obj, name, value, isGetter) {
-      var descriptor = ObjectUtilities.getLatestGetterOrSetterPropertyDescriptor(obj, name);
-      descriptor.configurable = true;
-      descriptor.enumerable = false;
-      if (isGetter) {
-        descriptor.get = value;
-      } else {
-        descriptor.set = value;
-      }
-      Object.defineProperty(obj, name, descriptor);
-    }
-    ObjectUtilities.defineNonEnumerableGetterOrSetter = defineNonEnumerableGetterOrSetter;
-
-    function defineNonEnumerableGetter(obj, name, getter) {
-      Object.defineProperty(obj, name, {
-        get: getter,
-        configurable: true,
-        enumerable: false
-      });
-    }
-    ObjectUtilities.defineNonEnumerableGetter = defineNonEnumerableGetter;
-
-    function defineNonEnumerableSetter(obj, name, setter) {
-      Object.defineProperty(obj, name, {
-        set: setter,
-        configurable: true,
-        enumerable: false
-      });
-    }
-    ObjectUtilities.defineNonEnumerableSetter = defineNonEnumerableSetter;
-
-    function defineNonEnumerableProperty(obj, name, value) {
-      Object.defineProperty(obj, name, {
-        value: value,
-        writable: true,
-        configurable: true,
-        enumerable: false
-      });
-    }
-    ObjectUtilities.defineNonEnumerableProperty = defineNonEnumerableProperty;
-
-    function defineNonEnumerableForwardingProperty(obj, name, otherName) {
-      Object.defineProperty(obj, name, {
-        get: FunctionUtilities.makeForwardingGetter(otherName),
-        set: FunctionUtilities.makeForwardingSetter(otherName),
-        writable: true,
-        configurable: true,
-        enumerable: false
-      });
-    }
-    ObjectUtilities.defineNonEnumerableForwardingProperty = defineNonEnumerableForwardingProperty;
-
-    function defineNewNonEnumerableProperty(obj, name, value) {
-      release || Debug.assert(!Object.prototype.hasOwnProperty.call(obj, name), "Property: " + name + " already exits.");
-      ObjectUtilities.defineNonEnumerableProperty(obj, name, value);
-    }
-    ObjectUtilities.defineNewNonEnumerableProperty = defineNewNonEnumerableProperty;
-  })(Shumway.ObjectUtilities || (Shumway.ObjectUtilities = {}));
-  var ObjectUtilities = Shumway.ObjectUtilities;
-
-  (function (FunctionUtilities) {
-    function makeForwardingGetter(target) {
-      return new Function("return this[\"" + target + "\"]");
-    }
-    FunctionUtilities.makeForwardingGetter = makeForwardingGetter;
-
-    function makeForwardingSetter(target) {
-      return new Function("value", "this[\"" + target + "\"] = value;");
-    }
-    FunctionUtilities.makeForwardingSetter = makeForwardingSetter;
-
-    function bindSafely(fn, object) {
-      release || Debug.assert(!fn.boundTo && object);
-      var f = fn.bind(object);
-      f.boundTo = object;
-      return f;
-    }
-    FunctionUtilities.bindSafely = bindSafely;
-  })(Shumway.FunctionUtilities || (Shumway.FunctionUtilities = {}));
-  var FunctionUtilities = Shumway.FunctionUtilities;
-
-  (function (StringUtilities) {
-    var assert = Shumway.Debug.assert;
-
-    function memorySizeToString(value) {
-      value |= 0;
-      var K = 1024;
-      var M = K * K;
-      if (value < K) {
-        return value + " B";
-      } else if (value < M) {
-        return (value / K).toFixed(2) + "KB";
-      } else {
-        return (value / M).toFixed(2) + "MB";
+    function a(b, f) {
+      for (var q in f) {
+        h(f, q) && (b[q] = f[q]);
       }
     }
-    StringUtilities.memorySizeToString = memorySizeToString;
-
-    function toSafeString(value) {
-      if (typeof value === "string") {
-        return "\"" + value + "\"";
-      }
-      if (typeof value === "number" || typeof value === "boolean") {
-        return String(value);
-      }
-      return typeof value;
-    }
-    StringUtilities.toSafeString = toSafeString;
-
-    function toSafeArrayString(array) {
-      var str = [];
-      for (var i = 0; i < array.length; i++) {
-        str.push(toSafeString(array[i]));
-      }
-      return str.join(", ");
-    }
-    StringUtilities.toSafeArrayString = toSafeArrayString;
-
-    function utf8decode(str) {
-      var bytes = new Uint8Array(str.length * 4);
-      var b = 0;
-      for (var i = 0, j = str.length; i < j; i++) {
-        var code = str.charCodeAt(i);
-        if (code <= 0x7f) {
-          bytes[b++] = code;
-          continue;
-        }
-
-        if (0xD800 <= code && code <= 0xDBFF) {
-          var codeLow = str.charCodeAt(i + 1);
-          if (0xDC00 <= codeLow && codeLow <= 0xDFFF) {
-            code = ((code & 0x3FF) << 10) + (codeLow & 0x3FF) + 0x10000;
-            ++i;
-          }
-        }
-
-        if ((code & 0xFFE00000) !== 0) {
-          bytes[b++] = 0xF8 | ((code >>> 24) & 0x03);
-          bytes[b++] = 0x80 | ((code >>> 18) & 0x3F);
-          bytes[b++] = 0x80 | ((code >>> 12) & 0x3F);
-          bytes[b++] = 0x80 | ((code >>> 6) & 0x3F);
-          bytes[b++] = 0x80 | (code & 0x3F);
-        } else if ((code & 0xFFFF0000) !== 0) {
-          bytes[b++] = 0xF0 | ((code >>> 18) & 0x07);
-          bytes[b++] = 0x80 | ((code >>> 12) & 0x3F);
-          bytes[b++] = 0x80 | ((code >>> 6) & 0x3F);
-          bytes[b++] = 0x80 | (code & 0x3F);
-        } else if ((code & 0xFFFFF800) !== 0) {
-          bytes[b++] = 0xE0 | ((code >>> 12) & 0x0F);
-          bytes[b++] = 0x80 | ((code >>> 6) & 0x3F);
-          bytes[b++] = 0x80 | (code & 0x3F);
-        } else {
-          bytes[b++] = 0xC0 | ((code >>> 6) & 0x1F);
-          bytes[b++] = 0x80 | (code & 0x3F);
-        }
-      }
-      return bytes.subarray(0, b);
-    }
-    StringUtilities.utf8decode = utf8decode;
-
-    function utf8encode(bytes) {
-      var j = 0, str = "";
-      while (j < bytes.length) {
-        var b1 = bytes[j++] & 0xFF;
-        if (b1 <= 0x7F) {
-          str += String.fromCharCode(b1);
-        } else {
-          var currentPrefix = 0xC0;
-          var validBits = 5;
-          do {
-            var mask = (currentPrefix >> 1) | 0x80;
-            if ((b1 & mask) === currentPrefix)
-              break;
-            currentPrefix = (currentPrefix >> 1) | 0x80;
-            --validBits;
-          } while(validBits >= 0);
-
-          if (validBits <= 0) {
-            str += String.fromCharCode(b1);
-            continue;
-          }
-          var code = (b1 & ((1 << validBits) - 1));
-          var invalid = false;
-          for (var i = 5; i >= validBits; --i) {
-            var bi = bytes[j++];
-            if ((bi & 0xC0) != 0x80) {
-              invalid = true;
-              break;
-            }
-            code = (code << 6) | (bi & 0x3F);
-          }
-          if (invalid) {
-            for (var k = j - (7 - i); k < j; ++k) {
-              str += String.fromCharCode(bytes[k] & 255);
-            }
-            continue;
-          }
-          if (code >= 0x10000) {
-            str += String.fromCharCode((((code - 0x10000) >> 10) & 0x3FF) | 0xD800, (code & 0x3FF) | 0xDC00);
-          } else {
-            str += String.fromCharCode(code);
-          }
-        }
-      }
-      return str;
+    b.boxValue = function(b) {
+      return void 0 == b || s(b) ? b : Object(b);
+    };
+    b.toKeyValueArray = function(b) {
+      var f = Object.prototype.hasOwnProperty, h = [], a;
+      for (a in b) {
+        f.call(b, a) && h.push([a, b[a]]);
+      }
+      return h;
+    };
+    b.isPrototypeWriteable = function(b) {
+      return Object.getOwnPropertyDescriptor(b, "prototype").writable;
+    };
+    b.hasOwnProperty = h;
+    b.propertyIsEnumerable = function(b, f) {
+      return Object.prototype.propertyIsEnumerable.call(b, f);
+    };
+    b.getOwnPropertyDescriptor = function(b, f) {
+      return Object.getOwnPropertyDescriptor(b, f);
+    };
+    b.hasOwnGetter = function(b, f) {
+      var h = Object.getOwnPropertyDescriptor(b, f);
+      return!(!h || !h.get);
+    };
+    b.getOwnGetter = function(b, f) {
+      var h = Object.getOwnPropertyDescriptor(b, f);
+      return h ? h.get : null;
+    };
+    b.hasOwnSetter = function(b, f) {
+      var h = Object.getOwnPropertyDescriptor(b, f);
+      return!(!h || !h.set);
+    };
+    b.createObject = function(b) {
+      return Object.create(b);
+    };
+    b.createEmptyObject = function() {
+      return Object.create(null);
+    };
+    b.createMap = function() {
+      return Object.create(null);
+    };
+    b.createArrayMap = function() {
+      return[];
+    };
+    b.defineReadOnlyProperty = function(b, f, h) {
+      Object.defineProperty(b, f, {value:h, writable:!1, configurable:!0, enumerable:!1});
+    };
+    b.getOwnPropertyDescriptors = function(h) {
+      for (var f = b.createMap(), q = Object.getOwnPropertyNames(h), a = 0;a < q.length;a++) {
+        f[q[a]] = Object.getOwnPropertyDescriptor(h, q[a]);
+      }
+      return f;
+    };
+    b.cloneObject = function(b) {
+      var f = Object.create(Object.getPrototypeOf(b));
+      a(f, b);
+      return f;
+    };
+    b.copyProperties = function(b, f) {
+      for (var h in f) {
+        b[h] = f[h];
+      }
+    };
+    b.copyOwnProperties = a;
+    b.copyOwnPropertyDescriptors = function(b, f, q) {
+      "undefined" === typeof q && (q = !0);
+      for (var a in f) {
+        if (h(f, a)) {
+          var c = Object.getOwnPropertyDescriptor(f, a);
+          if (q || !h(b, a)) {
+            k.assert(c);
+            try {
+              Object.defineProperty(b, a, c);
+            } catch (g) {
+            }
+          }
+        }
+      }
+    };
+    b.getLatestGetterOrSetterPropertyDescriptor = function(b, f) {
+      for (var h = {};b;) {
+        var a = Object.getOwnPropertyDescriptor(b, f);
+        a && (h.get = h.get || a.get, h.set = h.set || a.set);
+        if (h.get && h.set) {
+          break;
+        }
+        b = Object.getPrototypeOf(b);
+      }
+      return h;
+    };
+    b.defineNonEnumerableGetterOrSetter = function(h, f, q, a) {
+      var c = b.getLatestGetterOrSetterPropertyDescriptor(h, f);
+      c.configurable = !0;
+      c.enumerable = !1;
+      a ? c.get = q : c.set = q;
+      Object.defineProperty(h, f, c);
+    };
+    b.defineNonEnumerableGetter = function(b, f, h) {
+      Object.defineProperty(b, f, {get:h, configurable:!0, enumerable:!1});
+    };
+    b.defineNonEnumerableSetter = function(b, f, h) {
+      Object.defineProperty(b, f, {set:h, configurable:!0, enumerable:!1});
+    };
+    b.defineNonEnumerableProperty = function(b, f, h) {
+      Object.defineProperty(b, f, {value:h, writable:!0, configurable:!0, enumerable:!1});
+    };
+    b.defineNonEnumerableForwardingProperty = function(b, f, h) {
+      Object.defineProperty(b, f, {get:g.makeForwardingGetter(h), set:g.makeForwardingSetter(h), writable:!0, configurable:!0, enumerable:!1});
+    };
+    b.defineNewNonEnumerableProperty = function(h, f, a) {
+      k.assert(!Object.prototype.hasOwnProperty.call(h, f), "Property: " + f + " already exits.");
+      b.defineNonEnumerableProperty(h, f, a);
+    };
+  })(d.ObjectUtilities || (d.ObjectUtilities = {}));
+  (function(b) {
+    b.makeForwardingGetter = function(b) {
+      return new Function('return this["' + b + '"]');
+    };
+    b.makeForwardingSetter = function(b) {
+      return new Function("value", 'this["' + b + '"] = value;');
+    };
+    b.bindSafely = function(b, a) {
+      k.assert(!b.boundTo && a);
+      var n = b.bind(a);
+      n.boundTo = a;
+      return n;
+    };
+  })(d.FunctionUtilities || (d.FunctionUtilities = {}));
+  var g = d.FunctionUtilities;
+  (function(b) {
+    function h(f) {
+      return "string" === typeof f ? '"' + f + '"' : "number" === typeof f || "boolean" === typeof f ? String(f) : f instanceof Array ? "[] " + f.length : typeof f;
     }
-    StringUtilities.utf8encode = utf8encode;
-
-    function base64ArrayBuffer(arrayBuffer) {
-      var base64 = '';
-      var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-
-      var bytes = new Uint8Array(arrayBuffer);
-      var byteLength = bytes.byteLength;
-      var byteRemainder = byteLength % 3;
-      var mainLength = byteLength - byteRemainder;
-
-      var a, b, c, d;
-      var chunk;
-
-      for (var i = 0; i < mainLength; i = i + 3) {
-        chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
-
-        a = (chunk & 16515072) >> 18;
-        b = (chunk & 258048) >> 12;
-        c = (chunk & 4032) >> 6;
-        d = chunk & 63;
-
-        base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];
-      }
-
-      if (byteRemainder == 1) {
-        chunk = bytes[mainLength];
-
-        a = (chunk & 252) >> 2;
-
-        b = (chunk & 3) << 4;
-
-        base64 += encodings[a] + encodings[b] + '==';
-      } else if (byteRemainder == 2) {
-        chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];
-
-        a = (chunk & 64512) >> 10;
-        b = (chunk & 1008) >> 4;
-
-        c = (chunk & 15) << 2;
-
-        base64 += encodings[a] + encodings[b] + encodings[c] + '=';
-      }
-      return base64;
-    }
-    StringUtilities.base64ArrayBuffer = base64ArrayBuffer;
-
-    function escapeString(str) {
-      if (str !== undefined) {
-        str = str.replace(/[^\w$]/gi, "$");
-        if (/^\d/.test(str)) {
-          str = '$' + str;
-        }
-      }
-      return str;
-    }
-    StringUtilities.escapeString = escapeString;
-
-    function fromCharCodeArray(buffer) {
-      var str = "", SLICE = 1024 * 16;
-      for (var i = 0; i < buffer.length; i += SLICE) {
-        var chunk = Math.min(buffer.length - i, SLICE);
-        str += String.fromCharCode.apply(null, buffer.subarray(i, i + chunk));
-      }
-      return str;
-    }
-    StringUtilities.fromCharCodeArray = fromCharCodeArray;
-
-    var _encoding = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_';
-    function variableLengthEncodeInt32(n) {
-      var e = _encoding;
-      var bitCount = (32 - Math.clz32(n));
-      release || assert(bitCount <= 32, bitCount);
-      var l = Math.ceil(bitCount / 6);
-
-      var s = e[l];
-      for (var i = l - 1; i >= 0; i--) {
-        var offset = (i * 6);
-        s += e[(n >> offset) & 0x3F];
-      }
-      release || assert(StringUtilities.variableLengthDecodeInt32(s) === n, n + " : " + s + " - " + l + " bits: " + bitCount);
-      return s;
-    }
-    StringUtilities.variableLengthEncodeInt32 = variableLengthEncodeInt32;
-
-    function toEncoding(n) {
-      return _encoding[n];
-    }
-    StringUtilities.toEncoding = toEncoding;
-
-    function fromEncoding(s) {
-      var c = s.charCodeAt(0);
-      var e = 0;
-      if (c >= 65 && c <= 90) {
-        return c - 65;
-      } else if (c >= 97 && c <= 122) {
-        return c - 71;
-      } else if (c >= 48 && c <= 57) {
-        return c + 4;
-      } else if (c === 36) {
+    var a = d.Debug.assert;
+    b.repeatString = function(f, b) {
+      for (var h = "", n = 0;n < b;n++) {
+        h += f;
+      }
+      return h;
+    };
+    b.memorySizeToString = function(f) {
+      f |= 0;
+      return 1024 > f ? f + " B" : 1048576 > f ? (f / 1024).toFixed(2) + "KB" : (f / 1048576).toFixed(2) + "MB";
+    };
+    b.toSafeString = h;
+    b.toSafeArrayString = function(f) {
+      for (var b = [], n = 0;n < f.length;n++) {
+        b.push(h(f[n]));
+      }
+      return b.join(", ");
+    };
+    b.utf8decode = function(f) {
+      for (var b = new Uint8Array(4 * f.length), h = 0, n = 0, a = f.length;n < a;n++) {
+        var q = f.charCodeAt(n);
+        if (127 >= q) {
+          b[h++] = q;
+        } else {
+          if (55296 <= q && 56319 >= q) {
+            var c = f.charCodeAt(n + 1);
+            56320 <= c && 57343 >= c && (q = ((q & 1023) << 10) + (c & 1023) + 65536, ++n);
+          }
+          0 !== (q & 4292870144) ? (b[h++] = 248 | q >>> 24 & 3, b[h++] = 128 | q >>> 18 & 63, b[h++] = 128 | q >>> 12 & 63, b[h++] = 128 | q >>> 6 & 63) : 0 !== (q & 4294901760) ? (b[h++] = 240 | q >>> 18 & 7, b[h++] = 128 | q >>> 12 & 63, b[h++] = 128 | q >>> 6 & 63) : 0 !== (q & 4294965248) ? (b[h++] = 224 | q >>> 12 & 15, b[h++] = 128 | q >>> 6 & 63) : b[h++] = 192 | q >>> 6 & 31;
+          b[h++] = 128 | q & 63;
+        }
+      }
+      return b.subarray(0, h);
+    };
+    b.utf8encode = function(f) {
+      for (var b = 0, h = "";b < f.length;) {
+        var n = f[b++] & 255;
+        if (127 >= n) {
+          h += String.fromCharCode(n);
+        } else {
+          var q = 192, a = 5;
+          do {
+            if ((n & (q >> 1 | 128)) === q) {
+              break;
+            }
+            q = q >> 1 | 128;
+            --a;
+          } while (0 <= a);
+          if (0 >= a) {
+            h += String.fromCharCode(n);
+          } else {
+            for (var n = n & (1 << a) - 1, q = !1, c = 5;c >= a;--c) {
+              var g = f[b++];
+              if (128 != (g & 192)) {
+                q = !0;
+                break;
+              }
+              n = n << 6 | g & 63;
+            }
+            if (q) {
+              for (a = b - (7 - c);a < b;++a) {
+                h += String.fromCharCode(f[a] & 255);
+              }
+            } else {
+              h = 65536 <= n ? h + String.fromCharCode(n - 65536 >> 10 & 1023 | 55296, n & 1023 | 56320) : h + String.fromCharCode(n);
+            }
+          }
+        }
+      }
+      return h;
+    };
+    b.base64ArrayBuffer = function(f) {
+      var b = "";
+      f = new Uint8Array(f);
+      for (var h = f.byteLength, n = h % 3, h = h - n, q, a, c, g, p = 0;p < h;p += 3) {
+        g = f[p] << 16 | f[p + 1] << 8 | f[p + 2], q = (g & 16515072) >> 18, a = (g & 258048) >> 12, c = (g & 4032) >> 6, g &= 63, b += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[q] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[a] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[g];
+      }
+      1 == n ? (g = f[h], b += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 252) >> 2] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 3) << 4] + "==") : 2 == n && (g = f[h] << 8 | f[h + 1], b += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 64512) >> 10] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 1008) >> 4] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 15) << 
+      2] + "=");
+      return b;
+    };
+    b.escapeString = function(f) {
+      void 0 !== f && (f = f.replace(/[^\w$]/gi, "$"), /^\d/.test(f) && (f = "$" + f));
+      return f;
+    };
+    b.fromCharCodeArray = function(f) {
+      for (var b = "", h = 0;h < f.length;h += 16384) {
+        var n = Math.min(f.length - h, 16384), b = b + String.fromCharCode.apply(null, f.subarray(h, h + n))
+      }
+      return b;
+    };
+    b.variableLengthEncodeInt32 = function(f) {
+      var h = 32 - Math.clz32(f);
+      a(32 >= h, h);
+      for (var n = Math.ceil(h / 6), q = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[n], c = n - 1;0 <= c;c--) {
+        q += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[f >> 6 * c & 63];
+      }
+      a(b.variableLengthDecodeInt32(q) === f, f + " : " + q + " - " + n + " bits: " + h);
+      return q;
+    };
+    b.toEncoding = function(f) {
+      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[f];
+    };
+    b.fromEncoding = function(f) {
+      f = f.charCodeAt(0);
+      if (65 <= f && 90 >= f) {
+        return f - 65;
+      }
+      if (97 <= f && 122 >= f) {
+        return f - 71;
+      }
+      if (48 <= f && 57 >= f) {
+        return f + 4;
+      }
+      if (36 === f) {
         return 62;
-      } else if (c === 95) {
+      }
+      if (95 === f) {
         return 63;
       }
-      release || assert(false, "Invalid Encoding");
-    }
-    StringUtilities.fromEncoding = fromEncoding;
-
-    function variableLengthDecodeInt32(s) {
-      var l = StringUtilities.fromEncoding(s[0]);
-      var n = 0;
-      for (var i = 0; i < l; i++) {
-        var offset = ((l - i - 1) * 6);
-        n |= StringUtilities.fromEncoding(s[1 + i]) << offset;
+      a(!1, "Invalid Encoding");
+    };
+    b.variableLengthDecodeInt32 = function(f) {
+      for (var h = b.fromEncoding(f[0]), n = 0, q = 0;q < h;q++) {
+        var a = 6 * (h - q - 1), n = n | b.fromEncoding(f[1 + q]) << a
       }
       return n;
-    }
-    StringUtilities.variableLengthDecodeInt32 = variableLengthDecodeInt32;
-
-    function trimMiddle(s, maxLength) {
-      if (s.length <= maxLength) {
-        return s;
-      }
-      var leftHalf = maxLength >> 1;
-      var rightHalf = maxLength - leftHalf - 1;
-      return s.substr(0, leftHalf) + "\u2026" + s.substr(s.length - rightHalf, rightHalf);
-    }
-    StringUtilities.trimMiddle = trimMiddle;
-
-    function multiple(s, count) {
-      var o = "";
-      for (var i = 0; i < count; i++) {
-        o += s;
-      }
-      return o;
-    }
-    StringUtilities.multiple = multiple;
-
-    function indexOfAny(s, chars, position) {
-      var index = s.length;
-      for (var i = 0; i < chars.length; i++) {
-        var j = s.indexOf(chars[i], position);
-        if (j >= 0) {
-          index = Math.min(index, j);
-        }
-      }
-      return index === s.length ? -1 : index;
-    }
-    StringUtilities.indexOfAny = indexOfAny;
-
-    var _concat3array = new Array(3);
-    var _concat4array = new Array(4);
-    var _concat5array = new Array(5);
-    var _concat6array = new Array(6);
-    var _concat7array = new Array(7);
-    var _concat8array = new Array(8);
-    var _concat9array = new Array(9);
-
-    function concat3(s0, s1, s2) {
-      _concat3array[0] = s0;
-      _concat3array[1] = s1;
-      _concat3array[2] = s2;
-      return _concat3array.join('');
-    }
-    StringUtilities.concat3 = concat3;
-
-    function concat4(s0, s1, s2, s3) {
-      _concat4array[0] = s0;
-      _concat4array[1] = s1;
-      _concat4array[2] = s2;
-      _concat4array[3] = s3;
-      return _concat4array.join('');
-    }
-    StringUtilities.concat4 = concat4;
-
-    function concat5(s0, s1, s2, s3, s4) {
-      _concat5array[0] = s0;
-      _concat5array[1] = s1;
-      _concat5array[2] = s2;
-      _concat5array[3] = s3;
-      _concat5array[4] = s4;
-      return _concat5array.join('');
-    }
-    StringUtilities.concat5 = concat5;
-
-    function concat6(s0, s1, s2, s3, s4, s5) {
-      _concat6array[0] = s0;
-      _concat6array[1] = s1;
-      _concat6array[2] = s2;
-      _concat6array[3] = s3;
-      _concat6array[4] = s4;
-      _concat6array[5] = s5;
-      return _concat6array.join('');
-    }
-    StringUtilities.concat6 = concat6;
-
-    function concat7(s0, s1, s2, s3, s4, s5, s6) {
-      _concat7array[0] = s0;
-      _concat7array[1] = s1;
-      _concat7array[2] = s2;
-      _concat7array[3] = s3;
-      _concat7array[4] = s4;
-      _concat7array[5] = s5;
-      _concat7array[6] = s6;
-      return _concat7array.join('');
-    }
-    StringUtilities.concat7 = concat7;
-
-    function concat8(s0, s1, s2, s3, s4, s5, s6, s7) {
-      _concat8array[0] = s0;
-      _concat8array[1] = s1;
-      _concat8array[2] = s2;
-      _concat8array[3] = s3;
-      _concat8array[4] = s4;
-      _concat8array[5] = s5;
-      _concat8array[6] = s6;
-      _concat8array[7] = s7;
-      return _concat8array.join('');
-    }
-    StringUtilities.concat8 = concat8;
-
-    function concat9(s0, s1, s2, s3, s4, s5, s6, s7, s8) {
-      _concat9array[0] = s0;
-      _concat9array[1] = s1;
-      _concat9array[2] = s2;
-      _concat9array[3] = s3;
-      _concat9array[4] = s4;
-      _concat9array[5] = s5;
-      _concat9array[6] = s6;
-      _concat9array[7] = s7;
-      _concat9array[8] = s8;
-      return _concat9array.join('');
+    };
+    b.trimMiddle = function(f, b) {
+      if (f.length <= b) {
+        return f;
+      }
+      var h = b >> 1, n = b - h - 1;
+      return f.substr(0, h) + "\u2026" + f.substr(f.length - n, n);
+    };
+    b.multiple = function(f, b) {
+      for (var h = "", n = 0;n < b;n++) {
+        h += f;
+      }
+      return h;
+    };
+    b.indexOfAny = function(f, b, h) {
+      for (var n = f.length, q = 0;q < b.length;q++) {
+        var a = f.indexOf(b[q], h);
+        0 <= a && (n = Math.min(n, a));
+      }
+      return n === f.length ? -1 : n;
+    };
+    var n = Array(3), f = Array(4), q = Array(5), c = Array(6), g = Array(7), p = Array(8), r = Array(9);
+    b.concat3 = function(f, b, h) {
+      n[0] = f;
+      n[1] = b;
+      n[2] = h;
+      return n.join("");
+    };
+    b.concat4 = function(b, h, n, q) {
+      f[0] = b;
+      f[1] = h;
+      f[2] = n;
+      f[3] = q;
+      return f.join("");
+    };
+    b.concat5 = function(f, b, h, n, a) {
+      q[0] = f;
+      q[1] = b;
+      q[2] = h;
+      q[3] = n;
+      q[4] = a;
+      return q.join("");
+    };
+    b.concat6 = function(f, b, h, n, q, a) {
+      c[0] = f;
+      c[1] = b;
+      c[2] = h;
+      c[3] = n;
+      c[4] = q;
+      c[5] = a;
+      return c.join("");
+    };
+    b.concat7 = function(f, b, h, n, q, a, c) {
+      g[0] = f;
+      g[1] = b;
+      g[2] = h;
+      g[3] = n;
+      g[4] = q;
+      g[5] = a;
+      g[6] = c;
+      return g.join("");
+    };
+    b.concat8 = function(f, b, h, n, q, a, c, g) {
+      p[0] = f;
+      p[1] = b;
+      p[2] = h;
+      p[3] = n;
+      p[4] = q;
+      p[5] = a;
+      p[6] = c;
+      p[7] = g;
+      return p.join("");
+    };
+    b.concat9 = function(f, b, h, n, q, a, c, g, p) {
+      r[0] = f;
+      r[1] = b;
+      r[2] = h;
+      r[3] = n;
+      r[4] = q;
+      r[5] = a;
+      r[6] = c;
+      r[7] = g;
+      r[8] = p;
+      return r.join("");
+    };
+  })(d.StringUtilities || (d.StringUtilities = {}));
+  (function(b) {
+    var h = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]), a = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 
+    643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, 
+    -145523070, -1120210379, 718787259, -343485551]);
+    b.hashBytesTo32BitsMD5 = function(b, f, q) {
+      var c = 1732584193, g = -271733879, p = -1732584194, r = 271733878, l = q + 72 & -64, k = new Uint8Array(l), v;
+      for (v = 0;v < q;++v) {
+        k[v] = b[f++];
+      }
+      k[v++] = 128;
+      for (b = l - 8;v < b;) {
+        k[v++] = 0;
+      }
+      k[v++] = q << 3 & 255;
+      k[v++] = q >> 5 & 255;
+      k[v++] = q >> 13 & 255;
+      k[v++] = q >> 21 & 255;
+      k[v++] = q >>> 29 & 255;
+      k[v++] = 0;
+      k[v++] = 0;
+      k[v++] = 0;
+      b = new Int32Array(16);
+      for (v = 0;v < l;) {
+        for (q = 0;16 > q;++q, v += 4) {
+          b[q] = k[v] | k[v + 1] << 8 | k[v + 2] << 16 | k[v + 3] << 24;
+        }
+        var e = c;
+        f = g;
+        var u = p, d = r, t, m;
+        for (q = 0;64 > q;++q) {
+          16 > q ? (t = f & u | ~f & d, m = q) : 32 > q ? (t = d & f | ~d & u, m = 5 * q + 1 & 15) : 48 > q ? (t = f ^ u ^ d, m = 3 * q + 5 & 15) : (t = u ^ (f | ~d), m = 7 * q & 15);
+          var s = d, e = e + t + a[q] + b[m] | 0;
+          t = h[q];
+          d = u;
+          u = f;
+          f = f + (e << t | e >>> 32 - t) | 0;
+          e = s;
+        }
+        c = c + e | 0;
+        g = g + f | 0;
+        p = p + u | 0;
+        r = r + d | 0;
+      }
+      return c;
+    };
+    b.hashBytesTo32BitsAdler = function(b, f, h) {
+      var a = 1, c = 0;
+      for (h = f + h;f < h;++f) {
+        a = (a + (b[f] & 255)) % 65521, c = (c + a) % 65521;
+      }
+      return c << 16 | a;
+    };
+  })(d.HashUtilities || (d.HashUtilities = {}));
+  var p = function() {
+    function b() {
     }
-    StringUtilities.concat9 = concat9;
-  })(Shumway.StringUtilities || (Shumway.StringUtilities = {}));
-  var StringUtilities = Shumway.StringUtilities;
-
-  (function (HashUtilities) {
-    var _md5R = new Uint8Array([
-      7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
-      5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,
-      4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
-      6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);
-
-    var _md5K = new Int32Array([
-      -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,
-      -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,
-      1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,
-      643717713, -373897302, -701558691, 38016083, -660478335, -405537848,
-      568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,
-      1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,
-      -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,
-      -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,
-      -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,
-      -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,
-      -145523070, -1120210379, 718787259, -343485551]);
-
-    function hashBytesTo32BitsMD5(data, offset, length) {
-      var r = _md5R;
-      var k = _md5K;
-      var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878;
-
-      var paddedLength = (length + 72) & ~63;
-      var padded = new Uint8Array(paddedLength);
-      var i, j, n;
-      for (i = 0; i < length; ++i) {
-        padded[i] = data[offset++];
-      }
-      padded[i++] = 0x80;
-      n = paddedLength - 8;
-      while (i < n) {
-        padded[i++] = 0;
-      }
-      padded[i++] = (length << 3) & 0xFF;
-      padded[i++] = (length >> 5) & 0xFF;
-      padded[i++] = (length >> 13) & 0xFF;
-      padded[i++] = (length >> 21) & 0xFF;
-      padded[i++] = (length >>> 29) & 0xFF;
-      padded[i++] = 0;
-      padded[i++] = 0;
-      padded[i++] = 0;
-
-      var w = new Int32Array(16);
-      for (i = 0; i < paddedLength;) {
-        for (j = 0; j < 16; ++j, i += 4) {
-          w[j] = (padded[i] | (padded[i + 1] << 8) | (padded[i + 2] << 16) | (padded[i + 3] << 24));
-        }
-        var a = h0, b = h1, c = h2, d = h3, f, g;
-        for (j = 0; j < 64; ++j) {
-          if (j < 16) {
-            f = (b & c) | ((~b) & d);
-            g = j;
-          } else if (j < 32) {
-            f = (d & b) | ((~d) & c);
-            g = (5 * j + 1) & 15;
-          } else if (j < 48) {
-            f = b ^ c ^ d;
-            g = (3 * j + 5) & 15;
-          } else {
-            f = c ^ (b | (~d));
-            g = (7 * j) & 15;
-          }
-          var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j];
-          d = c;
-          c = b;
-          b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;
-          a = tmp;
-        }
-        h0 = (h0 + a) | 0;
-        h1 = (h1 + b) | 0;
-        h2 = (h2 + c) | 0;
-        h3 = (h3 + d) | 0;
-      }
-      return h0;
+    b.seed = function(h) {
+      b._state[0] = h;
+      b._state[1] = h;
+    };
+    b.next = function() {
+      var b = this._state, a = Math.imul(18273, b[0] & 65535) + (b[0] >>> 16) | 0;
+      b[0] = a;
+      var n = Math.imul(36969, b[1] & 65535) + (b[1] >>> 16) | 0;
+      b[1] = n;
+      b = (a << 16) + (n & 65535) | 0;
+      return 2.3283064365386963E-10 * (0 > b ? b + 4294967296 : b);
+    };
+    b._state = new Uint32Array([57005, 48879]);
+    return b;
+  }();
+  d.Random = p;
+  Math.random = function() {
+    return p.next();
+  };
+  (function() {
+    function b() {
+      this.id = "$weakmap" + h++;
     }
-    HashUtilities.hashBytesTo32BitsMD5 = hashBytesTo32BitsMD5;
-
-    function hashBytesTo32BitsAdler(data, offset, length) {
-      var a = 1;
-      var b = 0;
-      var end = offset + length;
-      for (var i = offset; i < end; ++i) {
-        a = (a + (data[i] & 0xff)) % 65521;
-        b = (b + a) % 65521;
-      }
-      return (b << 16) | a;
+    if ("function" !== typeof jsGlobal.WeakMap) {
+      var h = 0;
+      b.prototype = {has:function(b) {
+        return b.hasOwnProperty(this.id);
+      }, get:function(b, h) {
+        return b.hasOwnProperty(this.id) ? b[this.id] : h;
+      }, set:function(b, h) {
+        Object.defineProperty(b, this.id, {value:h, enumerable:!1, configurable:!0});
+      }};
+      jsGlobal.WeakMap = b;
     }
-    HashUtilities.hashBytesTo32BitsAdler = hashBytesTo32BitsAdler;
-  })(Shumway.HashUtilities || (Shumway.HashUtilities = {}));
-  var HashUtilities = Shumway.HashUtilities;
-
-  var Random = (function () {
-    function Random() {
-    }
-    Random.seed = function (seed) {
-      Random._state[0] = seed;
-      Random._state[1] = seed;
-    };
-
-    Random.next = function () {
-      var s = this._state;
-      var r0 = (Math.imul(18273, s[0] & 0xFFFF) + (s[0] >>> 16)) | 0;
-      s[0] = r0;
-      var r1 = (Math.imul(36969, s[1] & 0xFFFF) + (s[1] >>> 16)) | 0;
-      s[1] = r1;
-      var x = ((r0 << 16) + (r1 & 0xFFFF)) | 0;
-
-      return (x < 0 ? (x + 0x100000000) : x) * 2.3283064365386962890625e-10;
-    };
-    Random._state = new Uint32Array([0xDEAD, 0xBEEF]);
-    return Random;
   })();
-  Shumway.Random = Random;
-
-  Math.random = function random() {
-    return Random.next();
-  };
-
-  function polyfillWeakMap() {
-    if (typeof jsGlobal.WeakMap === 'function') {
-      return;
-    }
-    var id = 0;
-    function WeakMap() {
-      this.id = '$weakmap' + (id++);
+  c = function() {
+    function b() {
+      "undefined" !== typeof netscape && netscape.security.PrivilegeManager ? this._map = new WeakMap : this._list = [];
     }
-    ;
-    WeakMap.prototype = {
-      has: function (obj) {
-        return obj.hasOwnProperty(this.id);
-      },
-      get: function (obj, defaultValue) {
-        return obj.hasOwnProperty(this.id) ? obj[this.id] : defaultValue;
-      },
-      set: function (obj, value) {
-        Object.defineProperty(obj, this.id, {
-          value: value,
-          enumerable: false,
-          configurable: true
+    b.prototype.clear = function() {
+      this._map ? this._map.clear() : this._list.length = 0;
+    };
+    b.prototype.push = function(b) {
+      this._map ? this._map.set(b, null) : this._list.push(b);
+    };
+    b.prototype.forEach = function(b) {
+      if (this._map) {
+        "undefined" !== typeof netscape && netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"), Components.utils.nondeterministicGetWeakMapKeys(this._map).forEach(function(f) {
+          0 !== f._referenceCount && b(f);
         });
-      }
-    };
-    jsGlobal.WeakMap = WeakMap;
-  }
-
-  polyfillWeakMap();
-
-  var useReferenceCounting = true;
-
-  var WeakList = (function () {
-    function WeakList() {
-      if (typeof netscape !== "undefined" && netscape.security.PrivilegeManager) {
-        this._map = new WeakMap();
-      } else {
-        this._list = [];
-      }
-    }
-    WeakList.prototype.clear = function () {
-      if (this._map) {
-        this._map.clear();
-      } else {
-        this._list.length = 0;
-      }
-    };
-    WeakList.prototype.push = function (value) {
-      if (this._map) {
-        this._map.set(value, null);
       } else {
-        this._list.push(value);
-      }
-    };
-    WeakList.prototype.forEach = function (callback) {
-      if (this._map) {
-        if (typeof netscape !== "undefined") {
-          netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-        }
-        Components.utils.nondeterministicGetWeakMapKeys(this._map).forEach(function (value) {
-          if (value._referenceCount !== 0) {
-            callback(value);
-          }
-        });
-        return;
-      }
-      var list = this._list;
-      var zeroCount = 0;
-      for (var i = 0; i < list.length; i++) {
-        var value = list[i];
-        if (useReferenceCounting && value._referenceCount === 0) {
-          zeroCount++;
-        } else {
-          callback(value);
-        }
-      }
-      if (zeroCount > 16 && zeroCount > (list.length >> 2)) {
-        var newList = [];
-        for (var i = 0; i < list.length; i++) {
-          if (list[i]._referenceCount > 0) {
-            newList.push(list[i]);
-          }
-        }
-        this._list = newList;
-      }
-    };
-    Object.defineProperty(WeakList.prototype, "length", {
-      get: function () {
-        if (this._map) {
-          return -1;
-        } else {
-          return this._list.length;
-        }
-      },
-      enumerable: true,
-      configurable: true
-    });
-    return WeakList;
-  })();
-  Shumway.WeakList = WeakList;
-
-  (function (NumberUtilities) {
-    function pow2(exponent) {
-      if (exponent === (exponent | 0)) {
-        if (exponent < 0) {
-          return 1 / (1 << -exponent);
-        }
-        return 1 << exponent;
-      }
-      return Math.pow(2, exponent);
-    }
-    NumberUtilities.pow2 = pow2;
-
-    function clamp(value, min, max) {
-      return Math.max(min, Math.min(max, value));
-    }
-    NumberUtilities.clamp = clamp;
-
-    function roundHalfEven(value) {
-      if (Math.abs(value % 1) === 0.5) {
-        var floor = Math.floor(value);
-        return floor % 2 === 0 ? floor : Math.ceil(value);
-      }
-      return Math.round(value);
-    }
-    NumberUtilities.roundHalfEven = roundHalfEven;
-
-    function epsilonEquals(value, other) {
-      return Math.abs(value - other) < 0.0000001;
-    }
-    NumberUtilities.epsilonEquals = epsilonEquals;
-  })(Shumway.NumberUtilities || (Shumway.NumberUtilities = {}));
-  var NumberUtilities = Shumway.NumberUtilities;
-
-  (function (Numbers) {
-    Numbers[Numbers["MaxU16"] = 0xFFFF] = "MaxU16";
-    Numbers[Numbers["MaxI16"] = 0x7FFF] = "MaxI16";
-    Numbers[Numbers["MinI16"] = -0x8000] = "MinI16";
-  })(Shumway.Numbers || (Shumway.Numbers = {}));
-  var Numbers = Shumway.Numbers;
-
-  (function (IntegerUtilities) {
-    var sharedBuffer = new ArrayBuffer(8);
-    var i8 = new Int8Array(sharedBuffer);
-    var i32 = new Int32Array(sharedBuffer);
-    var f32 = new Float32Array(sharedBuffer);
-    var f64 = new Float64Array(sharedBuffer);
-    var nativeLittleEndian = new Int8Array(new Int32Array([1]).buffer)[0] === 1;
-
-    function floatToInt32(v) {
-      f32[0] = v;
-      return i32[0];
-    }
-    IntegerUtilities.floatToInt32 = floatToInt32;
-
-    function int32ToFloat(i) {
-      i32[0] = i;
-      return f32[0];
-    }
-    IntegerUtilities.int32ToFloat = int32ToFloat;
-
-    function swap16(i) {
-      return ((i & 0xFF) << 8) | ((i >> 8) & 0xFF);
-    }
-    IntegerUtilities.swap16 = swap16;
-
-    function swap32(i) {
-      return ((i & 0xFF) << 24) | ((i & 0xFF00) << 8) | ((i >> 8) & 0xFF00) | ((i >> 24) & 0xFF);
-    }
-    IntegerUtilities.swap32 = swap32;
-
-    function toS8U8(v) {
-      return ((v * 256) << 16) >> 16;
-    }
-    IntegerUtilities.toS8U8 = toS8U8;
-
-    function fromS8U8(i) {
-      return i / 256;
-    }
-    IntegerUtilities.fromS8U8 = fromS8U8;
-
-    function clampS8U8(v) {
-      return fromS8U8(toS8U8(v));
-    }
-    IntegerUtilities.clampS8U8 = clampS8U8;
-
-    function toS16(v) {
-      return (v << 16) >> 16;
-    }
-    IntegerUtilities.toS16 = toS16;
-
-    function bitCount(i) {
-      i = i - ((i >> 1) & 0x55555555);
-      i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
-      return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
+        for (var a = this._list, n = 0, f = 0;f < a.length;f++) {
+          var q = a[f];
+          0 === q._referenceCount ? n++ : b(q);
+        }
+        if (16 < n && n > a.length >> 2) {
+          n = [];
+          for (f = 0;f < a.length;f++) {
+            0 < a[f]._referenceCount && n.push(a[f]);
+          }
+          this._list = n;
+        }
+      }
+    };
+    Object.defineProperty(b.prototype, "length", {get:function() {
+      return this._map ? -1 : this._list.length;
+    }, enumerable:!0, configurable:!0});
+    return b;
+  }();
+  d.WeakList = c;
+  (function(b) {
+    b.pow2 = function(b) {
+      return b === (b | 0) ? 0 > b ? 1 / (1 << -b) : 1 << b : Math.pow(2, b);
+    };
+    b.clamp = function(b, a, n) {
+      return Math.max(a, Math.min(n, b));
+    };
+    b.roundHalfEven = function(b) {
+      if (.5 === Math.abs(b % 1)) {
+        var a = Math.floor(b);
+        return 0 === a % 2 ? a : Math.ceil(b);
+      }
+      return Math.round(b);
+    };
+    b.epsilonEquals = function(b, a) {
+      return 1E-7 > Math.abs(b - a);
+    };
+  })(d.NumberUtilities || (d.NumberUtilities = {}));
+  (function(b) {
+    b[b.MaxU16 = 65535] = "MaxU16";
+    b[b.MaxI16 = 32767] = "MaxI16";
+    b[b.MinI16 = -32768] = "MinI16";
+  })(d.Numbers || (d.Numbers = {}));
+  (function(b) {
+    function h(b) {
+      return 256 * b << 16 >> 16;
     }
-    IntegerUtilities.bitCount = bitCount;
-
-    function ones(i) {
-      i = i - ((i >> 1) & 0x55555555);
-      i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
-      return ((i + (i >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
-    }
-    IntegerUtilities.ones = ones;
-
-    function trailingZeros(i) {
-      return IntegerUtilities.ones((i & -i) - 1);
-    }
-    IntegerUtilities.trailingZeros = trailingZeros;
-
-    function getFlags(i, flags) {
-      var str = "";
-      for (var i = 0; i < flags.length; i++) {
-        if (i & (1 << i)) {
-          str += flags[i] + " ";
-        }
-      }
-      if (str.length === 0) {
-        return "";
-      }
-      return str.trim();
-    }
-    IntegerUtilities.getFlags = getFlags;
-
-    function isPowerOfTwo(x) {
-      return x && ((x & (x - 1)) === 0);
-    }
-    IntegerUtilities.isPowerOfTwo = isPowerOfTwo;
-
-    function roundToMultipleOfFour(x) {
-      return (x + 3) & ~0x3;
-    }
-    IntegerUtilities.roundToMultipleOfFour = roundToMultipleOfFour;
-
-    function nearestPowerOfTwo(x) {
-      x--;
-      x |= x >> 1;
-      x |= x >> 2;
-      x |= x >> 4;
-      x |= x >> 8;
-      x |= x >> 16;
-      x++;
-      return x;
-    }
-    IntegerUtilities.nearestPowerOfTwo = nearestPowerOfTwo;
-
-    function roundToMultipleOfPowerOfTwo(i, powerOfTwo) {
-      var x = (1 << powerOfTwo) - 1;
-      return (i + x) & ~x;
-    }
-    IntegerUtilities.roundToMultipleOfPowerOfTwo = roundToMultipleOfPowerOfTwo;
-
-    if (!Math.imul) {
-      Math.imul = function imul(a, b) {
-        var ah = (a >>> 16) & 0xffff;
-        var al = a & 0xffff;
-        var bh = (b >>> 16) & 0xffff;
-        var bl = b & 0xffff;
-
-        return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);
-      };
-    }
-
-    if (!Math.clz32) {
-      Math.clz32 = function clz32(i) {
-        i |= (i >> 1);
-        i |= (i >> 2);
-        i |= (i >> 4);
-        i |= (i >> 8);
-        i |= (i >> 16);
-        return 32 - IntegerUtilities.ones(i);
-      };
+    var a = new ArrayBuffer(8);
+    b.i8 = new Int8Array(a);
+    b.u8 = new Uint8Array(a);
+    b.i32 = new Int32Array(a);
+    b.f32 = new Float32Array(a);
+    b.f64 = new Float64Array(a);
+    b.nativeLittleEndian = 1 === (new Int8Array((new Int32Array([1])).buffer))[0];
+    b.floatToInt32 = function(h) {
+      b.f32[0] = h;
+      return b.i32[0];
+    };
+    b.int32ToFloat = function(h) {
+      b.i32[0] = h;
+      return b.f32[0];
+    };
+    b.swap16 = function(b) {
+      return(b & 255) << 8 | b >> 8 & 255;
+    };
+    b.swap32 = function(b) {
+      return(b & 255) << 24 | (b & 65280) << 8 | b >> 8 & 65280 | b >> 24 & 255;
+    };
+    b.toS8U8 = h;
+    b.fromS8U8 = function(b) {
+      return b / 256;
+    };
+    b.clampS8U8 = function(b) {
+      return h(b) / 256;
+    };
+    b.toS16 = function(b) {
+      return b << 16 >> 16;
+    };
+    b.bitCount = function(b) {
+      b -= b >> 1 & 1431655765;
+      b = (b & 858993459) + (b >> 2 & 858993459);
+      return 16843009 * (b + (b >> 4) & 252645135) >> 24;
+    };
+    b.ones = function(b) {
+      b -= b >> 1 & 1431655765;
+      b = (b & 858993459) + (b >> 2 & 858993459);
+      return 16843009 * (b + (b >> 4) & 252645135) >> 24;
+    };
+    b.trailingZeros = function(h) {
+      return b.ones((h & -h) - 1);
+    };
+    b.getFlags = function(b, f) {
+      var h = "";
+      for (b = 0;b < f.length;b++) {
+        b & 1 << b && (h += f[b] + " ");
+      }
+      return 0 === h.length ? "" : h.trim();
+    };
+    b.isPowerOfTwo = function(b) {
+      return b && 0 === (b & b - 1);
+    };
+    b.roundToMultipleOfFour = function(b) {
+      return b + 3 & -4;
+    };
+    b.nearestPowerOfTwo = function(b) {
+      b--;
+      b |= b >> 1;
+      b |= b >> 2;
+      b |= b >> 4;
+      b |= b >> 8;
+      b |= b >> 16;
+      b++;
+      return b;
+    };
+    b.roundToMultipleOfPowerOfTwo = function(b, f) {
+      var h = (1 << f) - 1;
+      return b + h & ~h;
+    };
+    Math.imul || (Math.imul = function(b, f) {
+      var h = b & 65535, a = f & 65535;
+      return h * a + ((b >>> 16 & 65535) * a + h * (f >>> 16 & 65535) << 16 >>> 0) | 0;
+    });
+    Math.clz32 || (Math.clz32 = function(h) {
+      h |= h >> 1;
+      h |= h >> 2;
+      h |= h >> 4;
+      h |= h >> 8;
+      return 32 - b.ones(h | h >> 16);
+    });
+  })(d.IntegerUtilities || (d.IntegerUtilities = {}));
+  var v = d.IntegerUtilities;
+  (function(b) {
+    function h(b, h, f, a, c, g) {
+      return(f - b) * (g - h) - (a - h) * (c - b);
     }
-  })(Shumway.IntegerUtilities || (Shumway.IntegerUtilities = {}));
-  var IntegerUtilities = Shumway.IntegerUtilities;
-
-  (function (GeometricUtilities) {
-    function pointInPolygon(x, y, polygon) {
-      var crosses = 0;
-      var n = polygon.length - 2;
-      var p = polygon;
-
-      for (var i = 0; i < n; i += 2) {
-        var x0 = p[i + 0];
-        var y0 = p[i + 1];
-        var x1 = p[i + 2];
-        var y1 = p[i + 3];
-        if (((y0 <= y) && (y1 > y)) || ((y0 > y) && (y1 <= y))) {
-          var t = (y - y0) / (y1 - y0);
-          if (x < x0 + t * (x1 - x0)) {
-            crosses++;
-          }
-        }
-      }
-      return (crosses & 1) === 1;
-    }
-    GeometricUtilities.pointInPolygon = pointInPolygon;
-
-    function signedArea(x0, y0, x1, y1, x2, y2) {
-      return (x1 - x0) * (y2 - y0) - (y1 - y0) * (x2 - x0);
-    }
-    GeometricUtilities.signedArea = signedArea;
-
-    function counterClockwise(x0, y0, x1, y1, x2, y2) {
-      return signedArea(x0, y0, x1, y1, x2, y2) > 0;
-    }
-    GeometricUtilities.counterClockwise = counterClockwise;
-
-    function clockwise(x0, y0, x1, y1, x2, y2) {
-      return signedArea(x0, y0, x1, y1, x2, y2) < 0;
-    }
-    GeometricUtilities.clockwise = clockwise;
-
-    function pointInPolygonInt32(x, y, polygon) {
-      x = x | 0;
-      y = y | 0;
-      var crosses = 0;
-      var n = polygon.length - 2;
-      var p = polygon;
-
-      for (var i = 0; i < n; i += 2) {
-        var x0 = p[i + 0];
-        var y0 = p[i + 1];
-        var x1 = p[i + 2];
-        var y1 = p[i + 3];
-        if (((y0 <= y) && (y1 > y)) || ((y0 > y) && (y1 <= y))) {
-          var t = (y - y0) / (y1 - y0);
-          if (x < x0 + t * (x1 - x0)) {
-            crosses++;
-          }
-        }
-      }
-      return (crosses & 1) === 1;
-    }
-    GeometricUtilities.pointInPolygonInt32 = pointInPolygonInt32;
-  })(Shumway.GeometricUtilities || (Shumway.GeometricUtilities = {}));
-  var GeometricUtilities = Shumway.GeometricUtilities;
-
-  (function (LogLevel) {
-    LogLevel[LogLevel["Error"] = 0x1] = "Error";
-    LogLevel[LogLevel["Warn"] = 0x2] = "Warn";
-    LogLevel[LogLevel["Debug"] = 0x4] = "Debug";
-    LogLevel[LogLevel["Log"] = 0x8] = "Log";
-    LogLevel[LogLevel["Info"] = 0x10] = "Info";
-    LogLevel[LogLevel["All"] = 0x1f] = "All";
-  })(Shumway.LogLevel || (Shumway.LogLevel = {}));
-  var LogLevel = Shumway.LogLevel;
-
-  var IndentingWriter = (function () {
-    function IndentingWriter(suppressOutput, out) {
-      if (typeof suppressOutput === "undefined") { suppressOutput = false; }
+    b.pointInPolygon = function(b, h, f) {
+      for (var a = 0, c = f.length - 2, g = 0;g < c;g += 2) {
+        var p = f[g + 0], r = f[g + 1], l = f[g + 2], k = f[g + 3];
+        (r <= h && k > h || r > h && k <= h) && b < p + (h - r) / (k - r) * (l - p) && a++;
+      }
+      return 1 === (a & 1);
+    };
+    b.signedArea = h;
+    b.counterClockwise = function(b, a, f, q, c, g) {
+      return 0 < h(b, a, f, q, c, g);
+    };
+    b.clockwise = function(b, a, f, q, c, g) {
+      return 0 > h(b, a, f, q, c, g);
+    };
+    b.pointInPolygonInt32 = function(b, h, f) {
+      b |= 0;
+      h |= 0;
+      for (var a = 0, c = f.length - 2, g = 0;g < c;g += 2) {
+        var p = f[g + 0], r = f[g + 1], l = f[g + 2], k = f[g + 3];
+        (r <= h && k > h || r > h && k <= h) && b < p + (h - r) / (k - r) * (l - p) && a++;
+      }
+      return 1 === (a & 1);
+    };
+  })(d.GeometricUtilities || (d.GeometricUtilities = {}));
+  (function(b) {
+    b[b.Error = 1] = "Error";
+    b[b.Warn = 2] = "Warn";
+    b[b.Debug = 4] = "Debug";
+    b[b.Log = 8] = "Log";
+    b[b.Info = 16] = "Info";
+    b[b.All = 31] = "All";
+  })(d.LogLevel || (d.LogLevel = {}));
+  c = function() {
+    function b(h, a) {
+      "undefined" === typeof h && (h = !1);
       this._tab = "  ";
       this._padding = "";
-      this._suppressOutput = suppressOutput;
-      this._out = out || IndentingWriter._consoleOut;
-      this._outNoNewline = out || IndentingWriter._consoleOutNoNewline;
+      this._suppressOutput = h;
+      this._out = a || b._consoleOut;
+      this._outNoNewline = a || b._consoleOutNoNewline;
     }
-    IndentingWriter.prototype.write = function (str, writePadding) {
-      if (typeof str === "undefined") { str = ""; }
-      if (typeof writePadding === "undefined") { writePadding = false; }
-      if (!this._suppressOutput) {
-        this._outNoNewline((writePadding ? this._padding : "") + str);
-      }
-    };
-
-    IndentingWriter.prototype.writeLn = function (str) {
-      if (typeof str === "undefined") { str = ""; }
-      if (!this._suppressOutput) {
-        this._out(this._padding + str);
-      }
-    };
-
-    IndentingWriter.prototype.writeComment = function (str) {
-      var lines = str.split("\n");
-      if (lines.length === 1) {
-        this.writeLn("// " + lines[0]);
+    b.prototype.write = function(b, a) {
+      "undefined" === typeof b && (b = "");
+      "undefined" === typeof a && (a = !1);
+      this._suppressOutput || this._outNoNewline((a ? this._padding : "") + b);
+    };
+    b.prototype.writeLn = function(b) {
+      "undefined" === typeof b && (b = "");
+      this._suppressOutput || this._out(this._padding + b);
+    };
+    b.prototype.writeTimeLn = function(b) {
+      "undefined" === typeof b && (b = "");
+      this._suppressOutput || this._out(this._padding + performance.now().toFixed(2) + " " + b);
+    };
+    b.prototype.writeComment = function(b) {
+      b = b.split("\n");
+      if (1 === b.length) {
+        this.writeLn("// " + b[0]);
       } else {
         this.writeLn("/**");
-        for (var i = 0; i < lines.length; i++) {
-          this.writeLn(" * " + lines[i]);
+        for (var a = 0;a < b.length;a++) {
+          this.writeLn(" * " + b[a]);
         }
         this.writeLn(" */");
       }
     };
-
-    IndentingWriter.prototype.writeLns = function (str) {
-      var lines = str.split("\n");
-      for (var i = 0; i < lines.length; i++) {
-        this.writeLn(lines[i]);
-      }
-    };
-
-    IndentingWriter.prototype.errorLn = function (str) {
-      if (IndentingWriter.logLevel & 1 /* Error */) {
-        this.boldRedLn(str);
-      }
-    };
-
-    IndentingWriter.prototype.warnLn = function (str) {
-      if (IndentingWriter.logLevel & 2 /* Warn */) {
-        this.yellowLn(str);
-      }
-    };
-
-    IndentingWriter.prototype.debugLn = function (str) {
-      if (IndentingWriter.logLevel & 4 /* Debug */) {
-        this.purpleLn(str);
-      }
-    };
-
-    IndentingWriter.prototype.logLn = function (str) {
-      if (IndentingWriter.logLevel & 8 /* Log */) {
-        this.writeLn(str);
-      }
-    };
-
-    IndentingWriter.prototype.infoLn = function (str) {
-      if (IndentingWriter.logLevel & 16 /* Info */) {
-        this.writeLn(str);
-      }
-    };
-
-    IndentingWriter.prototype.yellowLn = function (str) {
-      this.colorLn(IndentingWriter.YELLOW, str);
-    };
-
-    IndentingWriter.prototype.greenLn = function (str) {
-      this.colorLn(IndentingWriter.GREEN, str);
-    };
-
-    IndentingWriter.prototype.boldRedLn = function (str) {
-      this.colorLn(IndentingWriter.BOLD_RED, str);
-    };
-
-    IndentingWriter.prototype.redLn = function (str) {
-      this.colorLn(IndentingWriter.RED, str);
-    };
-
-    IndentingWriter.prototype.purpleLn = function (str) {
-      this.colorLn(IndentingWriter.PURPLE, str);
-    };
-
-    IndentingWriter.prototype.colorLn = function (color, str) {
-      if (!this._suppressOutput) {
-        if (!inBrowser) {
-          this._out(this._padding + color + str + IndentingWriter.ENDC);
-        } else {
-          this._out(this._padding + str);
-        }
-      }
-    };
-
-    IndentingWriter.prototype.redLns = function (str) {
-      this.colorLns(IndentingWriter.RED, str);
-    };
-
-    IndentingWriter.prototype.colorLns = function (color, str) {
-      var lines = str.split("\n");
-      for (var i = 0; i < lines.length; i++) {
-        this.colorLn(color, lines[i]);
-      }
-    };
-
-    IndentingWriter.prototype.enter = function (str) {
-      if (!this._suppressOutput) {
-        this._out(this._padding + str);
-      }
+    b.prototype.writeLns = function(b) {
+      b = b.split("\n");
+      for (var a = 0;a < b.length;a++) {
+        this.writeLn(b[a]);
+      }
+    };
+    b.prototype.errorLn = function(h) {
+      b.logLevel & 1 && this.boldRedLn(h);
+    };
+    b.prototype.warnLn = function(h) {
+      b.logLevel & 2 && this.yellowLn(h);
+    };
+    b.prototype.debugLn = function(h) {
+      b.logLevel & 4 && this.purpleLn(h);
+    };
+    b.prototype.logLn = function(h) {
+      b.logLevel & 8 && this.writeLn(h);
+    };
+    b.prototype.infoLn = function(h) {
+      b.logLevel & 16 && this.writeLn(h);
+    };
+    b.prototype.yellowLn = function(h) {
+      this.colorLn(b.YELLOW, h);
+    };
+    b.prototype.greenLn = function(h) {
+      this.colorLn(b.GREEN, h);
+    };
+    b.prototype.boldRedLn = function(h) {
+      this.colorLn(b.BOLD_RED, h);
+    };
+    b.prototype.redLn = function(h) {
+      this.colorLn(b.RED, h);
+    };
+    b.prototype.purpleLn = function(h) {
+      this.colorLn(b.PURPLE, h);
+    };
+    b.prototype.colorLn = function(h, a) {
+      this._suppressOutput || (inBrowser ? this._out(this._padding + a) : this._out(this._padding + h + a + b.ENDC));
+    };
+    b.prototype.redLns = function(h) {
+      this.colorLns(b.RED, h);
+    };
+    b.prototype.colorLns = function(b, a) {
+      for (var n = a.split("\n"), f = 0;f < n.length;f++) {
+        this.colorLn(b, n[f]);
+      }
+    };
+    b.prototype.enter = function(b) {
+      this._suppressOutput || this._out(this._padding + b);
       this.indent();
     };
-
-    IndentingWriter.prototype.leaveAndEnter = function (str) {
-      this.leave(str);
+    b.prototype.leaveAndEnter = function(b) {
+      this.leave(b);
       this.indent();
     };
-
-    IndentingWriter.prototype.leave = function (str) {
+    b.prototype.leave = function(b) {
       this.outdent();
-      if (!this._suppressOutput) {
-        this._out(this._padding + str);
-      }
-    };
-
-    IndentingWriter.prototype.indent = function () {
+      this._suppressOutput || this._out(this._padding + b);
+    };
+    b.prototype.indent = function() {
       this._padding += this._tab;
     };
-
-    IndentingWriter.prototype.outdent = function () {
-      if (this._padding.length > 0) {
-        this._padding = this._padding.substring(0, this._padding.length - this._tab.length);
-      }
-    };
-
-    IndentingWriter.prototype.writeArray = function (arr, detailed, noNumbers) {
-      if (typeof detailed === "undefined") { detailed = false; }
-      if (typeof noNumbers === "undefined") { noNumbers = false; }
-      detailed = detailed || false;
-      for (var i = 0, j = arr.length; i < j; i++) {
-        var prefix = "";
-        if (detailed) {
-          if (arr[i] === null) {
-            prefix = "null";
-          } else if (arr[i] === undefined) {
-            prefix = "undefined";
-          } else {
-            prefix = arr[i].constructor.name;
-          }
-          prefix += " ";
-        }
-        var number = noNumbers ? "" : ("" + i).padRight(' ', 4);
-        this.writeLn(number + prefix + arr[i]);
-      }
-    };
-    IndentingWriter.PURPLE = '\033[94m';
-    IndentingWriter.YELLOW = '\033[93m';
-    IndentingWriter.GREEN = '\033[92m';
-    IndentingWriter.RED = '\033[91m';
-    IndentingWriter.BOLD_RED = '\033[1;91m';
-    IndentingWriter.ENDC = '\033[0m';
-
-    IndentingWriter.logLevel = 31 /* All */;
-
-    IndentingWriter._consoleOut = inBrowser ? console.info.bind(console) : print;
-    IndentingWriter._consoleOutNoNewline = inBrowser ? console.info.bind(console) : putstr;
-    return IndentingWriter;
-  })();
-  Shumway.IndentingWriter = IndentingWriter;
-
-  var SortedListNode = (function () {
-    function SortedListNode(value, next) {
-      this.value = value;
-      this.next = next;
-    }
-    return SortedListNode;
-  })();
-
-  var SortedList = (function () {
-    function SortedList(compare) {
-      release || Debug.assert(compare);
-      this._compare = compare;
+    b.prototype.outdent = function() {
+      0 < this._padding.length && (this._padding = this._padding.substring(0, this._padding.length - this._tab.length));
+    };
+    b.prototype.writeArray = function(b, a, n) {
+      "undefined" === typeof a && (a = !1);
+      "undefined" === typeof n && (n = !1);
+      a = a || !1;
+      for (var f = 0, q = b.length;f < q;f++) {
+        var c = "";
+        a && (c = null === b[f] ? "null" : void 0 === b[f] ? "undefined" : b[f].constructor.name, c += " ");
+        var g = n ? "" : ("" + f).padRight(" ", 4);
+        this.writeLn(g + c + b[f]);
+      }
+    };
+    b.PURPLE = "\u001b[94m";
+    b.YELLOW = "\u001b[93m";
+    b.GREEN = "\u001b[92m";
+    b.RED = "\u001b[91m";
+    b.BOLD_RED = "\u001b[1;91m";
+    b.ENDC = "\u001b[0m";
+    b.logLevel = 31;
+    b._consoleOut = inBrowser ? console.info.bind(console) : print;
+    b._consoleOutNoNewline = inBrowser ? console.info.bind(console) : putstr;
+    return b;
+  }();
+  d.IndentingWriter = c;
+  var u = function() {
+    return function(b, h) {
+      this.value = b;
+      this.next = h;
+    };
+  }(), c = function() {
+    function b(b) {
+      k.assert(b);
+      this._compare = b;
       this._head = null;
       this._length = 0;
     }
-    SortedList.prototype.push = function (value) {
-      release || Debug.assert(value !== undefined);
+    b.prototype.push = function(b) {
+      k.assert(void 0 !== b);
       this._length++;
-      if (!this._head) {
-        this._head = new SortedListNode(value, null);
-        return;
-      }
-
-      var curr = this._head;
-      var prev = null;
-      var node = new SortedListNode(value, null);
-      var compare = this._compare;
-      while (curr) {
-        if (compare(curr.value, node.value) > 0) {
-          if (prev) {
-            node.next = curr;
-            prev.next = node;
-          } else {
-            node.next = this._head;
-            this._head = node;
-          }
-          return;
-        }
-        prev = curr;
-        curr = curr.next;
-      }
-      prev.next = node;
-    };
-
-    SortedList.prototype.forEach = function (visitor) {
-      var curr = this._head;
-      var last = null;
-      while (curr) {
-        var result = visitor(curr.value);
-        if (result === SortedList.RETURN) {
-          return;
-        } else if (result === SortedList.DELETE) {
-          if (!last) {
-            curr = this._head = this._head.next;
-          } else {
-            curr = last.next = curr.next;
-          }
+      if (this._head) {
+        var a = this._head, n = null;
+        b = new u(b, null);
+        for (var f = this._compare;a;) {
+          if (0 < f(a.value, b.value)) {
+            n ? (b.next = a, n.next = b) : (b.next = this._head, this._head = b);
+            return;
+          }
+          n = a;
+          a = a.next;
+        }
+        n.next = b;
+      } else {
+        this._head = new u(b, null);
+      }
+    };
+    b.prototype.forEach = function(h) {
+      for (var a = this._head, n = null;a;) {
+        var f = h(a.value);
+        if (f === b.RETURN) {
+          break;
         } else {
-          last = curr;
-          curr = curr.next;
-        }
-      }
-    };
-
-    SortedList.prototype.isEmpty = function () {
-      return !this._head;
-    };
-
-    SortedList.prototype.pop = function () {
-      if (!this._head) {
-        return undefined;
-      }
-      this._length--;
-      var ret = this._head;
-      this._head = this._head.next;
-      return ret.value;
-    };
-
-    SortedList.prototype.contains = function (value) {
-      var curr = this._head;
-      while (curr) {
-        if (curr.value === value) {
-          return true;
-        }
-        curr = curr.next;
-      }
-      return false;
-    };
-
-    SortedList.prototype.toString = function () {
-      var str = "[";
-      var curr = this._head;
-      while (curr) {
-        str += curr.value.toString();
-        curr = curr.next;
-        if (curr) {
-          str += ",";
-        }
-      }
-      str += "]";
-      return str;
-    };
-    SortedList.RETURN = 1;
-    SortedList.DELETE = 2;
-    return SortedList;
-  })();
-  Shumway.SortedList = SortedList;
-
-  var CircularBuffer = (function () {
-    function CircularBuffer(Type, sizeInBits) {
-      if (typeof sizeInBits === "undefined") { sizeInBits = 12; }
-      this.index = 0;
-      this.start = 0;
-      this._size = 1 << sizeInBits;
+          f === b.DELETE ? a = n ? n.next = a.next : this._head = this._head.next : (n = a, a = a.next);
+        }
+      }
+    };
+    b.prototype.isEmpty = function() {
+      return!this._head;
+    };
+    b.prototype.pop = function() {
+      if (this._head) {
+        this._length--;
+        var b = this._head;
+        this._head = this._head.next;
+        return b.value;
+      }
+    };
+    b.prototype.contains = function(b) {
+      for (var a = this._head;a;) {
+        if (a.value === b) {
+          return!0;
+        }
+        a = a.next;
+      }
+      return!1;
+    };
+    b.prototype.toString = function() {
+      for (var b = "[", a = this._head;a;) {
+        b += a.value.toString(), (a = a.next) && (b += ",");
+      }
+      return b + "]";
+    };
+    b.RETURN = 1;
+    b.DELETE = 2;
+    return b;
+  }();
+  d.SortedList = c;
+  c = function() {
+    function b(b, a) {
+      "undefined" === typeof a && (a = 12);
+      this.start = this.index = 0;
+      this._size = 1 << a;
       this._mask = this._size - 1;
-      this.array = new Type(this._size);
+      this.array = new b(this._size);
     }
-    CircularBuffer.prototype.get = function (i) {
-      return this.array[i];
-    };
-
-    CircularBuffer.prototype.forEachInReverse = function (visitor) {
-      if (this.isEmpty()) {
-        return;
-      }
-      var i = this.index === 0 ? this._size - 1 : this.index - 1;
-      var end = (this.start - 1) & this._mask;
-      while (i !== end) {
-        if (visitor(this.array[i], i)) {
-          break;
-        }
-        i = i === 0 ? this._size - 1 : i - 1;
-      }
-    };
-
-    CircularBuffer.prototype.write = function (value) {
-      this.array[this.index] = value;
-      this.index = (this.index + 1) & this._mask;
-      if (this.index === this.start) {
-        this.start = (this.start + 1) & this._mask;
-      }
-    };
-
-    CircularBuffer.prototype.isFull = function () {
-      return ((this.index + 1) & this._mask) === this.start;
-    };
-
-    CircularBuffer.prototype.isEmpty = function () {
+    b.prototype.get = function(b) {
+      return this.array[b];
+    };
+    b.prototype.forEachInReverse = function(b) {
+      if (!this.isEmpty()) {
+        for (var a = 0 === this.index ? this._size - 1 : this.index - 1, n = this.start - 1 & this._mask;a !== n && !b(this.array[a], a);) {
+          a = 0 === a ? this._size - 1 : a - 1;
+        }
+      }
+    };
+    b.prototype.write = function(b) {
+      this.array[this.index] = b;
+      this.index = this.index + 1 & this._mask;
+      this.index === this.start && (this.start = this.start + 1 & this._mask);
+    };
+    b.prototype.isFull = function() {
+      return(this.index + 1 & this._mask) === this.start;
+    };
+    b.prototype.isEmpty = function() {
       return this.index === this.start;
     };
-
-    CircularBuffer.prototype.reset = function () {
-      this.index = 0;
-      this.start = 0;
-    };
-    return CircularBuffer;
-  })();
-  Shumway.CircularBuffer = CircularBuffer;
-
-  (function (BitSets) {
-    var assert = Shumway.Debug.assert;
-
-    BitSets.ADDRESS_BITS_PER_WORD = 5;
-    BitSets.BITS_PER_WORD = 1 << BitSets.ADDRESS_BITS_PER_WORD;
-    BitSets.BIT_INDEX_MASK = BitSets.BITS_PER_WORD - 1;
-
-    function getSize(length) {
-      return ((length + (BitSets.BITS_PER_WORD - 1)) >> BitSets.ADDRESS_BITS_PER_WORD) << BitSets.ADDRESS_BITS_PER_WORD;
+    b.prototype.reset = function() {
+      this.start = this.index = 0;
+    };
+    return b;
+  }();
+  d.CircularBuffer = c;
+  (function(b) {
+    function h(f) {
+      return f + (b.BITS_PER_WORD - 1) >> b.ADDRESS_BITS_PER_WORD << b.ADDRESS_BITS_PER_WORD;
     }
-
-    function toBitString(on, off) {
-      var self = this;
-      on = on || "1";
-      off = off || "0";
-      var str = "";
-      for (var i = 0; i < length; i++) {
-        str += self.get(i) ? on : off;
-      }
-      return str;
+    function a(f, b) {
+      f = f || "1";
+      b = b || "0";
+      for (var h = "", q = 0;q < length;q++) {
+        h += this.get(q) ? f : b;
+      }
+      return h;
     }
-
-    function toString(names) {
-      var self = this;
-      var set = [];
-      for (var i = 0; i < length; i++) {
-        if (self.get(i)) {
-          set.push(names ? names[i] : i);
-        }
-      }
-      return set.join(", ");
+    function n(f) {
+      for (var b = [], h = 0;h < length;h++) {
+        this.get(h) && b.push(f ? f[h] : h);
+      }
+      return b.join(", ");
     }
-
-    var Uint32ArrayBitSet = (function () {
-      function Uint32ArrayBitSet(length) {
-        this.size = getSize(length);
-        this.count = 0;
-        this.dirty = 0;
-        this.length = length;
-        this.bits = new Uint32Array(this.size >> BitSets.ADDRESS_BITS_PER_WORD);
-      }
-      Uint32ArrayBitSet.prototype.recount = function () {
-        if (!this.dirty) {
-          return;
-        }
-
-        var bits = this.bits;
-        var c = 0;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          var v = bits[i];
-          v = v - ((v >> 1) & 0x55555555);
-          v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
-          c += ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
-        }
-
-        this.count = c;
-        this.dirty = 0;
-      };
-
-      Uint32ArrayBitSet.prototype.set = function (i) {
-        var n = i >> BitSets.ADDRESS_BITS_PER_WORD;
-        var old = this.bits[n];
-        var b = old | (1 << (i & BitSets.BIT_INDEX_MASK));
-        this.bits[n] = b;
-        this.dirty |= old ^ b;
-      };
-
-      Uint32ArrayBitSet.prototype.setAll = function () {
-        var bits = this.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          bits[i] = 0xFFFFFFFF;
+    var f = d.Debug.assert;
+    b.ADDRESS_BITS_PER_WORD = 5;
+    b.BITS_PER_WORD = 1 << b.ADDRESS_BITS_PER_WORD;
+    b.BIT_INDEX_MASK = b.BITS_PER_WORD - 1;
+    var q = function() {
+      function a(f) {
+        this.size = h(f);
+        this.dirty = this.count = 0;
+        this.length = f;
+        this.bits = new Uint32Array(this.size >> b.ADDRESS_BITS_PER_WORD);
+      }
+      a.prototype.recount = function() {
+        if (this.dirty) {
+          for (var f = this.bits, b = 0, h = 0, a = f.length;h < a;h++) {
+            var q = f[h], q = q - (q >> 1 & 1431655765), q = (q & 858993459) + (q >> 2 & 858993459), b = b + (16843009 * (q + (q >> 4) & 252645135) >> 24)
+          }
+          this.count = b;
+          this.dirty = 0;
+        }
+      };
+      a.prototype.set = function(f) {
+        var h = f >> b.ADDRESS_BITS_PER_WORD, a = this.bits[h];
+        f = a | 1 << (f & b.BIT_INDEX_MASK);
+        this.bits[h] = f;
+        this.dirty |= a ^ f;
+      };
+      a.prototype.setAll = function() {
+        for (var f = this.bits, b = 0, h = f.length;b < h;b++) {
+          f[b] = 4294967295;
         }
         this.count = this.size;
         this.dirty = 0;
       };
-
-      Uint32ArrayBitSet.prototype.assign = function (set) {
-        this.count = set.count;
-        this.dirty = set.dirty;
-        this.size = set.size;
-        for (var i = 0, j = this.bits.length; i < j; i++) {
-          this.bits[i] = set.bits[i];
-        }
-      };
-
-      Uint32ArrayBitSet.prototype.clear = function (i) {
-        var n = i >> BitSets.ADDRESS_BITS_PER_WORD;
-        var old = this.bits[n];
-        var b = old & ~(1 << (i & BitSets.BIT_INDEX_MASK));
-        this.bits[n] = b;
-        this.dirty |= old ^ b;
-      };
-
-      Uint32ArrayBitSet.prototype.get = function (i) {
-        var word = this.bits[i >> BitSets.ADDRESS_BITS_PER_WORD];
-        return ((word & 1 << (i & BitSets.BIT_INDEX_MASK))) !== 0;
-      };
-
-      Uint32ArrayBitSet.prototype.clearAll = function () {
-        var bits = this.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          bits[i] = 0;
-        }
-        this.count = 0;
-        this.dirty = 0;
-      };
-
-      Uint32ArrayBitSet.prototype._union = function (other) {
-        var dirty = this.dirty;
-        var bits = this.bits;
-        var otherBits = other.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          var old = bits[i];
-          var b = old | otherBits[i];
-          bits[i] = b;
-          dirty |= old ^ b;
-        }
-        this.dirty = dirty;
-      };
-
-      Uint32ArrayBitSet.prototype.intersect = function (other) {
-        var dirty = this.dirty;
-        var bits = this.bits;
-        var otherBits = other.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          var old = bits[i];
-          var b = old & otherBits[i];
-          bits[i] = b;
-          dirty |= old ^ b;
-        }
-        this.dirty = dirty;
-      };
-
-      Uint32ArrayBitSet.prototype.subtract = function (other) {
-        var dirty = this.dirty;
-        var bits = this.bits;
-        var otherBits = other.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          var old = bits[i];
-          var b = old & ~otherBits[i];
-          bits[i] = b;
-          dirty |= old ^ b;
-        }
-        this.dirty = dirty;
-      };
-
-      Uint32ArrayBitSet.prototype.negate = function () {
-        var dirty = this.dirty;
-        var bits = this.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          var old = bits[i];
-          var b = ~old;
-          bits[i] = b;
-          dirty |= old ^ b;
-        }
-        this.dirty = dirty;
-      };
-
-      Uint32ArrayBitSet.prototype.forEach = function (fn) {
-        release || assert(fn);
-        var bits = this.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          var word = bits[i];
-          if (word) {
-            for (var k = 0; k < BitSets.BITS_PER_WORD; k++) {
-              if (word & (1 << k)) {
-                fn(i * BitSets.BITS_PER_WORD + k);
-              }
-            }
-          }
-        }
-      };
-
-      Uint32ArrayBitSet.prototype.toArray = function () {
-        var set = [];
-        var bits = this.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          var word = bits[i];
-          if (word) {
-            for (var k = 0; k < BitSets.BITS_PER_WORD; k++) {
-              if (word & (1 << k)) {
-                set.push(i * BitSets.BITS_PER_WORD + k);
-              }
-            }
-          }
-        }
-        return set;
-      };
-
-      Uint32ArrayBitSet.prototype.equals = function (other) {
-        if (this.size !== other.size) {
-          return false;
-        }
-        var bits = this.bits;
-        var otherBits = other.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          if (bits[i] !== otherBits[i]) {
-            return false;
-          }
-        }
-        return true;
-      };
-
-      Uint32ArrayBitSet.prototype.contains = function (other) {
-        if (this.size !== other.size) {
-          return false;
-        }
-        var bits = this.bits;
-        var otherBits = other.bits;
-        for (var i = 0, j = bits.length; i < j; i++) {
-          if ((bits[i] | otherBits[i]) !== bits[i]) {
-            return false;
-          }
-        }
-        return true;
-      };
-
-      Uint32ArrayBitSet.prototype.isEmpty = function () {
+      a.prototype.assign = function(f) {
+        this.count = f.count;
+        this.dirty = f.dirty;
+        this.size = f.size;
+        for (var b = 0, h = this.bits.length;b < h;b++) {
+          this.bits[b] = f.bits[b];
+        }
+      };
+      a.prototype.clear = function(f) {
+        var h = f >> b.ADDRESS_BITS_PER_WORD, a = this.bits[h];
+        f = a & ~(1 << (f & b.BIT_INDEX_MASK));
+        this.bits[h] = f;
+        this.dirty |= a ^ f;
+      };
+      a.prototype.get = function(f) {
+        return 0 !== (this.bits[f >> b.ADDRESS_BITS_PER_WORD] & 1 << (f & b.BIT_INDEX_MASK));
+      };
+      a.prototype.clearAll = function() {
+        for (var f = this.bits, b = 0, h = f.length;b < h;b++) {
+          f[b] = 0;
+        }
+        this.dirty = this.count = 0;
+      };
+      a.prototype._union = function(f) {
+        var b = this.dirty, h = this.bits;
+        f = f.bits;
+        for (var a = 0, q = h.length;a < q;a++) {
+          var n = h[a], c = n | f[a];
+          h[a] = c;
+          b |= n ^ c;
+        }
+        this.dirty = b;
+      };
+      a.prototype.intersect = function(f) {
+        var b = this.dirty, h = this.bits;
+        f = f.bits;
+        for (var a = 0, q = h.length;a < q;a++) {
+          var n = h[a], c = n & f[a];
+          h[a] = c;
+          b |= n ^ c;
+        }
+        this.dirty = b;
+      };
+      a.prototype.subtract = function(f) {
+        var b = this.dirty, h = this.bits;
+        f = f.bits;
+        for (var a = 0, q = h.length;a < q;a++) {
+          var n = h[a], c = n & ~f[a];
+          h[a] = c;
+          b |= n ^ c;
+        }
+        this.dirty = b;
+      };
+      a.prototype.negate = function() {
+        for (var f = this.dirty, b = this.bits, h = 0, a = b.length;h < a;h++) {
+          var q = b[h], n = ~q;
+          b[h] = n;
+          f |= q ^ n;
+        }
+        this.dirty = f;
+      };
+      a.prototype.forEach = function(h) {
+        f(h);
+        for (var a = this.bits, q = 0, n = a.length;q < n;q++) {
+          var c = a[q];
+          if (c) {
+            for (var g = 0;g < b.BITS_PER_WORD;g++) {
+              c & 1 << g && h(q * b.BITS_PER_WORD + g);
+            }
+          }
+        }
+      };
+      a.prototype.toArray = function() {
+        for (var f = [], h = this.bits, a = 0, q = h.length;a < q;a++) {
+          var n = h[a];
+          if (n) {
+            for (var c = 0;c < b.BITS_PER_WORD;c++) {
+              n & 1 << c && f.push(a * b.BITS_PER_WORD + c);
+            }
+          }
+        }
+        return f;
+      };
+      a.prototype.equals = function(f) {
+        if (this.size !== f.size) {
+          return!1;
+        }
+        var b = this.bits;
+        f = f.bits;
+        for (var h = 0, a = b.length;h < a;h++) {
+          if (b[h] !== f[h]) {
+            return!1;
+          }
+        }
+        return!0;
+      };
+      a.prototype.contains = function(f) {
+        if (this.size !== f.size) {
+          return!1;
+        }
+        var b = this.bits;
+        f = f.bits;
+        for (var h = 0, a = b.length;h < a;h++) {
+          if ((b[h] | f[h]) !== b[h]) {
+            return!1;
+          }
+        }
+        return!0;
+      };
+      a.prototype.isEmpty = function() {
         this.recount();
-        return this.count === 0;
-      };
-
-      Uint32ArrayBitSet.prototype.clone = function () {
-        var set = new Uint32ArrayBitSet(this.length);
-        set._union(this);
-        return set;
-      };
-      return Uint32ArrayBitSet;
-    })();
-    BitSets.Uint32ArrayBitSet = Uint32ArrayBitSet;
-
-    var Uint32BitSet = (function () {
-      function Uint32BitSet(length) {
-        this.count = 0;
-        this.dirty = 0;
-        this.size = getSize(length);
+        return 0 === this.count;
+      };
+      a.prototype.clone = function() {
+        var f = new a(this.length);
+        f._union(this);
+        return f;
+      };
+      return a;
+    }();
+    b.Uint32ArrayBitSet = q;
+    var c = function() {
+      function a(f) {
+        this.dirty = this.count = 0;
+        this.size = h(f);
         this.bits = 0;
-        this.singleWord = true;
-        this.length = length;
-      }
-      Uint32BitSet.prototype.recount = function () {
-        if (!this.dirty) {
-          return;
-        }
-
-        var c = 0;
-        var v = this.bits;
-        v = v - ((v >> 1) & 0x55555555);
-        v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
-        c += ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
-
-        this.count = c;
-        this.dirty = 0;
-      };
-
-      Uint32BitSet.prototype.set = function (i) {
-        var old = this.bits;
-        var b = old | (1 << (i & BitSets.BIT_INDEX_MASK));
-        this.bits = b;
-        this.dirty |= old ^ b;
-      };
-
-      Uint32BitSet.prototype.setAll = function () {
-        this.bits = 0xFFFFFFFF;
+        this.singleWord = !0;
+        this.length = f;
+      }
+      a.prototype.recount = function() {
+        if (this.dirty) {
+          var f = this.bits, f = f - (f >> 1 & 1431655765), f = (f & 858993459) + (f >> 2 & 858993459);
+          this.count = 0 + (16843009 * (f + (f >> 4) & 252645135) >> 24);
+          this.dirty = 0;
+        }
+      };
+      a.prototype.set = function(f) {
+        var a = this.bits;
+        this.bits = f = a | 1 << (f & b.BIT_INDEX_MASK);
+        this.dirty |= a ^ f;
+      };
+      a.prototype.setAll = function() {
+        this.bits = 4294967295;
         this.count = this.size;
         this.dirty = 0;
       };
-
-      Uint32BitSet.prototype.assign = function (set) {
-        this.count = set.count;
-        this.dirty = set.dirty;
-        this.size = set.size;
-        this.bits = set.bits;
-      };
-
-      Uint32BitSet.prototype.clear = function (i) {
-        var old = this.bits;
-        var b = old & ~(1 << (i & BitSets.BIT_INDEX_MASK));
-        this.bits = b;
-        this.dirty |= old ^ b;
-      };
-
-      Uint32BitSet.prototype.get = function (i) {
-        return ((this.bits & 1 << (i & BitSets.BIT_INDEX_MASK))) !== 0;
-      };
-
-      Uint32BitSet.prototype.clearAll = function () {
-        this.bits = 0;
-        this.count = 0;
-        this.dirty = 0;
-      };
-
-      Uint32BitSet.prototype._union = function (other) {
-        var old = this.bits;
-        var b = old | other.bits;
-        this.bits = b;
-        this.dirty = old ^ b;
-      };
-
-      Uint32BitSet.prototype.intersect = function (other) {
-        var old = this.bits;
-        var b = old & other.bits;
-        this.bits = b;
-        this.dirty = old ^ b;
-      };
-
-      Uint32BitSet.prototype.subtract = function (other) {
-        var old = this.bits;
-        var b = old & ~other.bits;
-        this.bits = b;
-        this.dirty = old ^ b;
-      };
-
-      Uint32BitSet.prototype.negate = function () {
-        var old = this.bits;
-        var b = ~old;
+      a.prototype.assign = function(f) {
+        this.count = f.count;
+        this.dirty = f.dirty;
+        this.size = f.size;
+        this.bits = f.bits;
+      };
+      a.prototype.clear = function(f) {
+        var a = this.bits;
+        this.bits = f = a & ~(1 << (f & b.BIT_INDEX_MASK));
+        this.dirty |= a ^ f;
+      };
+      a.prototype.get = function(f) {
+        return 0 !== (this.bits & 1 << (f & b.BIT_INDEX_MASK));
+      };
+      a.prototype.clearAll = function() {
+        this.dirty = this.count = this.bits = 0;
+      };
+      a.prototype._union = function(f) {
+        var b = this.bits;
+        this.bits = f = b | f.bits;
+        this.dirty = b ^ f;
+      };
+      a.prototype.intersect = function(f) {
+        var b = this.bits;
+        this.bits = f = b & f.bits;
+        this.dirty = b ^ f;
+      };
+      a.prototype.subtract = function(f) {
+        var b = this.bits;
+        this.bits = f = b & ~f.bits;
+        this.dirty = b ^ f;
+      };
+      a.prototype.negate = function() {
+        var f = this.bits, b = ~f;
         this.bits = b;
-        this.dirty = old ^ b;
-      };
-
-      Uint32BitSet.prototype.forEach = function (fn) {
-        release || assert(fn);
-        var word = this.bits;
-        if (word) {
-          for (var k = 0; k < BitSets.BITS_PER_WORD; k++) {
-            if (word & (1 << k)) {
-              fn(k);
-            }
-          }
-        }
-      };
-
-      Uint32BitSet.prototype.toArray = function () {
-        var set = [];
-        var word = this.bits;
-        if (word) {
-          for (var k = 0; k < BitSets.BITS_PER_WORD; k++) {
-            if (word & (1 << k)) {
-              set.push(k);
-            }
-          }
-        }
-        return set;
-      };
-
-      Uint32BitSet.prototype.equals = function (other) {
-        return this.bits === other.bits;
-      };
-
-      Uint32BitSet.prototype.contains = function (other) {
-        var bits = this.bits;
-        return (bits | other.bits) === bits;
-      };
-
-      Uint32BitSet.prototype.isEmpty = function () {
+        this.dirty = f ^ b;
+      };
+      a.prototype.forEach = function(a) {
+        f(a);
+        var h = this.bits;
+        if (h) {
+          for (var q = 0;q < b.BITS_PER_WORD;q++) {
+            h & 1 << q && a(q);
+          }
+        }
+      };
+      a.prototype.toArray = function() {
+        var f = [], a = this.bits;
+        if (a) {
+          for (var h = 0;h < b.BITS_PER_WORD;h++) {
+            a & 1 << h && f.push(h);
+          }
+        }
+        return f;
+      };
+      a.prototype.equals = function(f) {
+        return this.bits === f.bits;
+      };
+      a.prototype.contains = function(f) {
+        var b = this.bits;
+        return(b | f.bits) === b;
+      };
+      a.prototype.isEmpty = function() {
         this.recount();
-        return this.count === 0;
-      };
-
-      Uint32BitSet.prototype.clone = function () {
-        var set = new Uint32BitSet(this.length);
-        set._union(this);
-        return set;
-      };
-      return Uint32BitSet;
-    })();
-    BitSets.Uint32BitSet = Uint32BitSet;
-
-    Uint32BitSet.prototype.toString = toString;
-    Uint32BitSet.prototype.toBitString = toBitString;
-    Uint32ArrayBitSet.prototype.toString = toString;
-    Uint32ArrayBitSet.prototype.toBitString = toBitString;
-
-    function BitSetFunctor(length) {
-      var shouldUseSingleWord = (getSize(length) >> BitSets.ADDRESS_BITS_PER_WORD) === 1;
-      var type = (shouldUseSingleWord ? Uint32BitSet : Uint32ArrayBitSet);
-      return function () {
-        return new type(length);
-      };
-    }
-    BitSets.BitSetFunctor = BitSetFunctor;
-  })(Shumway.BitSets || (Shumway.BitSets = {}));
-  var BitSets = Shumway.BitSets;
-
-  var ColorStyle = (function () {
-    function ColorStyle() {
+        return 0 === this.count;
+      };
+      a.prototype.clone = function() {
+        var f = new a(this.length);
+        f._union(this);
+        return f;
+      };
+      return a;
+    }();
+    b.Uint32BitSet = c;
+    c.prototype.toString = n;
+    c.prototype.toBitString = a;
+    q.prototype.toString = n;
+    q.prototype.toBitString = a;
+    b.BitSetFunctor = function(f) {
+      var a = 1 === h(f) >> b.ADDRESS_BITS_PER_WORD ? c : q;
+      return function() {
+        return new a(f);
+      };
+    };
+  })(d.BitSets || (d.BitSets = {}));
+  c = function() {
+    function b() {
     }
-    ColorStyle.randomStyle = function () {
-      if (!ColorStyle._randomStyleCache) {
-        ColorStyle._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 ColorStyle._randomStyleCache[(ColorStyle._nextStyle++) % ColorStyle._randomStyleCache.length];
-    };
-
-    ColorStyle.contrastStyle = function (rgb) {
-      var c = parseInt(rgb.substr(1), 16);
-      var yiq = (((c >> 16) * 299) + (((c >> 8) & 0xff) * 587) + ((c & 0xff) * 114)) / 1000;
-      return (yiq >= 128) ? '#000000' : '#ffffff';
-    };
-
-    ColorStyle.reset = function () {
-      ColorStyle._nextStyle = 0;
-    };
-    ColorStyle.TabToolbar = "#252c33";
-    ColorStyle.Toolbars = "#343c45";
-    ColorStyle.HighlightBlue = "#1d4f73";
-    ColorStyle.LightText = "#f5f7fa";
-    ColorStyle.ForegroundText = "#b6babf";
-    ColorStyle.Black = "#000000";
-    ColorStyle.VeryDark = "#14171a";
-    ColorStyle.Dark = "#181d20";
-    ColorStyle.Light = "#a9bacb";
-    ColorStyle.Grey = "#8fa1b2";
-    ColorStyle.DarkGrey = "#5f7387";
-    ColorStyle.Blue = "#46afe3";
-    ColorStyle.Purple = "#6b7abb";
-    ColorStyle.Pink = "#df80ff";
-    ColorStyle.Red = "#eb5368";
-    ColorStyle.Orange = "#d96629";
-    ColorStyle.LightOrange = "#d99b28";
-    ColorStyle.Green = "#70bf53";
-    ColorStyle.BlueGrey = "#5e88b0";
-
-    ColorStyle._nextStyle = 0;
-    return ColorStyle;
-  })();
-  Shumway.ColorStyle = ColorStyle;
-
-  var Bounds = (function () {
-    function Bounds(xMin, yMin, xMax, yMax) {
-      this.xMin = xMin | 0;
-      this.yMin = yMin | 0;
-      this.xMax = xMax | 0;
-      this.yMax = yMax | 0;
+    b.randomStyle = function() {
+      b._randomStyleCache || (b._randomStyleCache = "#ff5e3a #ff9500 #ffdb4c #87fc70 #52edc7 #1ad6fd #c644fc #ef4db6 #4a4a4a #dbddde #ff3b30 #ff9500 #ffcc00 #4cd964 #34aadc #007aff #5856d6 #ff2d55 #8e8e93 #c7c7cc #5ad427 #c86edf #d1eefc #e0f8d8 #fb2b69 #f7f7f7 #1d77ef #d6cec3 #55efcb #ff4981 #ffd3e0 #f7f7f7 #ff1300 #1f1f21 #bdbec2 #ff3a2d".split(" "));
+      return b._randomStyleCache[b._nextStyle++ % b._randomStyleCache.length];
+    };
+    b.contrastStyle = function(b) {
+      b = parseInt(b.substr(1), 16);
+      return 128 <= (299 * (b >> 16) + 587 * (b >> 8 & 255) + 114 * (b & 255)) / 1E3 ? "#000000" : "#ffffff";
+    };
+    b.reset = function() {
+      b._nextStyle = 0;
+    };
+    b.TabToolbar = "#252c33";
+    b.Toolbars = "#343c45";
+    b.HighlightBlue = "#1d4f73";
+    b.LightText = "#f5f7fa";
+    b.ForegroundText = "#b6babf";
+    b.Black = "#000000";
+    b.VeryDark = "#14171a";
+    b.Dark = "#181d20";
+    b.Light = "#a9bacb";
+    b.Grey = "#8fa1b2";
+    b.DarkGrey = "#5f7387";
+    b.Blue = "#46afe3";
+    b.Purple = "#6b7abb";
+    b.Pink = "#df80ff";
+    b.Red = "#eb5368";
+    b.Orange = "#d96629";
+    b.LightOrange = "#d99b28";
+    b.Green = "#70bf53";
+    b.BlueGrey = "#5e88b0";
+    b._nextStyle = 0;
+    return b;
+  }();
+  d.ColorStyle = c;
+  c = function() {
+    function b(b, a, n, f) {
+      this.xMin = b | 0;
+      this.yMin = a | 0;
+      this.xMax = n | 0;
+      this.yMax = f | 0;
     }
-    Bounds.FromUntyped = function (source) {
-      return new Bounds(source.xMin, source.yMin, source.xMax, source.yMax);
-    };
-
-    Bounds.FromRectangle = function (source) {
-      return new Bounds(source.x * 20 | 0, source.y * 20 | 0, (source.x + source.width) * 20 | 0, (source.y + source.height) * 20 | 0);
-    };
-
-    Bounds.prototype.setElements = function (xMin, yMin, xMax, yMax) {
-      this.xMin = xMin;
-      this.yMin = yMin;
-      this.xMax = xMax;
-      this.yMax = yMax;
-    };
-
-    Bounds.prototype.copyFrom = function (source) {
-      this.setElements(source.xMin, source.yMin, source.xMax, source.yMax);
-    };
-
-    Bounds.prototype.contains = function (x, y) {
-      return x < this.xMin !== x < this.xMax && y < this.yMin !== y < this.yMax;
-    };
-
-    Bounds.prototype.unionInPlace = function (other) {
-      this.xMin = Math.min(this.xMin, other.xMin);
-      this.yMin = Math.min(this.yMin, other.yMin);
-      this.xMax = Math.max(this.xMax, other.xMax);
-      this.yMax = Math.max(this.yMax, other.yMax);
-    };
-
-    Bounds.prototype.extendByPoint = function (x, y) {
-      this.extendByX(x);
-      this.extendByY(y);
-    };
-
-    Bounds.prototype.extendByX = function (x) {
-      if (this.xMin === 0x8000000) {
-        this.xMin = this.xMax = x;
-        return;
-      }
-      this.xMin = Math.min(this.xMin, x);
-      this.xMax = Math.max(this.xMax, x);
-    };
-
-    Bounds.prototype.extendByY = function (y) {
-      if (this.yMin === 0x8000000) {
-        this.yMin = this.yMax = y;
-        return;
-      }
-      this.yMin = Math.min(this.yMin, y);
-      this.yMax = Math.max(this.yMax, y);
-    };
-
-    Bounds.prototype.intersects = function (toIntersect) {
-      return this.contains(toIntersect.xMin, toIntersect.yMin) || this.contains(toIntersect.xMax, toIntersect.yMax);
-    };
-
-    Bounds.prototype.isEmpty = function () {
+    b.FromUntyped = function(a) {
+      return new b(a.xMin, a.yMin, a.xMax, a.yMax);
+    };
+    b.FromRectangle = function(a) {
+      return new b(20 * a.x | 0, 20 * a.y | 0, 20 * (a.x + a.width) | 0, 20 * (a.y + a.height) | 0);
+    };
+    b.prototype.setElements = function(b, a, n, f) {
+      this.xMin = b;
+      this.yMin = a;
+      this.xMax = n;
+      this.yMax = f;
+    };
+    b.prototype.copyFrom = function(b) {
+      this.setElements(b.xMin, b.yMin, b.xMax, b.yMax);
+    };
+    b.prototype.contains = function(b, a) {
+      return b < this.xMin !== b < this.xMax && a < this.yMin !== a < this.yMax;
+    };
+    b.prototype.unionInPlace = function(b) {
+      this.xMin = Math.min(this.xMin, b.xMin);
+      this.yMin = Math.min(this.yMin, b.yMin);
+      this.xMax = Math.max(this.xMax, b.xMax);
+      this.yMax = Math.max(this.yMax, b.yMax);
+    };
+    b.prototype.extendByPoint = function(b, a) {
+      this.extendByX(b);
+      this.extendByY(a);
+    };
+    b.prototype.extendByX = function(b) {
+      134217728 === this.xMin ? this.xMin = this.xMax = b : (this.xMin = Math.min(this.xMin, b), this.xMax = Math.max(this.xMax, b));
+    };
+    b.prototype.extendByY = function(b) {
+      134217728 === this.yMin ? this.yMin = this.yMax = b : (this.yMin = Math.min(this.yMin, b), this.yMax = Math.max(this.yMax, b));
+    };
+    b.prototype.intersects = function(b) {
+      return this.contains(b.xMin, b.yMin) || this.contains(b.xMax, b.yMax);
+    };
+    b.prototype.isEmpty = function() {
       return this.xMax <= this.xMin || this.yMax <= this.yMin;
     };
-
-    Object.defineProperty(Bounds.prototype, "width", {
-      get: function () {
-        return this.xMax - this.xMin;
-      },
-      set: function (value) {
-        this.xMax = this.xMin + value;
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-
-    Object.defineProperty(Bounds.prototype, "height", {
-      get: function () {
-        return this.yMax - this.yMin;
-      },
-      set: function (value) {
-        this.yMax = this.yMin + value;
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-
-    Bounds.prototype.getBaseWidth = function (angle) {
-      var u = Math.abs(Math.cos(angle));
-      var v = Math.abs(Math.sin(angle));
-      return u * (this.xMax - this.xMin) + v * (this.yMax - this.yMin);
-    };
-
-    Bounds.prototype.getBaseHeight = function (angle) {
-      var u = Math.abs(Math.cos(angle));
-      var v = Math.abs(Math.sin(angle));
-      return v * (this.xMax - this.xMin) + u * (this.yMax - this.yMin);
-    };
-
-    Bounds.prototype.setEmpty = function () {
+    Object.defineProperty(b.prototype, "width", {get:function() {
+      return this.xMax - this.xMin;
+    }, set:function(b) {
+      this.xMax = this.xMin + b;
+    }, enumerable:!0, configurable:!0});
+    Object.defineProperty(b.prototype, "height", {get:function() {
+      return this.yMax - this.yMin;
+    }, set:function(b) {
+      this.yMax = this.yMin + b;
+    }, enumerable:!0, configurable:!0});
+    b.prototype.getBaseWidth = function(b) {
+      return Math.abs(Math.cos(b)) * (this.xMax - this.xMin) + Math.abs(Math.sin(b)) * (this.yMax - this.yMin);
+    };
+    b.prototype.getBaseHeight = function(b) {
+      return Math.abs(Math.sin(b)) * (this.xMax - this.xMin) + Math.abs(Math.cos(b)) * (this.yMax - this.yMin);
+    };
+    b.prototype.setEmpty = function() {
       this.xMin = this.yMin = this.xMax = this.yMax = 0;
     };
-
-    Bounds.prototype.setToSentinels = function () {
-      this.xMin = this.yMin = this.xMax = this.yMax = 0x8000000;
-    };
-
-    Bounds.prototype.clone = function () {
-      return new Bounds(this.xMin, this.yMin, this.xMax, this.yMax);
-    };
-
-    Bounds.prototype.toString = function () {
-      return "{ " + "xMin: " + this.xMin + ", " + "xMin: " + this.yMin + ", " + "xMax: " + this.xMax + ", " + "xMax: " + this.yMax + " }";
-    };
-    return Bounds;
-  })();
-  Shumway.Bounds = Bounds;
-
-  var DebugBounds = (function () {
-    function DebugBounds(xMin, yMin, xMax, yMax) {
-      Debug.assert(isInteger(xMin));
-      Debug.assert(isInteger(yMin));
-      Debug.assert(isInteger(xMax));
-      Debug.assert(isInteger(yMax));
-      this._xMin = xMin | 0;
-      this._yMin = yMin | 0;
-      this._xMax = xMax | 0;
-      this._yMax = yMax | 0;
-      this.assertValid();
+    b.prototype.setToSentinels = function() {
+      this.xMin = this.yMin = this.xMax = this.yMax = 134217728;
+    };
+    b.prototype.clone = function() {
+      return new b(this.xMin, this.yMin, this.xMax, this.yMax);
+    };
+    b.prototype.toString = function() {
+      return "{ xMin: " + this.xMin + ", xMin: " + this.yMin + ", xMax: " + this.xMax + ", xMax: " + this.yMax + " }";
+    };
+    return b;
+  }();
+  d.Bounds = c;
+  c = function() {
+    function b(b, a, n, f) {
+      k.assert(m(b));
+      k.assert(m(a));
+      k.assert(m(n));
+      k.assert(m(f));
+      this._xMin = b | 0;
+      this._yMin = a | 0;
+      this._xMax = n | 0;
+      this._yMax = f | 0;
     }
-    DebugBounds.FromUntyped = function (source) {
-      return new DebugBounds(source.xMin, source.yMin, source.xMax, source.yMax);
-    };
-
-    DebugBounds.FromRectangle = function (source) {
-      return new DebugBounds(source.x * 20 | 0, source.y * 20 | 0, (source.x + source.width) * 20 | 0, (source.y + source.height) * 20 | 0);
-    };
-
-    DebugBounds.prototype.setElements = function (xMin, yMin, xMax, yMax) {
-      this.xMin = xMin;
-      this.yMin = yMin;
-      this.xMax = xMax;
-      this.yMax = yMax;
-    };
-
-    DebugBounds.prototype.copyFrom = function (source) {
-      this.setElements(source.xMin, source.yMin, source.xMax, source.yMax);
-    };
-
-    DebugBounds.prototype.contains = function (x, y) {
-      return x < this.xMin !== x < this.xMax && y < this.yMin !== y < this.yMax;
-    };
-
-    DebugBounds.prototype.unionWith = function (other) {
-      this._xMin = Math.min(this._xMin, other._xMin);
-      this._yMin = Math.min(this._yMin, other._yMin);
-      this._xMax = Math.max(this._xMax, other._xMax);
-      this._yMax = Math.max(this._yMax, other._yMax);
-    };
-
-    DebugBounds.prototype.extendByPoint = function (x, y) {
-      this.extendByX(x);
-      this.extendByY(y);
-    };
-
-    DebugBounds.prototype.extendByX = function (x) {
-      if (this.xMin === 0x8000000) {
-        this.xMin = this.xMax = x;
-        return;
-      }
-      this.xMin = Math.min(this.xMin, x);
-      this.xMax = Math.max(this.xMax, x);
-    };
-
-    DebugBounds.prototype.extendByY = function (y) {
-      if (this.yMin === 0x8000000) {
-        this.yMin = this.yMax = y;
-        return;
-      }
-      this.yMin = Math.min(this.yMin, y);
-      this.yMax = Math.max(this.yMax, y);
-    };
-
-    DebugBounds.prototype.intersects = function (toIntersect) {
-      return this.contains(toIntersect._xMin, toIntersect._yMin) || this.contains(toIntersect._xMax, toIntersect._yMax);
-    };
-
-    DebugBounds.prototype.isEmpty = function () {
+    b.FromUntyped = function(a) {
+      return new b(a.xMin, a.yMin, a.xMax, a.yMax);
+    };
+    b.FromRectangle = function(a) {
+      return new b(20 * a.x | 0, 20 * a.y | 0, 20 * (a.x + a.width) | 0, 20 * (a.y + a.height) | 0);
+    };
+    b.prototype.setElements = function(b, a, n, f) {
+      this.xMin = b;
+      this.yMin = a;
+      this.xMax = n;
+      this.yMax = f;
+    };
+    b.prototype.copyFrom = function(b) {
+      this.setElements(b.xMin, b.yMin, b.xMax, b.yMax);
+    };
+    b.prototype.contains = function(b, a) {
+      return b < this.xMin !== b < this.xMax && a < this.yMin !== a < this.yMax;
+    };
+    b.prototype.unionWith = function(b) {
+      this._xMin = Math.min(this._xMin, b._xMin);
+      this._yMin = Math.min(this._yMin, b._yMin);
+      this._xMax = Math.max(this._xMax, b._xMax);
+      this._yMax = Math.max(this._yMax, b._yMax);
+    };
+    b.prototype.extendByPoint = function(b, a) {
+      this.extendByX(b);
+      this.extendByY(a);
+    };
+    b.prototype.extendByX = function(b) {
+      134217728 === this.xMin ? this.xMin = this.xMax = b : (this.xMin = Math.min(this.xMin, b), this.xMax = Math.max(this.xMax, b));
+    };
+    b.prototype.extendByY = function(b) {
+      134217728 === this.yMin ? this.yMin = this.yMax = b : (this.yMin = Math.min(this.yMin, b), this.yMax = Math.max(this.yMax, b));
+    };
+    b.prototype.intersects = function(b) {
+      return this.contains(b._xMin, b._yMin) || this.contains(b._xMax, b._yMax);
+    };
+    b.prototype.isEmpty = function() {
       return this._xMax <= this._xMin || this._yMax <= this._yMin;
     };
-
-
-    Object.defineProperty(DebugBounds.prototype, "xMin", {
-      get: function () {
-        return this._xMin;
-      },
-      set: function (value) {
-        Debug.assert(isInteger(value));
-        this._xMin = value;
-        this.assertValid();
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-
-    Object.defineProperty(DebugBounds.prototype, "yMin", {
-      get: function () {
-        return this._yMin;
-      },
-      set: function (value) {
-        Debug.assert(isInteger(value));
-        this._yMin = value | 0;
-        this.assertValid();
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-
-    Object.defineProperty(DebugBounds.prototype, "xMax", {
-      get: function () {
-        return this._xMax;
-      },
-      set: function (value) {
-        Debug.assert(isInteger(value));
-        this._xMax = value | 0;
-        this.assertValid();
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-    Object.defineProperty(DebugBounds.prototype, "width", {
-      get: function () {
-        return this._xMax - this._xMin;
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-
-    Object.defineProperty(DebugBounds.prototype, "yMax", {
-      get: function () {
-        return this._yMax;
-      },
-      set: function (value) {
-        Debug.assert(isInteger(value));
-        this._yMax = value | 0;
-        this.assertValid();
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-    Object.defineProperty(DebugBounds.prototype, "height", {
-      get: function () {
-        return this._yMax - this._yMin;
-      },
-      enumerable: true,
-      configurable: true
-    });
-
-    DebugBounds.prototype.getBaseWidth = function (angle) {
-      var u = Math.abs(Math.cos(angle));
-      var v = Math.abs(Math.sin(angle));
-      return u * (this._xMax - this._xMin) + v * (this._yMax - this._yMin);
-    };
-
-    DebugBounds.prototype.getBaseHeight = function (angle) {
-      var u = Math.abs(Math.cos(angle));
-      var v = Math.abs(Math.sin(angle));
-      return v * (this._xMax - this._xMin) + u * (this._yMax - this._yMin);
-    };
-
-    DebugBounds.prototype.setEmpty = function () {
+    Object.defineProperty(b.prototype, "xMin", {get:function() {
+      return this._xMin;
+    }, set:function(b) {
+      k.assert(m(b));
+      this._xMin = b;
+    }, enumerable:!0, configurable:!0});
+    Object.defineProperty(b.prototype, "yMin", {get:function() {
+      return this._yMin;
+    }, set:function(b) {
+      k.assert(m(b));
+      this._yMin = b | 0;
+    }, enumerable:!0, configurable:!0});
+    Object.defineProperty(b.prototype, "xMax", {get:function() {
+      return this._xMax;
+    }, set:function(b) {
+      k.assert(m(b));
+      this._xMax = b | 0;
+    }, enumerable:!0, configurable:!0});
+    Object.defineProperty(b.prototype, "width", {get:function() {
+      return this._xMax - this._xMin;
+    }, enumerable:!0, configurable:!0});
+    Object.defineProperty(b.prototype, "yMax", {get:function() {
+      return this._yMax;
+    }, set:function(b) {
+      k.assert(m(b));
+      this._yMax = b | 0;
+    }, enumerable:!0, configurable:!0});
+    Object.defineProperty(b.prototype, "height", {get:function() {
+      return this._yMax - this._yMin;
+    }, enumerable:!0, configurable:!0});
+    b.prototype.getBaseWidth = function(b) {
+      return Math.abs(Math.cos(b)) * (this._xMax - this._xMin) + Math.abs(Math.sin(b)) * (this._yMax - this._yMin);
+    };
+    b.prototype.getBaseHeight = function(b) {
+      return Math.abs(Math.sin(b)) * (this._xMax - this._xMin) + Math.abs(Math.cos(b)) * (this._yMax - this._yMin);
+    };
+    b.prototype.setEmpty = function() {
       this._xMin = this._yMin = this._xMax = this._yMax = 0;
     };
-
-    DebugBounds.prototype.clone = function () {
-      return new DebugBounds(this.xMin, this.yMin, this.xMax, this.yMax);
-    };
-
-    DebugBounds.prototype.toString = function () {
-      return "{ " + "xMin: " + this._xMin + ", " + "xMin: " + this._yMin + ", " + "xMax: " + this._xMax + ", " + "xMax: " + this._yMax + " }";
-    };
-
-    DebugBounds.prototype.assertValid = function () {
-    };
-    return DebugBounds;
-  })();
-  Shumway.DebugBounds = DebugBounds;
-
-  var Color = (function () {
-    function Color(r, g, b, a) {
-      this.r = r;
-      this.g = g;
-      this.b = b;
-      this.a = a;
+    b.prototype.clone = function() {
+      return new b(this.xMin, this.yMin, this.xMax, this.yMax);
+    };
+    b.prototype.toString = function() {
+      return "{ xMin: " + this._xMin + ", xMin: " + this._yMin + ", xMax: " + this._xMax + ", yMax: " + this._yMax + " }";
+    };
+    b.prototype.assertValid = function() {
+    };
+    return b;
+  }();
+  d.DebugBounds = c;
+  c = function() {
+    function b(b, a, n, f) {
+      this.r = b;
+      this.g = a;
+      this.b = n;
+      this.a = f;
     }
-    Color.FromARGB = function (argb) {
-      return new Color((argb >> 16 & 0xFF) / 255, (argb >> 8 & 0xFF) / 255, (argb >> 0 & 0xFF) / 255, (argb >> 24 & 0xFF) / 255);
-    };
-    Color.FromRGBA = function (rgba) {
-      return Color.FromARGB(ColorUtilities.RGBAToARGB(rgba));
-    };
-    Color.prototype.toRGBA = function () {
-      return (this.r * 255) << 24 | (this.g * 255) << 16 | (this.b * 255) << 8 | (this.a * 255);
-    };
-    Color.prototype.toCSSStyle = function () {
-      return ColorUtilities.rgbaToCSSStyle(this.toRGBA());
-    };
-    Color.prototype.set = function (other) {
-      this.r = other.r;
-      this.g = other.g;
-      this.b = other.b;
-      this.a = other.a;
-    };
-
-    Color.randomColor = function (alpha) {
-      if (typeof alpha === "undefined") { alpha = 1; }
-      return new Color(Math.random(), Math.random(), Math.random(), alpha);
-    };
-    Color.parseColor = function (color) {
-      if (!Color.colorCache) {
-        Color.colorCache = Object.create(null);
-      }
-      if (Color.colorCache[color]) {
-        return Color.colorCache[color];
-      }
-
-      var span = document.createElement('span');
-      document.body.appendChild(span);
-      span.style.backgroundColor = color;
-      var rgb = getComputedStyle(span).backgroundColor;
-      document.body.removeChild(span);
-      var m = /^rgb\((\d+), (\d+), (\d+)\)$/.exec(rgb);
-      if (!m)
-        m = /^rgba\((\d+), (\d+), (\d+), ([\d.]+)\)$/.exec(rgb);
-      var result = new Color(0, 0, 0, 0);
-      result.r = parseFloat(m[1]) / 255;
-      result.g = parseFloat(m[2]) / 255;
-      result.b = parseFloat(m[3]) / 255;
-      result.a = m[4] ? parseFloat(m[4]) / 255 : 1;
-      return Color.colorCache[color] = result;
-    };
-    Color.Red = new Color(1, 0, 0, 1);
-    Color.Green = new Color(0, 1, 0, 1);
-    Color.Blue = new Color(0, 0, 1, 1);
-    Color.None = new Color(0, 0, 0, 0);
-    Color.White = new Color(1, 1, 1, 1);
-    Color.Black = new Color(0, 0, 0, 1);
-    Color.colorCache = {};
-    return Color;
-  })();
-  Shumway.Color = Color;
-
-  (function (ColorUtilities) {
-    function RGBAToARGB(rgba) {
-      return ((rgba >> 8) & 0x00ffffff) | ((rgba & 0xff) << 24);
-    }
-    ColorUtilities.RGBAToARGB = RGBAToARGB;
-
-    function ARGBToRGBA(argb) {
-      return argb << 8 | ((argb >> 24) & 0xff);
-    }
-    ColorUtilities.ARGBToRGBA = ARGBToRGBA;
-
-    function rgbaToCSSStyle(color) {
-      return Shumway.StringUtilities.concat9('rgba(', color >> 24 & 0xff, ',', color >> 16 & 0xff, ',', color >> 8 & 0xff, ',', (color & 0xff) / 0xff, ')');
-    }
-    ColorUtilities.rgbaToCSSStyle = rgbaToCSSStyle;
-
-    function cssStyleToRGBA(style) {
-      if (style[0] === "#") {
-        if (style.length === 7) {
-          var value = parseInt(style.substring(1), 16);
-          return (value << 8) | 0xff;
-        }
-      } else if (style[0] === "r") {
-        var values = style.substring(5, style.length - 1).split(",");
-        var r = parseInt(values[0]);
-        var g = parseInt(values[1]);
-        var b = parseInt(values[2]);
-        var a = parseFloat(values[3]);
-        return (r & 0xff) << 24 | (g & 0xff) << 16 | (b & 0xff) << 8 | ((a * 255) & 0xff);
-      }
-      return 0xff0000ff;
-    }
-    ColorUtilities.cssStyleToRGBA = cssStyleToRGBA;
-
-    function hexToRGB(color) {
-      return parseInt(color.slice(1), 16);
-    }
-    ColorUtilities.hexToRGB = hexToRGB;
-
-    function rgbToHex(color) {
-      return '#' + ('000000' + color.toString(16)).slice(-6);
+    b.FromARGB = function(a) {
+      return new b((a >> 16 & 255) / 255, (a >> 8 & 255) / 255, (a >> 0 & 255) / 255, (a >> 24 & 255) / 255);
+    };
+    b.FromRGBA = function(a) {
+      return b.FromARGB(l.RGBAToARGB(a));
+    };
+    b.prototype.toRGBA = function() {
+      return 255 * this.r << 24 | 255 * this.g << 16 | 255 * this.b << 8 | 255 * this.a;
+    };
+    b.prototype.toCSSStyle = function() {
+      return l.rgbaToCSSStyle(this.toRGBA());
+    };
+    b.prototype.set = function(b) {
+      this.r = b.r;
+      this.g = b.g;
+      this.b = b.b;
+      this.a = b.a;
+    };
+    b.randomColor = function(a) {
+      "undefined" === typeof a && (a = 1);
+      return new b(Math.random(), Math.random(), Math.random(), a);
+    };
+    b.parseColor = function(a) {
+      b.colorCache || (b.colorCache = Object.create(null));
+      if (b.colorCache[a]) {
+        return b.colorCache[a];
+      }
+      var c = document.createElement("span");
+      document.body.appendChild(c);
+      c.style.backgroundColor = a;
+      var n = getComputedStyle(c).backgroundColor;
+      document.body.removeChild(c);
+      (c = /^rgb\((\d+), (\d+), (\d+)\)$/.exec(n)) || (c = /^rgba\((\d+), (\d+), (\d+), ([\d.]+)\)$/.exec(n));
+      n = new b(0, 0, 0, 0);
+      n.r = parseFloat(c[1]) / 255;
+      n.g = parseFloat(c[2]) / 255;
+      n.b = parseFloat(c[3]) / 255;
+      n.a = c[4] ? parseFloat(c[4]) / 255 : 1;
+      return b.colorCache[a] = n;
+    };
+    b.Red = new b(1, 0, 0, 1);
+    b.Green = new b(0, 1, 0, 1);
+    b.Blue = new b(0, 0, 1, 1);
+    b.None = new b(0, 0, 0, 0);
+    b.White = new b(1, 1, 1, 1);
+    b.Black = new b(0, 0, 0, 1);
+    b.colorCache = {};
+    return b;
+  }();
+  d.Color = c;
+  (function(b) {
+    function a(f) {
+      var b, h, n = f >> 24 & 255;
+      h = (Math.imul(f >> 16 & 255, n) + 127) / 255 | 0;
+      b = (Math.imul(f >> 8 & 255, n) + 127) / 255 | 0;
+      f = (Math.imul(f >> 0 & 255, n) + 127) / 255 | 0;
+      return n << 24 | h << 16 | b << 8 | f;
     }
-    ColorUtilities.rgbToHex = rgbToHex;
-
-    function isValidHexColor(value) {
-      return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(value);
-    }
-    ColorUtilities.isValidHexColor = isValidHexColor;
-
-    function clampByte(value) {
-      return Math.max(0, Math.min(255, value));
-    }
-    ColorUtilities.clampByte = clampByte;
-
-    function unpremultiplyARGB(pARGB) {
-      var b = (pARGB >> 0) & 0xff;
-      var g = (pARGB >> 8) & 0xff;
-      var r = (pARGB >> 16) & 0xff;
-      var a = (pARGB >> 24) & 0xff;
-      r = Math.imul(255, r) / a & 0xff;
-      g = Math.imul(255, g) / a & 0xff;
-      b = Math.imul(255, b) / a & 0xff;
-      return a << 24 | r << 16 | g << 8 | b;
-    }
-    ColorUtilities.unpremultiplyARGB = unpremultiplyARGB;
-
-    function premultiplyARGB(uARGB) {
-      var b = (uARGB >> 0) & 0xff;
-      var g = (uARGB >> 8) & 0xff;
-      var r = (uARGB >> 16) & 0xff;
-      var a = (uARGB >> 24) & 0xff;
-      r = ((Math.imul(r, a) + 127) / 255) | 0;
-      g = ((Math.imul(g, a) + 127) / 255) | 0;
-      b = ((Math.imul(b, a) + 127) / 255) | 0;
-      return a << 24 | r << 16 | g << 8 | b;
-    }
-    ColorUtilities.premultiplyARGB = premultiplyARGB;
-
-    var premultiplyTable;
-
-    var unpremultiplyTable;
-
-    function ensureUnpremultiplyTable() {
-      if (!unpremultiplyTable) {
-        unpremultiplyTable = new Uint8Array(256 * 256);
-        for (var c = 0; c < 256; c++) {
-          for (var a = 0; a < 256; a++) {
-            unpremultiplyTable[(a << 8) + c] = Math.imul(255, c) / a;
-          }
-        }
-      }
-    }
-    ColorUtilities.ensureUnpremultiplyTable = ensureUnpremultiplyTable;
-
-    function tableLookupUnpremultiplyARGB(pARGB) {
-      pARGB = pARGB | 0;
-      var a = (pARGB >> 24) & 0xff;
-      if (a === 0) {
+    b.RGBAToARGB = function(f) {
+      return f >> 8 & 16777215 | (f & 255) << 24;
+    };
+    b.ARGBToRGBA = function(f) {
+      return f << 8 | f >> 24 & 255;
+    };
+    b.rgbaToCSSStyle = function(f) {
+      return d.StringUtilities.concat9("rgba(", f >> 24 & 255, ",", f >> 16 & 255, ",", f >> 8 & 255, ",", (f & 255) / 255, ")");
+    };
+    b.cssStyleToRGBA = function(f) {
+      if ("#" === f[0]) {
+        if (7 === f.length) {
+          return parseInt(f.substring(1), 16) << 8 | 255;
+        }
+      } else {
+        if ("r" === f[0]) {
+          return f = f.substring(5, f.length - 1).split(","), (parseInt(f[0]) & 255) << 24 | (parseInt(f[1]) & 255) << 16 | (parseInt(f[2]) & 255) << 8 | 255 * parseFloat(f[3]) & 255;
+        }
+      }
+      return 4278190335;
+    };
+    b.hexToRGB = function(f) {
+      return parseInt(f.slice(1), 16);
+    };
+    b.rgbToHex = function(f) {
+      return "#" + ("000000" + f.toString(16)).slice(-6);
+    };
+    b.isValidHexColor = function(f) {
+      return/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(f);
+    };
+    b.clampByte = function(f) {
+      return Math.max(0, Math.min(255, f));
+    };
+    b.unpremultiplyARGB = function(f) {
+      var b, a, h = f >> 24 & 255;
+      a = Math.imul(255, f >> 16 & 255) / h & 255;
+      b = Math.imul(255, f >> 8 & 255) / h & 255;
+      f = Math.imul(255, f >> 0 & 255) / h & 255;
+      return h << 24 | a << 16 | b << 8 | f;
+    };
+    b.premultiplyARGB = a;
+    var c;
+    b.ensureUnpremultiplyTable = function() {
+      if (!c) {
+        c = new Uint8Array(65536);
+        for (var f = 0;256 > f;f++) {
+          for (var b = 0;256 > b;b++) {
+            c[(b << 8) + f] = Math.imul(255, f) / b;
+          }
+        }
+      }
+    };
+    b.tableLookupUnpremultiplyARGB = function(f) {
+      f |= 0;
+      var b = f >> 24 & 255;
+      if (0 === b) {
         return 0;
       }
-      var b = (pARGB >> 0) & 0xff;
-      var g = (pARGB >> 8) & 0xff;
-      var r = (pARGB >> 16) & 0xff;
-      var o = a << 8;
-      r = unpremultiplyTable[o + r];
-      g = unpremultiplyTable[o + g];
-      b = unpremultiplyTable[o + b];
-      return a << 24 | r << 16 | g << 8 | b;
-    }
-    ColorUtilities.tableLookupUnpremultiplyARGB = tableLookupUnpremultiplyARGB;
-
-    var inverseSourceAlphaTable;
-
-    function ensureInverseSourceAlphaTable() {
-      if (inverseSourceAlphaTable) {
-        return;
-      }
-      inverseSourceAlphaTable = new Float64Array(256);
-      for (var a = 0; a < 255; a++) {
-        inverseSourceAlphaTable[a] = 1 - a / 255;
-      }
-    }
-    ColorUtilities.ensureInverseSourceAlphaTable = ensureInverseSourceAlphaTable;
-
-    function blendPremultipliedBGRA(tpBGRA, spBGRA) {
-      var ta = (tpBGRA >> 0) & 0xff;
-      var tr = (tpBGRA >> 8) & 0xff;
-      var tg = (tpBGRA >> 16) & 0xff;
-      var tb = (tpBGRA >> 24) & 0xff;
-
-      var sa = (spBGRA >> 0) & 0xff;
-      var sr = (spBGRA >> 8) & 0xff;
-      var sg = (spBGRA >> 16) & 0xff;
-      var sb = (spBGRA >> 24) & 0xff;
-
-      var inverseSourceAlpha = inverseSourceAlphaTable[sa];
-      var ta = sa + ta * inverseSourceAlpha;
-      var tr = sr + tr * inverseSourceAlpha;
-      var tg = sg + tg * inverseSourceAlpha;
-      var tb = sb + tb * inverseSourceAlpha;
-      return tb << 24 | tg << 16 | tr << 8 | ta;
+      if (255 === b) {
+        return f;
+      }
+      var a, h, n = b << 8, g = c;
+      h = g[n + (f >> 16 & 255)];
+      a = g[n + (f >> 8 & 255)];
+      f = g[n + (f >> 0 & 255)];
+      return b << 24 | h << 16 | a << 8 | f;
+    };
+    b.blendPremultipliedBGRA = function(f, b) {
+      var a, h;
+      h = 256 - (b & 255);
+      a = Math.imul(f & 16711935, h) >> 8;
+      h = Math.imul(f >> 8 & 16711935, h) >> 8;
+      return((b >> 8 & 16711935) + h & 16711935) << 8 | (b & 16711935) + a & 16711935;
+    };
+    var n = v.swap32;
+    b.convertImage = function(f, b, g, p) {
+      g !== p && k.assert(g.buffer !== p.buffer, "Can't handle overlapping views.");
+      var l = g.length;
+      if (f === b) {
+        if (g !== p) {
+          for (f = 0;f < l;f++) {
+            p[f] = g[f];
+          }
+        }
+      } else {
+        if (1 === f && 3 === b) {
+          for (d.ColorUtilities.ensureUnpremultiplyTable(), f = 0;f < l;f++) {
+            var v = g[f];
+            b = v & 255;
+            if (0 === b) {
+              p[f] = 0;
+            } else {
+              if (255 === b) {
+                p[f] = (v & 255) << 24 | v >> 8 & 16777215;
+              } else {
+                var e = v >> 24 & 255, u = v >> 16 & 255, v = v >> 8 & 255, t = b << 8, m = c, v = m[t + v], u = m[t + u], e = m[t + e];
+                p[f] = b << 24 | e << 16 | u << 8 | v;
+              }
+            }
+          }
+        } else {
+          if (2 === f && 3 === b) {
+            for (f = 0;f < l;f++) {
+              p[f] = n(g[f]);
+            }
+          } else {
+            if (3 === f && 1 === b) {
+              for (f = 0;f < l;f++) {
+                b = g[f], p[f] = n(a(b & 4278255360 | b >> 16 & 255 | (b & 255) << 16));
+              }
+            } else {
+              for (k.somewhatImplemented("Image Format Conversion: " + r[f] + " -> " + r[b]), f = 0;f < l;f++) {
+                p[f] = g[f];
+              }
+            }
+          }
+        }
+      }
+    };
+  })(d.ColorUtilities || (d.ColorUtilities = {}));
+  var l = d.ColorUtilities, c = function() {
+    function b(b) {
+      "undefined" === typeof b && (b = 32);
+      this._list = [];
+      this._maxSize = b;
     }
-    ColorUtilities.blendPremultipliedBGRA = blendPremultipliedBGRA;
-  })(Shumway.ColorUtilities || (Shumway.ColorUtilities = {}));
-  var ColorUtilities = Shumway.ColorUtilities;
-
-  var ArrayBufferPool = (function () {
-    function ArrayBufferPool(maxSize) {
-      if (typeof maxSize === "undefined") { maxSize = 32; }
-      this._list = [];
-      this._maxSize = maxSize;
+    b.prototype.acquire = function(a) {
+      if (b._enabled) {
+        for (var c = this._list, n = 0;n < c.length;n++) {
+          var f = c[n];
+          if (f.byteLength >= a) {
+            return c.splice(n, 1), f;
+          }
+        }
+      }
+      return new ArrayBuffer(a);
+    };
+    b.prototype.release = function(h) {
+      if (b._enabled) {
+        var c = this._list;
+        k.assert(0 > a.indexOf(c, h));
+        c.length === this._maxSize && c.shift();
+        c.push(h);
+      }
+    };
+    b.prototype.ensureUint8ArrayLength = function(b, a) {
+      if (b.length >= a) {
+        return b;
+      }
+      var c = Math.max(b.length + a, (3 * b.length >> 1) + 1), c = new Uint8Array(this.acquire(c), 0, c);
+      c.set(b);
+      this.release(b.buffer);
+      return c;
+    };
+    b.prototype.ensureFloat64ArrayLength = function(b, a) {
+      if (b.length >= a) {
+        return b;
+      }
+      var c = Math.max(b.length + a, (3 * b.length >> 1) + 1), c = new Float64Array(this.acquire(c * Float64Array.BYTES_PER_ELEMENT), 0, c);
+      c.set(b);
+      this.release(b.buffer);
+      return c;
+    };
+    b._enabled = !0;
+    return b;
+  }();
+  d.ArrayBufferPool = c;
+  (function(b) {
+    (function(b) {
+      b[b.EXTERNAL_INTERFACE_FEATURE = 1] = "EXTERNAL_INTERFACE_FEATURE";
+      b[b.CLIPBOARD_FEATURE = 2] = "CLIPBOARD_FEATURE";
+      b[b.SHAREDOBJECT_FEATURE = 3] = "SHAREDOBJECT_FEATURE";
+      b[b.VIDEO_FEATURE = 4] = "VIDEO_FEATURE";
+      b[b.SOUND_FEATURE = 5] = "SOUND_FEATURE";
+      b[b.NETCONNECTION_FEATURE = 6] = "NETCONNECTION_FEATURE";
+    })(b.Feature || (b.Feature = {}));
+    (function(b) {
+      b[b.AVM1_ERROR = 1] = "AVM1_ERROR";
+      b[b.AVM2_ERROR = 2] = "AVM2_ERROR";
+    })(b.ErrorTypes || (b.ErrorTypes = {}));
+    b.instance;
+  })(d.Telemetry || (d.Telemetry = {}));
+  (function(b) {
+    b.instance;
+  })(d.FileLoadingService || (d.FileLoadingService = {}));
+  (function(b) {
+    b.instance = {enabled:!1, initJS:function(b) {
+    }, registerCallback:function(b) {
+    }, unregisterCallback:function(b) {
+    }, eval:function(b) {
+    }, call:function(b) {
+    }, getId:function() {
+      return null;
+    }};
+  })(d.ExternalInterfaceService || (d.ExternalInterfaceService = {}));
+  c = function() {
+    function b() {
     }
-    ArrayBufferPool.prototype.acquire = function (length) {
-      if (ArrayBufferPool._enabled) {
-        var list = this._list;
-        for (var i = 0; i < list.length; i++) {
-          var buffer = list[i];
-          if (buffer.byteLength >= length) {
-            list.splice(i, 1);
-            return buffer;
-          }
-        }
-      }
-      return new ArrayBuffer(length);
-    };
-
-    ArrayBufferPool.prototype.release = function (buffer) {
-      if (ArrayBufferPool._enabled) {
-        var list = this._list;
-        release || Debug.assert(ArrayUtilities.indexOf(list, buffer) < 0);
-        if (list.length === this._maxSize) {
-          list.shift();
-        }
-        list.push(buffer);
-      }
-    };
-
-    ArrayBufferPool.prototype.ensureUint8ArrayLength = function (array, length) {
-      if (array.length >= length) {
-        return array;
-      }
-      var newLength = Math.max(array.length + length, ((array.length * 3) >> 1) + 1);
-      var newArray = new Uint8Array(this.acquire(newLength), 0, newLength);
-      newArray.set(array);
-      this.release(array.buffer);
-      return newArray;
-    };
-
-    ArrayBufferPool.prototype.ensureFloat64ArrayLength = function (array, length) {
-      if (array.length >= length) {
-        return array;
-      }
-      var newLength = Math.max(array.length + length, ((array.length * 3) >> 1) + 1);
-      var newArray = new Float64Array(this.acquire(newLength * Float64Array.BYTES_PER_ELEMENT), 0, newLength);
-      newArray.set(array);
-      this.release(array.buffer);
-      return newArray;
-    };
-    ArrayBufferPool._enabled = true;
-    return ArrayBufferPool;
-  })();
-  Shumway.ArrayBufferPool = ArrayBufferPool;
-
-  (function (Telemetry) {
-    (function (Feature) {
-      Feature[Feature["EXTERNAL_INTERFACE_FEATURE"] = 1] = "EXTERNAL_INTERFACE_FEATURE";
-      Feature[Feature["CLIPBOARD_FEATURE"] = 2] = "CLIPBOARD_FEATURE";
-      Feature[Feature["SHAREDOBJECT_FEATURE"] = 3] = "SHAREDOBJECT_FEATURE";
-      Feature[Feature["VIDEO_FEATURE"] = 4] = "VIDEO_FEATURE";
-      Feature[Feature["SOUND_FEATURE"] = 5] = "SOUND_FEATURE";
-      Feature[Feature["NETCONNECTION_FEATURE"] = 6] = "NETCONNECTION_FEATURE";
-    })(Telemetry.Feature || (Telemetry.Feature = {}));
-    var Feature = Telemetry.Feature;
-
-    (function (ErrorTypes) {
-      ErrorTypes[ErrorTypes["AVM1_ERROR"] = 1] = "AVM1_ERROR";
-      ErrorTypes[ErrorTypes["AVM2_ERROR"] = 2] = "AVM2_ERROR";
-    })(Telemetry.ErrorTypes || (Telemetry.ErrorTypes = {}));
-    var ErrorTypes = Telemetry.ErrorTypes;
-
-    Telemetry.instance;
-  })(Shumway.Telemetry || (Shumway.Telemetry = {}));
-  var Telemetry = Shumway.Telemetry;
-
-  (function (FileLoadingService) {
-    FileLoadingService.instance;
-  })(Shumway.FileLoadingService || (Shumway.FileLoadingService = {}));
-  var FileLoadingService = Shumway.FileLoadingService;
-
-  (function (ExternalInterfaceService) {
-    ExternalInterfaceService.instance = {
-      enabled: false,
-      initJS: function (callback) {
-      },
-      registerCallback: function (functionName) {
-      },
-      unregisterCallback: function (functionName) {
-      },
-      eval: function (expression) {
-      },
-      call: function (request) {
-      },
-      getId: function () {
-        return null;
-      }
-    };
-  })(Shumway.ExternalInterfaceService || (Shumway.ExternalInterfaceService = {}));
-  var ExternalInterfaceService = Shumway.ExternalInterfaceService;
-
-  var Callback = (function () {
-    function Callback() {
+    b.prototype.setClipboard = function(b) {
+      k.abstractMethod("public ClipboardService::setClipboard");
+    };
+    b.instance = null;
+    return b;
+  }();
+  d.ClipboardService = c;
+  c = function() {
+    function b() {
       this._queues = {};
     }
-    Callback.prototype.register = function (type, callback) {
-      Debug.assert(type);
-      Debug.assert(callback);
-      var queue = this._queues[type];
-      if (queue) {
-        if (queue.indexOf(callback) > -1) {
+    b.prototype.register = function(b, a) {
+      k.assert(b);
+      k.assert(a);
+      var c = this._queues[b];
+      if (c) {
+        if (-1 < c.indexOf(a)) {
           return;
         }
       } else {
-        queue = this._queues[type] = [];
-      }
-      queue.push(callback);
-    };
-
-    Callback.prototype.unregister = function (type, callback) {
-      Debug.assert(type);
-      Debug.assert(callback);
-      var queue = this._queues[type];
-      if (!queue) {
-        return;
-      }
-      var i = queue.indexOf(callback);
-      if (i !== -1) {
-        queue.splice(i, 1);
-      }
-      if (queue.length === 0) {
-        this._queues[type] = null;
-      }
-    };
-
-    Callback.prototype.notify = function (type, args) {
-      var queue = this._queues[type];
-      if (!queue) {
-        return;
-      }
-      queue = queue.slice();
-      var args = Array.prototype.slice.call(arguments, 0);
-      for (var i = 0; i < queue.length; i++) {
-        var callback = queue[i];
-        callback.apply(null, args);
-      }
-    };
-
-    Callback.prototype.notify1 = function (type, value) {
-      var queue = this._queues[type];
-      if (!queue) {
-        return;
-      }
-      queue = queue.slice();
-      for (var i = 0; i < queue.length; i++) {
-        var callback = queue[i];
-        callback(type, value);
-      }
-    };
-    return Callback;
-  })();
-  Shumway.Callback = Callback;
-
-  (function (ImageType) {
-    ImageType[ImageType["None"] = 0] = "None";
-
-    ImageType[ImageType["PremultipliedAlphaARGB"] = 1] = "PremultipliedAlphaARGB";
-
-    ImageType[ImageType["StraightAlphaARGB"] = 2] = "StraightAlphaARGB";
-
-    ImageType[ImageType["StraightAlphaRGBA"] = 3] = "StraightAlphaRGBA";
-
-    ImageType[ImageType["JPEG"] = 4] = "JPEG";
-    ImageType[ImageType["PNG"] = 5] = "PNG";
-    ImageType[ImageType["GIF"] = 6] = "GIF";
-  })(Shumway.ImageType || (Shumway.ImageType = {}));
-  var ImageType = Shumway.ImageType;
-
-  var PromiseWrapper = (function () {
-    function PromiseWrapper() {
-      this.promise = new Promise(function (resolve, reject) {
-        this.resolve = resolve;
-        this.reject = reject;
+        c = this._queues[b] = [];
+      }
+      c.push(a);
+    };
+    b.prototype.unregister = function(b, a) {
+      k.assert(b);
+      k.assert(a);
+      var c = this._queues[b];
+      if (c) {
+        var f = c.indexOf(a);
+        -1 !== f && c.splice(f, 1);
+        0 === c.length && (this._queues[b] = null);
+      }
+    };
+    b.prototype.notify = function(b, a) {
+      var c = this._queues[b];
+      if (c) {
+        c = c.slice();
+        a = Array.prototype.slice.call(arguments, 0);
+        for (var f = 0;f < c.length;f++) {
+          c[f].apply(null, a);
+        }
+      }
+    };
+    b.prototype.notify1 = function(b, a) {
+      var c = this._queues[b];
+      if (c) {
+        for (var c = c.slice(), f = 0;f < c.length;f++) {
+          (0,c[f])(b, a);
+        }
+      }
+    };
+    return b;
+  }();
+  d.Callback = c;
+  (function(b) {
+    b[b.None = 0] = "None";
+    b[b.PremultipliedAlphaARGB = 1] = "PremultipliedAlphaARGB";
+    b[b.StraightAlphaARGB = 2] = "StraightAlphaARGB";
+    b[b.StraightAlphaRGBA = 3] = "StraightAlphaRGBA";
+    b[b.JPEG = 4] = "JPEG";
+    b[b.PNG = 5] = "PNG";
+    b[b.GIF = 6] = "GIF";
+  })(d.ImageType || (d.ImageType = {}));
+  var r = d.ImageType;
+  d.PromiseWrapper = function() {
+    return function() {
+      this.promise = new Promise(function(b, a) {
+        this.resolve = b;
+        this.reject = a;
       }.bind(this));
-    }
-    return PromiseWrapper;
-  })();
-  Shumway.PromiseWrapper = PromiseWrapper;
+    };
+  }();
 })(Shumway || (Shumway = {}));
-
-(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;
-      };
+(function() {
+  function d(b) {
+    if ("function" !== typeof b) {
+      throw new TypeError("Invalid deferred constructor");
     }
-    if (typeof global.Promise.resolve !== 'function') {
-      global.Promise.resolve = function (x) {
-        return new global.Promise(function (resolve) {
-          resolve(x);
-        });
-      };
+    var f = u();
+    b = new b(f);
+    var a = f.resolve;
+    if ("function" !== typeof a) {
+      throw new TypeError("Invalid resolve construction function");
     }
-    return;
+    f = f.reject;
+    if ("function" !== typeof f) {
+      throw new TypeError("Invalid reject construction function");
+    }
+    return{promise:b, resolve:a, reject:f};
   }
-
-  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');
+  function m(b, f) {
+    if ("object" !== typeof b || null === b) {
+      return!1;
     }
-    return { promise: promise, resolve: resolve, reject: reject };
-  }
-
-  function updateDeferredFromPotentialThenable(x, deferred) {
-    if (typeof x !== 'object' || x === null) {
-      return false;
+    try {
+      var a = b.then;
+      if ("function" !== typeof a) {
+        return!1;
+      }
+      a.call(b, f.resolve, f.reject);
+    } catch (c) {
+      a = f.reject, a(c);
     }
-    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';
+    return!0;
   }
-
-  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 s(b) {
+    return "object" === typeof b && null !== b && "undefined" !== typeof b.promiseStatus;
   }
-
-  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 e(b, f) {
+    if ("unresolved" === b.promiseStatus) {
+      var a = b.rejectReactions;
+      b.result = f;
+      b.resolveReactions = void 0;
+      b.rejectReactions = void 0;
+      b.promiseStatus = "has-rejection";
+      t(a, f);
     }
   }
-
-  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 t(b, f) {
+    for (var a = 0;a < b.length;a++) {
+      k({reaction:b[a], argument:f});
     }
   }
-
-  function throwerFunction(e) {
-    throw e;
-  }
-
-  function identityFunction(x) {
-    return x;
+  function k(b) {
+    0 === w.length && setTimeout(a, 0);
+    w.push(b);
   }
-
-  function createRejectPromiseFunction(promise) {
-    return function (reason) {
-      rejectPromise(promise, reason);
-    };
+  function a() {
+    for (;0 < w.length;) {
+      var a = w[0];
+      try {
+        a: {
+          var f = a.reaction, c = f.deferred, h = f.handler, g = void 0, p = void 0;
+          try {
+            g = h(a.argument);
+          } catch (r) {
+            var l = c.reject;
+            l(r);
+            break a;
+          }
+          if (g === c.promise) {
+            l = c.reject, l(new TypeError("Self resolution"));
+          } else {
+            try {
+              if (p = m(g, c), !p) {
+                var k = c.resolve;
+                k(g);
+              }
+            } catch (v) {
+              l = c.reject, l(v);
+            }
+          }
+        }
+      } catch (e) {
+        if ("function" === typeof b.onerror) {
+          b.onerror(e);
+        }
+      }
+      w.shift();
+    }
   }
-
-  function createResolvePromiseFunction(promise) {
-    return function (resolution) {
-      resolvePromise(promise, resolution);
+  function c(b) {
+    throw b;
+  }
+  function g(b) {
+    return b;
+  }
+  function p(b) {
+    return function(f) {
+      e(b, f);
     };
   }
-
-  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 v(b) {
+    return function(f) {
+      if ("unresolved" === b.promiseStatus) {
+        var a = b.resolveReactions;
+        b.result = f;
+        b.resolveReactions = void 0;
+        b.rejectReactions = void 0;
+        b.promiseStatus = "has-resolution";
+        t(a, f);
       }
     };
   }
-
-  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);
+  function u() {
+    function b(f, a) {
+      b.resolve = f;
+      b.reject = a;
     }
-
-    promise.promiseConstructor = Promise;
-    return promise;
+    return b;
+  }
+  function l(b, f, a) {
+    return function(c) {
+      if (c === b) {
+        return a(new TypeError("Self resolution"));
+      }
+      var h = b.promiseConstructor;
+      if (s(c) && c.promiseConstructor === h) {
+        return c.then(f, a);
+      }
+      h = d(h);
+      return m(c, h) ? h.promise.then(f, a) : f(c);
+    };
   }
-
-  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);
+  function r(b, f, a, c) {
+    return function(h) {
+      f[b] = h;
+      c.countdown--;
+      0 === c.countdown && a.resolve(f);
+    };
+  }
+  function b(a) {
+    if ("function" !== typeof a) {
+      throw new TypeError("resolver is not a function");
     }
-    return deferred.promise;
-  };
-  Promise.cast = function (x) {
-    if (isPromise(x)) {
-      return x;
+    if ("object" !== typeof this) {
+      throw new TypeError("Promise to initialize is not an object");
+    }
+    this.promiseStatus = "unresolved";
+    this.resolveReactions = [];
+    this.rejectReactions = [];
+    this.result = void 0;
+    var f = v(this), c = p(this);
+    try {
+      a(f, c);
+    } catch (h) {
+      e(this, h);
     }
-    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);
+    this.promiseConstructor = b;
+    return this;
+  }
+  var h = Function("return this")();
+  if (h.Promise) {
+    "function" !== typeof h.Promise.all && (h.Promise.all = function(b) {
+      var f = 0, a = [], c, g, p = new h.Promise(function(b, f) {
+        c = b;
+        g = f;
+      });
+      b.forEach(function(b, h) {
+        f++;
+        b.then(function(b) {
+          a[h] = b;
+          f--;
+          0 === f && c(a);
+        }, g);
+      });
+      0 === f && c(a);
+      return p;
+    }), "function" !== typeof h.Promise.resolve && (h.Promise.resolve = function(b) {
+      return new h.Promise(function(f) {
+        f(b);
+      });
+    });
+  } else {
+    var w = [];
+    b.all = function(b) {
+      var f = d(this), a = [], c = {countdown:0}, h = 0;
+      b.forEach(function(b) {
+        this.cast(b).then(r(h, a, f, c), f.reject);
+        h++;
+        c.countdown++;
+      }, this);
+      0 === h && f.resolve(a);
+      return f.promise;
+    };
+    b.cast = function(b) {
+      if (s(b)) {
+        return b;
+      }
+      var f = d(this);
+      f.resolve(b);
+      return f.promise;
+    };
+    b.reject = function(b) {
+      var f = d(this);
+      f.reject(b);
+      return f.promise;
+    };
+    b.resolve = function(b) {
+      var f = d(this);
+      f.resolve(b);
+      return f.promise;
+    };
+    b.prototype = {"catch":function(b) {
+      this.then(void 0, b);
+    }, then:function(b, f) {
+      if (!s(this)) {
+        throw new TypeError("this is not a Promises");
+      }
+      var a = d(this.promiseConstructor), h = "function" === typeof f ? f : c, p = {deferred:a, handler:l(this, "function" === typeof b ? b : g, h)}, h = {deferred:a, handler:h};
+      switch(this.promiseStatus) {
+        case "unresolved":
+          this.resolveReactions.push(p);
+          this.rejectReactions.push(h);
           break;
-        case 'has-resolution':
-          var resolution = promise.result;
-          queueMicrotask({ reaction: resolveReaction, argument: resolution });
+        case "has-resolution":
+          k({reaction:p, argument:this.result});
           break;
-        case 'has-rejection':
-          var rejection = promise.result;
-          queueMicrotask({ reaction: rejectReaction, argument: rejection });
-          break;
-      }
-      return deferred.promise;
+        case "has-rejection":
+          k({reaction:h, argument:this.result});
+      }
+      return a.promise;
+    }};
+    h.Promise = b;
+  }
+})();
+"undefined" !== typeof exports && (exports.Shumway = Shumway);
+(function() {
+  function d(d, s, e) {
+    d[s] || Object.defineProperty(d, s, {value:e, writable:!0, configurable:!0, enumerable:!1});
+  }
+  d(String.prototype, "padRight", function(d, s) {
+    var e = this, t = e.replace(/\033\[[0-9]*m/g, "").length;
+    if (!d || t >= s) {
+      return e;
     }
-  };
-
-  global.Promise = Promise;
-})();
-
-if (typeof exports !== "undefined") {
-  exports["Shumway"] = Shumway;
-}
-
-(function () {
-  function extendBuiltin(prototype, property, value) {
-    if (!prototype[property]) {
-      Object.defineProperty(prototype, property, {
-        value: value,
-        writable: true,
-        configurable: true,
-        enumerable: false });
+    for (var t = (s - t) / d.length, k = 0;k < t;k++) {
+      e += d;
     }
-  }
-
-  function removeColors(s) {
-    return s.replace(/\033\[[0-9]*m/g, "");
-  }
-
-  extendBuiltin(String.prototype, "padRight", function (c, n) {
-    var str = this;
-    var length = removeColors(str).length;
-    if (!c || length >= n) {
-      return str;
-    }
-    var max = (n - length) / c.length;
-    for (var i = 0; i < max; i++) {
-      str += c;
+    return e;
+  });
+  d(String.prototype, "padLeft", function(d, s) {
+    var e = this, t = e.length;
+    if (!d || t >= s) {
+      return e;
     }
-    return str;
-  });
-
-  extendBuiltin(String.prototype, "padLeft", function (c, n) {
-    var str = this;
-    var length = str.length;
-    if (!c || length >= n) {
-      return str;
+    for (var t = (s - t) / d.length, k = 0;k < t;k++) {
+      e = d + e;
     }
-    var max = (n - length) / c.length;
-    for (var i = 0; i < max; i++) {
-      str = c + str;
-    }
-    return str;
+    return e;
   });
-
-  extendBuiltin(String.prototype, "trim", function () {
+  d(String.prototype, "trim", function() {
     return this.replace(/^\s+|\s+$/g, "");
   });
-
-  extendBuiltin(String.prototype, "endsWith", function (str) {
-    return this.indexOf(str, this.length - str.length) !== -1;
+  d(String.prototype, "endsWith", function(d) {
+    return-1 !== this.indexOf(d, this.length - d.length);
   });
-
-  extendBuiltin(Array.prototype, "replace", function (x, y) {
-    if (x === y) {
+  d(Array.prototype, "replace", function(d, s) {
+    if (d === s) {
       return 0;
     }
-    var count = 0;
-    for (var i = 0; i < this.length; i++) {
-      if (this[i] === x) {
-        this[i] = y;
-        count++;
-      }
+    for (var e = 0, t = 0;t < this.length;t++) {
+      this[t] === d && (this[t] = s, e++);
     }
-    return count;
+    return e;
   });
 })();
-var Shumway;
-(function (Shumway) {
-  (function (Options) {
-    var isObject = Shumway.isObject;
-
-    var assert = Shumway.Debug.assert;
-
-    var Argument = (function () {
-      function Argument(shortName, longName, type, options) {
-        this.shortName = shortName;
-        this.longName = longName;
-        this.type = type;
-        options = options || {};
-        this.positional = options.positional;
-        this.parseFn = options.parse;
-        this.value = options.defaultValue;
-      }
-      Argument.prototype.parse = function (value) {
-        if (this.type === "boolean") {
-          release || assert(typeof value === "boolean");
-          this.value = value;
-        } else if (this.type === "number") {
-          release || assert(!isNaN(value), value + " is not a number");
-          this.value = parseInt(value, 10);
-        } else {
-          this.value = value;
-        }
-        if (this.parseFn) {
-          this.parseFn(this.value);
-        }
-      };
-      return Argument;
-    })();
-    Options.Argument = Argument;
-
-    var ArgumentParser = (function () {
-      function ArgumentParser() {
+(function(d) {
+  (function(m) {
+    var s = d.isObject, e = d.Debug.assert, t = function() {
+      function a(c, g, k, l) {
+        this.shortName = c;
+        this.longName = g;
+        this.type = k;
+        l = l || {};
+        this.positional = l.positional;
+        this.parseFn = l.parse;
+        this.value = l.defaultValue;
+      }
+      a.prototype.parse = function(a) {
+        "boolean" === this.type ? (e("boolean" === typeof a), this.value = a) : "number" === this.type ? (e(!isNaN(a), a + " is not a number"), this.value = parseInt(a, 10)) : this.value = a;
+        this.parseFn && this.parseFn(this.value);
+      };
+      return a;
+    }();
+    m.Argument = t;
+    var k = function() {
+      function g() {
         this.args = [];
       }
-      ArgumentParser.prototype.addArgument = function (shortName, longName, type, options) {
-        var argument = new Argument(shortName, longName, type, options);
-        this.args.push(argument);
-        return argument;
-      };
-      ArgumentParser.prototype.addBoundOption = function (option) {