// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.10.4.
// The code supports the following hooks:
// dartPrint(message):
//    if this function is defined it is called instead of the Dart [print]
//    method.
//
// dartMainRunner(main, args):
//    if this function is defined, the Dart [main] method will not be invoked
//    directly. Instead, a closure that will invoke [main], and its arguments
//    [args] is passed to [dartMainRunner].
//
// dartDeferredLibraryLoader(uri, successCallback, errorCallback, loadId, loadPriority):
//    if this function is defined, it will be called when a deferred library
//    is loaded. It should load and eval the javascript of `uri`, and call
//    successCallback. If it fails to do so, it should call errorCallback with
//    an error. The loadId argument is the deferred import that resulted in
//    this uri being loaded. The loadPriority argument is an arbitrary argument
//    string forwarded from the 'dart2js:load-priority' pragma option.
// dartDeferredLibraryMultiLoader(uris, successCallback, errorCallback, loadId, loadPriority):
//    if this function is defined, it will be called when a deferred library
//    is loaded. It should load and eval the javascript of every URI in `uris`,
//    and call successCallback. If it fails to do so, it should call
//    errorCallback with an error. The loadId argument is the deferred import
//    that resulted in this uri being loaded. The loadPriority argument is an
//    arbitrary argument string forwarded from the 'dart2js:load-priority'
//    pragma option.
//
// dartCallInstrumentation(id, qualifiedName):
//    if this function is defined, it will be called at each entry of a
//    method or constructor. Used only when compiling programs with
//    --experiment-call-instrumentation.
(function dartProgram() {
  function copyProperties(from, to) {
    var keys = Object.keys(from);
    for (var i = 0; i < keys.length; i++) {
      var key = keys[i];
      to[key] = from[key];
    }
  }
  function mixinPropertiesHard(from, to) {
    var keys = Object.keys(from);
    for (var i = 0; i < keys.length; i++) {
      var key = keys[i];
      if (!to.hasOwnProperty(key)) {
        to[key] = from[key];
      }
    }
  }
  function mixinPropertiesEasy(from, to) {
    Object.assign(to, from);
  }
  var supportsDirectProtoAccess = function() {
    var cls = function() {
    };
    cls.prototype = {p: {}};
    var object = new cls();
    if (!(Object.getPrototypeOf(object) && Object.getPrototypeOf(object).p === cls.prototype.p))
      return false;
    try {
      if (typeof navigator != "undefined" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome/") >= 0)
        return true;
      if (typeof version == "function" && version.length == 0) {
        var v = version();
        if (/^\d+\.\d+\.\d+\.\d+$/.test(v))
          return true;
      }
    } catch (_) {
    }
    return false;
  }();
  function inherit(cls, sup) {
    cls.prototype.constructor = cls;
    cls.prototype["$is" + cls.name] = cls;
    if (sup != null) {
      if (supportsDirectProtoAccess) {
        Object.setPrototypeOf(cls.prototype, sup.prototype);
        return;
      }
      var clsPrototype = Object.create(sup.prototype);
      copyProperties(cls.prototype, clsPrototype);
      cls.prototype = clsPrototype;
    }
  }
  function inheritMany(sup, classes) {
    for (var i = 0; i < classes.length; i++) {
      inherit(classes[i], sup);
    }
  }
  function mixinEasy(cls, mixin) {
    mixinPropertiesEasy(mixin.prototype, cls.prototype);
    cls.prototype.constructor = cls;
  }
  function mixinHard(cls, mixin) {
    mixinPropertiesHard(mixin.prototype, cls.prototype);
    cls.prototype.constructor = cls;
  }
  function lazy(holder, name, getterName, initializer) {
    var uninitializedSentinel = holder;
    holder[name] = uninitializedSentinel;
    holder[getterName] = function() {
      if (holder[name] === uninitializedSentinel) {
        holder[name] = initializer();
      }
      holder[getterName] = function() {
        return this[name];
      };
      return holder[name];
    };
  }
  function lazyFinal(holder, name, getterName, initializer) {
    var uninitializedSentinel = holder;
    holder[name] = uninitializedSentinel;
    holder[getterName] = function() {
      if (holder[name] === uninitializedSentinel) {
        var value = initializer();
        if (holder[name] !== uninitializedSentinel) {
          A.throwLateFieldADI(name);
        }
        holder[name] = value;
      }
      var finalValue = holder[name];
      holder[getterName] = function() {
        return finalValue;
      };
      return finalValue;
    };
  }
  function makeConstList(list, rti) {
    if (rti != null)
      A._setArrayType(list, rti);
    list.$flags = 7;
    return list;
  }
  function convertToFastObject(properties) {
    function t() {
    }
    t.prototype = properties;
    new t();
    return properties;
  }
  function convertAllToFastObject(arrayOfObjects) {
    for (var i = 0; i < arrayOfObjects.length; ++i) {
      convertToFastObject(arrayOfObjects[i]);
    }
  }
  var functionCounter = 0;
  function instanceTearOffGetter(isIntercepted, parameters) {
    var cache = null;
    return isIntercepted ? function(receiver) {
      if (cache === null)
        cache = A.closureFromTearOff(parameters);
      return new cache(receiver, this);
    } : function() {
      if (cache === null)
        cache = A.closureFromTearOff(parameters);
      return new cache(this, null);
    };
  }
  function staticTearOffGetter(parameters) {
    var cache = null;
    return function() {
      if (cache === null)
        cache = A.closureFromTearOff(parameters).prototype;
      return cache;
    };
  }
  var typesOffset = 0;
  function tearOffParameters(container, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {
    if (typeof funType == "number") {
      funType += typesOffset;
    }
    return {co: container, iS: isStatic, iI: isIntercepted, rC: requiredParameterCount, dV: optionalParameterDefaultValues, cs: callNames, fs: funsOrNames, fT: funType, aI: applyIndex || 0, nDA: needsDirectAccess};
  }
  function installStaticTearOff(holder, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
    var parameters = tearOffParameters(holder, true, false, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, false);
    var getterFunction = staticTearOffGetter(parameters);
    holder[getterName] = getterFunction;
  }
  function installInstanceTearOff(prototype, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {
    isIntercepted = !!isIntercepted;
    var parameters = tearOffParameters(prototype, false, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, !!needsDirectAccess);
    var getterFunction = instanceTearOffGetter(isIntercepted, parameters);
    prototype[getterName] = getterFunction;
  }
  function setOrUpdateInterceptorsByTag(newTags) {
    var tags = init.interceptorsByTag;
    if (!tags) {
      init.interceptorsByTag = newTags;
      return;
    }
    copyProperties(newTags, tags);
  }
  function setOrUpdateLeafTags(newTags) {
    var tags = init.leafTags;
    if (!tags) {
      init.leafTags = newTags;
      return;
    }
    copyProperties(newTags, tags);
  }
  function updateTypes(newTypes) {
    var types = init.types;
    var length = types.length;
    types.push.apply(types, newTypes);
    return length;
  }
  function updateHolder(holder, newHolder) {
    copyProperties(newHolder, holder);
    return holder;
  }
  var hunkHelpers = function() {
    var mkInstance = function(isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
        return function(container, getterName, name, funType) {
          return installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex, false);
        };
      },
      mkStatic = function(requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
        return function(container, getterName, name, funType) {
          return installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex);
        };
      };
    return {inherit: inherit, inheritMany: inheritMany, mixin: mixinEasy, mixinHard: mixinHard, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, updateHolder: updateHolder, convertToFastObject: convertToFastObject, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags};
  }();
  function initializeDeferredHunk(hunk) {
    typesOffset = init.types.length;
    hunk(hunkHelpers, init, holders, $);
  }
  var J = {
    makeDispatchRecord(interceptor, proto, extension, indexability) {
      return {i: interceptor, p: proto, e: extension, x: indexability};
    },
    getNativeInterceptor(object) {
      var proto, objectProto, $constructor, interceptor, t1,
        record = object[init.dispatchPropertyName];
      if (record == null)
        if ($.initNativeDispatchFlag == null) {
          A.initNativeDispatch();
          record = object[init.dispatchPropertyName];
        }
      if (record != null) {
        proto = record.p;
        if (false === proto)
          return record.i;
        if (true === proto)
          return object;
        objectProto = Object.getPrototypeOf(object);
        if (proto === objectProto)
          return record.i;
        if (record.e === objectProto)
          throw A.wrapException(A.UnimplementedError$("Return interceptor for " + A.S(proto(object, record))));
      }
      $constructor = object.constructor;
      if ($constructor == null)
        interceptor = null;
      else {
        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
        if (t1 == null)
          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
        interceptor = $constructor[t1];
      }
      if (interceptor != null)
        return interceptor;
      interceptor = A.lookupAndCacheInterceptor(object);
      if (interceptor != null)
        return interceptor;
      if (typeof object == "function")
        return B.JavaScriptFunction_methods;
      proto = Object.getPrototypeOf(object);
      if (proto == null)
        return B.PlainJavaScriptObject_methods;
      if (proto === Object.prototype)
        return B.PlainJavaScriptObject_methods;
      if (typeof $constructor == "function") {
        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
        if (t1 == null)
          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
        Object.defineProperty($constructor, t1, {value: B.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});
        return B.UnknownJavaScriptObject_methods;
      }
      return B.UnknownJavaScriptObject_methods;
    },
    JSArray_JSArray$fixed($length, $E) {
      if ($length < 0 || $length > 4294967295)
        throw A.wrapException(A.RangeError$range($length, 0, 4294967295, "length", null));
      return J.JSArray_JSArray$markFixed(new Array($length), $E);
    },
    JSArray_JSArray$growable($length, $E) {
      if ($length < 0)
        throw A.wrapException(A.ArgumentError$("Length must be a non-negative integer: " + $length, null));
      return A._setArrayType(new Array($length), $E._eval$1("JSArray<0>"));
    },
    JSArray_JSArray$markFixed(allocation, $E) {
      var t1 = A._setArrayType(allocation, $E._eval$1("JSArray<0>"));
      t1.$flags = 1;
      return t1;
    },
    JSArray__compareAny(a, b) {
      var t1 = type$.Comparable_dynamic;
      return J.compareTo$1$ns(t1._as(a), t1._as(b));
    },
    JSString__isWhitespace(codeUnit) {
      if (codeUnit < 256)
        switch (codeUnit) {
          case 9:
          case 10:
          case 11:
          case 12:
          case 13:
          case 32:
          case 133:
          case 160:
            return true;
          default:
            return false;
        }
      switch (codeUnit) {
        case 5760:
        case 8192:
        case 8193:
        case 8194:
        case 8195:
        case 8196:
        case 8197:
        case 8198:
        case 8199:
        case 8200:
        case 8201:
        case 8202:
        case 8232:
        case 8233:
        case 8239:
        case 8287:
        case 12288:
        case 65279:
          return true;
        default:
          return false;
      }
    },
    JSString__skipLeadingWhitespace(string, index) {
      var t1, codeUnit;
      for (t1 = string.length; index < t1;) {
        codeUnit = string.charCodeAt(index);
        if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
          break;
        ++index;
      }
      return index;
    },
    JSString__skipTrailingWhitespace(string, index) {
      var t1, index0, codeUnit;
      for (t1 = string.length; index > 0; index = index0) {
        index0 = index - 1;
        if (!(index0 < t1))
          return A.ioore(string, index0);
        codeUnit = string.charCodeAt(index0);
        if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
          break;
      }
      return index;
    },
    getInterceptor$(receiver) {
      if (typeof receiver == "number") {
        if (Math.floor(receiver) == receiver)
          return J.JSInt.prototype;
        return J.JSNumNotInt.prototype;
      }
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return J.JSNull.prototype;
      if (typeof receiver == "boolean")
        return J.JSBool.prototype;
      if (Array.isArray(receiver))
        return J.JSArray.prototype;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        if (typeof receiver == "symbol")
          return J.JavaScriptSymbol.prototype;
        if (typeof receiver == "bigint")
          return J.JavaScriptBigInt.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$asx(receiver) {
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return receiver;
      if (Array.isArray(receiver))
        return J.JSArray.prototype;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        if (typeof receiver == "symbol")
          return J.JavaScriptSymbol.prototype;
        if (typeof receiver == "bigint")
          return J.JavaScriptBigInt.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$ax(receiver) {
      if (receiver == null)
        return receiver;
      if (Array.isArray(receiver))
        return J.JSArray.prototype;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        if (typeof receiver == "symbol")
          return J.JavaScriptSymbol.prototype;
        if (typeof receiver == "bigint")
          return J.JavaScriptBigInt.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$ns(receiver) {
      if (typeof receiver == "number")
        return J.JSNumber.prototype;
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return receiver;
      if (!(receiver instanceof A.Object))
        return J.UnknownJavaScriptObject.prototype;
      return receiver;
    },
    getInterceptor$s(receiver) {
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return receiver;
      if (!(receiver instanceof A.Object))
        return J.UnknownJavaScriptObject.prototype;
      return receiver;
    },
    getInterceptor$x(receiver) {
      if (receiver == null)
        return receiver;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        if (typeof receiver == "symbol")
          return J.JavaScriptSymbol.prototype;
        if (typeof receiver == "bigint")
          return J.JavaScriptBigInt.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    get$first$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$first(receiver);
    },
    get$hashCode$(receiver) {
      return J.getInterceptor$(receiver).get$hashCode(receiver);
    },
    get$isEmpty$asx(receiver) {
      return J.getInterceptor$asx(receiver).get$isEmpty(receiver);
    },
    get$iterator$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$iterator(receiver);
    },
    get$last$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$last(receiver);
    },
    get$length$asx(receiver) {
      return J.getInterceptor$asx(receiver).get$length(receiver);
    },
    get$runtimeType$(receiver) {
      return J.getInterceptor$(receiver).get$runtimeType(receiver);
    },
    $eq$(receiver, a0) {
      if (receiver == null)
        return a0 == null;
      if (typeof receiver != "object")
        return a0 != null && receiver === a0;
      return J.getInterceptor$(receiver).$eq(receiver, a0);
    },
    $index$asx(receiver, a0) {
      if (typeof a0 === "number")
        if (Array.isArray(receiver) || typeof receiver == "string" || A.isJsIndexable(receiver, receiver[init.dispatchPropertyName]))
          if (a0 >>> 0 === a0 && a0 < receiver.length)
            return receiver[a0];
      return J.getInterceptor$asx(receiver).$index(receiver, a0);
    },
    $indexSet$ax(receiver, a0, a1) {
      return J.getInterceptor$ax(receiver).$indexSet(receiver, a0, a1);
    },
    add$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).add$1(receiver, a0);
    },
    allMatches$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).allMatches$1(receiver, a0);
    },
    allMatches$2$s(receiver, a0, a1) {
      return J.getInterceptor$s(receiver).allMatches$2(receiver, a0, a1);
    },
    asByteData$0$x(receiver) {
      return J.getInterceptor$x(receiver).asByteData$0(receiver);
    },
    asUint8List$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).asUint8List$2(receiver, a0, a1);
    },
    cast$1$0$ax(receiver, $T1) {
      return J.getInterceptor$ax(receiver).cast$1$0(receiver, $T1);
    },
    codeUnitAt$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).codeUnitAt$1(receiver, a0);
    },
    compareTo$1$ns(receiver, a0) {
      return J.getInterceptor$ns(receiver).compareTo$1(receiver, a0);
    },
    elementAt$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0);
    },
    getRange$2$ax(receiver, a0, a1) {
      return J.getInterceptor$ax(receiver).getRange$2(receiver, a0, a1);
    },
    map$1$1$ax(receiver, a0, $T1) {
      return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1);
    },
    matchAsPrefix$2$s(receiver, a0, a1) {
      return J.getInterceptor$s(receiver).matchAsPrefix$2(receiver, a0, a1);
    },
    setRange$4$ax(receiver, a0, a1, a2, a3) {
      return J.getInterceptor$ax(receiver).setRange$4(receiver, a0, a1, a2, a3);
    },
    skip$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).skip$1(receiver, a0);
    },
    startsWith$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).startsWith$1(receiver, a0);
    },
    sublist$2$ax(receiver, a0, a1) {
      return J.getInterceptor$ax(receiver).sublist$2(receiver, a0, a1);
    },
    take$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).take$1(receiver, a0);
    },
    toList$0$ax(receiver) {
      return J.getInterceptor$ax(receiver).toList$0(receiver);
    },
    toString$0$(receiver) {
      return J.getInterceptor$(receiver).toString$0(receiver);
    },
    Interceptor: function Interceptor() {
    },
    JSBool: function JSBool() {
    },
    JSNull: function JSNull() {
    },
    JavaScriptObject: function JavaScriptObject() {
    },
    LegacyJavaScriptObject: function LegacyJavaScriptObject() {
    },
    PlainJavaScriptObject: function PlainJavaScriptObject() {
    },
    UnknownJavaScriptObject: function UnknownJavaScriptObject() {
    },
    JavaScriptFunction: function JavaScriptFunction() {
    },
    JavaScriptBigInt: function JavaScriptBigInt() {
    },
    JavaScriptSymbol: function JavaScriptSymbol() {
    },
    JSArray: function JSArray(t0) {
      this.$ti = t0;
    },
    JSArraySafeToStringHook: function JSArraySafeToStringHook() {
    },
    JSUnmodifiableArray: function JSUnmodifiableArray(t0) {
      this.$ti = t0;
    },
    ArrayIterator: function ArrayIterator(t0, t1, t2) {
      var _ = this;
      _._iterable = t0;
      _._length = t1;
      _._index = 0;
      _._current = null;
      _.$ti = t2;
    },
    JSNumber: function JSNumber() {
    },
    JSInt: function JSInt() {
    },
    JSNumNotInt: function JSNumNotInt() {
    },
    JSString: function JSString() {
    }
  },
  A = {JS_CONST: function JS_CONST() {
    },
    CastIterable_CastIterable(source, $S, $T) {
      if (type$.EfficientLengthIterable_dynamic._is(source))
        return new A._EfficientLengthCastIterable(source, $S._eval$1("@<0>")._bind$1($T)._eval$1("_EfficientLengthCastIterable<1,2>"));
      return new A.CastIterable(source, $S._eval$1("@<0>")._bind$1($T)._eval$1("CastIterable<1,2>"));
    },
    LateError$fieldADI(fieldName) {
      return new A.LateError("Field '" + fieldName + "' has been assigned during initialization.");
    },
    LateError$fieldNI(fieldName) {
      return new A.LateError("Field '" + fieldName + "' has not been initialized.");
    },
    LateError$fieldAI(fieldName) {
      return new A.LateError("Field '" + fieldName + "' has already been initialized.");
    },
    hexDigitValue(char) {
      var digit, letter;
      A.assertHelper(char <= 65535);
      digit = char ^ 48;
      if (digit <= 9)
        return digit;
      letter = char | 32;
      if (97 <= letter && letter <= 102)
        return letter - 87;
      return -1;
    },
    SystemHash_combine(hash, value) {
      hash = hash + value & 536870911;
      hash = hash + ((hash & 524287) << 10) & 536870911;
      return hash ^ hash >>> 6;
    },
    SystemHash_finish(hash) {
      hash = hash + ((hash & 67108863) << 3) & 536870911;
      hash ^= hash >>> 11;
      return hash + ((hash & 16383) << 15) & 536870911;
    },
    checkNotNullable(value, $name, $T) {
      return value;
    },
    isToStringVisiting(object) {
      var t1, i;
      for (t1 = $.toStringVisiting.length, i = 0; i < t1; ++i)
        if (object === $.toStringVisiting[i])
          return true;
      return false;
    },
    SubListIterable$(_iterable, _start, _endOrLength, $E) {
      A.RangeError_checkNotNegative(_start, "start");
      if (_endOrLength != null) {
        A.RangeError_checkNotNegative(_endOrLength, "end");
        if (_start > _endOrLength)
          A.throwExpression(A.RangeError$range(_start, 0, _endOrLength, "start", null));
      }
      return new A.SubListIterable(_iterable, _start, _endOrLength, $E._eval$1("SubListIterable<0>"));
    },
    MappedIterable_MappedIterable(iterable, $function, $S, $T) {
      if (type$.EfficientLengthIterable_dynamic._is(iterable))
        return new A.EfficientLengthMappedIterable(iterable, $function, $S._eval$1("@<0>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>"));
      return new A.MappedIterable(iterable, $function, $S._eval$1("@<0>")._bind$1($T)._eval$1("MappedIterable<1,2>"));
    },
    TakeIterable_TakeIterable(iterable, takeCount, $E) {
      var _s9_ = "takeCount";
      A.ArgumentError_checkNotNull(takeCount, _s9_, type$.int);
      A.RangeError_checkNotNegative(takeCount, _s9_);
      if (type$.EfficientLengthIterable_dynamic._is(iterable))
        return new A.EfficientLengthTakeIterable(iterable, takeCount, $E._eval$1("EfficientLengthTakeIterable<0>"));
      return new A.TakeIterable(iterable, takeCount, $E._eval$1("TakeIterable<0>"));
    },
    SkipIterable_SkipIterable(iterable, count, $E) {
      var _s5_ = "count";
      if (type$.EfficientLengthIterable_dynamic._is(iterable)) {
        A.ArgumentError_checkNotNull(count, _s5_, type$.int);
        A.RangeError_checkNotNegative(count, _s5_);
        return new A.EfficientLengthSkipIterable(iterable, count, $E._eval$1("EfficientLengthSkipIterable<0>"));
      }
      A.ArgumentError_checkNotNull(count, _s5_, type$.int);
      A.RangeError_checkNotNegative(count, _s5_);
      return new A.SkipIterable(iterable, count, $E._eval$1("SkipIterable<0>"));
    },
    IndexedIterable_IndexedIterable(source, start, $T) {
      return new A.EfficientLengthIndexedIterable(source, start, $T._eval$1("EfficientLengthIndexedIterable<0>"));
    },
    IterableElementError_noElement() {
      return new A.StateError("No element");
    },
    IterableElementError_tooFew() {
      return new A.StateError("Too few elements");
    },
    _CastIterableBase: function _CastIterableBase() {
    },
    CastIterator: function CastIterator(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    CastIterable: function CastIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    _EfficientLengthCastIterable: function _EfficientLengthCastIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    _CastListBase: function _CastListBase() {
    },
    CastList: function CastList(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    LateError: function LateError(t0) {
      this.__internal$_message = t0;
    },
    CodeUnits: function CodeUnits(t0) {
      this._string = t0;
    },
    nullFuture_closure: function nullFuture_closure() {
    },
    SentinelValue: function SentinelValue() {
    },
    EfficientLengthIterable: function EfficientLengthIterable() {
    },
    ListIterable: function ListIterable() {
    },
    SubListIterable: function SubListIterable(t0, t1, t2, t3) {
      var _ = this;
      _.__internal$_iterable = t0;
      _._start = t1;
      _._endOrLength = t2;
      _.$ti = t3;
    },
    ListIterator: function ListIterator(t0, t1, t2) {
      var _ = this;
      _.__internal$_iterable = t0;
      _.__internal$_length = t1;
      _.__internal$_index = 0;
      _.__internal$_current = null;
      _.$ti = t2;
    },
    MappedIterable: function MappedIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    EfficientLengthMappedIterable: function EfficientLengthMappedIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    MappedIterator: function MappedIterator(t0, t1, t2) {
      var _ = this;
      _.__internal$_current = null;
      _._iterator = t0;
      _._f = t1;
      _.$ti = t2;
    },
    MappedListIterable: function MappedListIterable(t0, t1, t2) {
      this._source = t0;
      this._f = t1;
      this.$ti = t2;
    },
    WhereIterable: function WhereIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    WhereIterator: function WhereIterator(t0, t1, t2) {
      this._iterator = t0;
      this._f = t1;
      this.$ti = t2;
    },
    ExpandIterable: function ExpandIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    ExpandIterator: function ExpandIterator(t0, t1, t2, t3) {
      var _ = this;
      _._iterator = t0;
      _._f = t1;
      _._currentExpansion = t2;
      _.__internal$_current = null;
      _.$ti = t3;
    },
    TakeIterable: function TakeIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._takeCount = t1;
      this.$ti = t2;
    },
    EfficientLengthTakeIterable: function EfficientLengthTakeIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._takeCount = t1;
      this.$ti = t2;
    },
    TakeIterator: function TakeIterator(t0, t1, t2) {
      this._iterator = t0;
      this._remaining = t1;
      this.$ti = t2;
    },
    SkipIterable: function SkipIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._skipCount = t1;
      this.$ti = t2;
    },
    EfficientLengthSkipIterable: function EfficientLengthSkipIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._skipCount = t1;
      this.$ti = t2;
    },
    SkipIterator: function SkipIterator(t0, t1, t2) {
      this._iterator = t0;
      this._skipCount = t1;
      this.$ti = t2;
    },
    SkipWhileIterable: function SkipWhileIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    SkipWhileIterator: function SkipWhileIterator(t0, t1, t2) {
      var _ = this;
      _._iterator = t0;
      _._f = t1;
      _._hasSkipped = false;
      _.$ti = t2;
    },
    EmptyIterable: function EmptyIterable(t0) {
      this.$ti = t0;
    },
    EmptyIterator: function EmptyIterator(t0) {
      this.$ti = t0;
    },
    WhereTypeIterable: function WhereTypeIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    WhereTypeIterator: function WhereTypeIterator(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    IndexedIterable: function IndexedIterable(t0, t1, t2) {
      this._source = t0;
      this._start = t1;
      this.$ti = t2;
    },
    EfficientLengthIndexedIterable: function EfficientLengthIndexedIterable(t0, t1, t2) {
      this._source = t0;
      this._start = t1;
      this.$ti = t2;
    },
    IndexedIterator: function IndexedIterator(t0, t1, t2) {
      var _ = this;
      _._source = t0;
      _._start = t1;
      _.__internal$_index = -1;
      _.$ti = t2;
    },
    FixedLengthListMixin: function FixedLengthListMixin() {
    },
    UnmodifiableListMixin: function UnmodifiableListMixin() {
    },
    UnmodifiableListBase: function UnmodifiableListBase() {
    },
    ReversedListIterable: function ReversedListIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    Symbol: function Symbol(t0) {
      this.__internal$_name = t0;
    },
    __CastListBase__CastIterableBase_ListMixin: function __CastListBase__CastIterableBase_ListMixin() {
    },
    unminifyOrTag(rawClassName) {
      var preserved = init.mangledGlobalNames[rawClassName];
      if (preserved != null)
        return preserved;
      return rawClassName;
    },
    isJsIndexable(object, record) {
      var result;
      if (record != null) {
        result = record.x;
        if (result != null)
          return result;
      }
      return type$.JavaScriptIndexingBehavior_dynamic._is(object);
    },
    S(value) {
      var result;
      if (typeof value == "string")
        return value;
      if (typeof value == "number") {
        if (value !== 0)
          return "" + value;
      } else if (true === value)
        return "true";
      else if (false === value)
        return "false";
      else if (value == null)
        return "null";
      result = J.toString$0$(value);
      return result;
    },
    Primitives_objectHashCode(object) {
      var hash,
        property = $.Primitives__identityHashCodeProperty;
      if (property == null)
        property = $.Primitives__identityHashCodeProperty = Symbol("identityHashCode");
      hash = object[property];
      if (hash == null) {
        hash = Math.random() * 0x3fffffff | 0;
        object[property] = hash;
      }
      return hash;
    },
    Primitives_parseInt(source, radix) {
      var decimalMatch, maxCharCode, digitsPart, t1, i, _null = null,
        match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
      if (match == null)
        return _null;
      if (3 >= match.length)
        return A.ioore(match, 3);
      decimalMatch = match[3];
      if (radix == null) {
        if (decimalMatch != null)
          return parseInt(source, 10);
        if (match[2] != null)
          return parseInt(source, 16);
        return _null;
      }
      if (radix < 2 || radix > 36)
        throw A.wrapException(A.RangeError$range(radix, 2, 36, "radix", _null));
      if (radix === 10 && decimalMatch != null)
        return parseInt(source, 10);
      if (radix < 10 || decimalMatch == null) {
        maxCharCode = radix <= 10 ? 47 + radix : 86 + radix;
        A.assertHelper(typeof match[1] == "string");
        digitsPart = match[1];
        for (t1 = digitsPart.length, i = 0; i < t1; ++i)
          if ((digitsPart.charCodeAt(i) | 32) > maxCharCode)
            return _null;
      }
      return parseInt(source, radix);
    },
    Primitives_objectTypeName(object) {
      var interceptor, dispatchName, $constructor, constructorName;
      if (object instanceof A.Object)
        return A._rtiToString(A.instanceType(object), null);
      interceptor = J.getInterceptor$(object);
      if (interceptor === B.Interceptor_methods || interceptor === B.JavaScriptObject_methods || type$.UnknownJavaScriptObject._is(object)) {
        dispatchName = B.C_JS_CONST(object);
        if (dispatchName !== "Object" && dispatchName !== "")
          return dispatchName;
        $constructor = object.constructor;
        if (typeof $constructor == "function") {
          constructorName = $constructor.name;
          if (typeof constructorName == "string" && constructorName !== "Object" && constructorName !== "")
            return constructorName;
        }
      }
      return A._rtiToString(A.instanceType(object), null);
    },
    Primitives_safeToString(object) {
      var hooks, i, hookResult;
      if (object == null || typeof object == "number" || A._isBool(object))
        return J.toString$0$(object);
      if (typeof object == "string")
        return JSON.stringify(object);
      if (object instanceof A.Closure)
        return object.toString$0(0);
      if (object instanceof A._Record)
        return object._toString$1(true);
      hooks = $.$get$_safeToStringHooks();
      for (i = 0; i < 1; ++i) {
        hookResult = hooks[i].tryFormat$1(object);
        if (hookResult != null)
          return hookResult;
      }
      return "Instance of '" + A.Primitives_objectTypeName(object) + "'";
    },
    Primitives_currentUri() {
      if (!!self.location)
        return self.location.href;
      return null;
    },
    Primitives__fromCharCodeApply(array) {
      var result, i, i0, chunkEnd,
        end = array.length;
      if (end <= 500)
        return String.fromCharCode.apply(null, array);
      for (result = "", i = 0; i < end; i = i0) {
        i0 = i + 500;
        chunkEnd = i0 < end ? i0 : end;
        result += String.fromCharCode.apply(null, array.slice(i, chunkEnd));
      }
      return result;
    },
    Primitives_stringFromCodePoints(codePoints) {
      var t1, _i, i,
        a = A._setArrayType([], type$.JSArray_int);
      for (t1 = codePoints.length, _i = 0; _i < codePoints.length; codePoints.length === t1 || (0, A.throwConcurrentModificationError)(codePoints), ++_i) {
        i = codePoints[_i];
        if (!A._isInt(i))
          throw A.wrapException(A.argumentErrorValue(i));
        if (i <= 65535)
          B.JSArray_methods.add$1(a, i);
        else if (i <= 1114111) {
          B.JSArray_methods.add$1(a, 55296 + (B.JSInt_methods._shrOtherPositive$1(i - 65536, 10) & 1023));
          B.JSArray_methods.add$1(a, 56320 + (i & 1023));
        } else
          throw A.wrapException(A.argumentErrorValue(i));
      }
      return A.Primitives__fromCharCodeApply(a);
    },
    Primitives_stringFromCharCodes(charCodes) {
      var t1, _i, i;
      for (t1 = charCodes.length, _i = 0; _i < t1; ++_i) {
        i = charCodes[_i];
        if (!A._isInt(i))
          throw A.wrapException(A.argumentErrorValue(i));
        if (i < 0)
          throw A.wrapException(A.argumentErrorValue(i));
        if (i > 65535)
          return A.Primitives_stringFromCodePoints(charCodes);
      }
      return A.Primitives__fromCharCodeApply(charCodes);
    },
    Primitives_stringFromNativeUint8List(charCodes, start, end) {
      var i, result, i0, chunkEnd;
      if (end <= 500 && start === 0 && end === charCodes.length)
        return String.fromCharCode.apply(null, charCodes);
      for (i = start, result = ""; i < end; i = i0) {
        i0 = i + 500;
        chunkEnd = i0 < end ? i0 : end;
        result += String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));
      }
      return result;
    },
    Primitives_stringFromCharCode(charCode) {
      var bits;
      if (0 <= charCode) {
        if (charCode <= 65535)
          return String.fromCharCode(charCode);
        if (charCode <= 1114111) {
          bits = charCode - 65536;
          return String.fromCharCode((B.JSInt_methods._shrOtherPositive$1(bits, 10) | 55296) >>> 0, bits & 1023 | 56320);
        }
      }
      throw A.wrapException(A.RangeError$range(charCode, 0, 1114111, null, null));
    },
    Primitives_lazyAsJsDate(receiver) {
      if (receiver.date === void 0)
        receiver.date = new Date(receiver._core$_value);
      return receiver.date;
    },
    Primitives_getYear(receiver) {
      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0 : A.Primitives_lazyAsJsDate(receiver).getFullYear() + 0;
    },
    Primitives_getMonth(receiver) {
      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1 : A.Primitives_lazyAsJsDate(receiver).getMonth() + 1;
    },
    Primitives_getDay(receiver) {
      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0 : A.Primitives_lazyAsJsDate(receiver).getDate() + 0;
    },
    Primitives_getHours(receiver) {
      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0 : A.Primitives_lazyAsJsDate(receiver).getHours() + 0;
    },
    Primitives_getMinutes(receiver) {
      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0 : A.Primitives_lazyAsJsDate(receiver).getMinutes() + 0;
    },
    Primitives_getSeconds(receiver) {
      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getSeconds() + 0;
    },
    Primitives_getMilliseconds(receiver) {
      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;
    },
    Primitives_getWeekday(receiver) {
      return B.JSInt_methods.$mod((receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCDay() + 0 : A.Primitives_lazyAsJsDate(receiver).getDay() + 0) + 6, 7) + 1;
    },
    Primitives_extractStackTrace(error) {
      var jsError = error.$thrownJsError;
      if (jsError == null)
        return null;
      return A.getTraceFromException(jsError);
    },
    Primitives_trySetStackTrace(error, stackTrace) {
      var jsError;
      if (error.$thrownJsError == null) {
        jsError = new Error();
        A.initializeExceptionWrapper(error, jsError);
        error.$thrownJsError = jsError;
        jsError.stack = stackTrace.toString$0(0);
      }
    },
    iae(argument) {
      throw A.wrapException(A.argumentErrorValue(argument));
    },
    ioore(receiver, index) {
      if (receiver == null)
        J.get$length$asx(receiver);
      throw A.wrapException(A.diagnoseIndexError(receiver, index));
    },
    diagnoseIndexError(indexable, index) {
      var $length, _s5_ = "index";
      if (!A._isInt(index))
        return new A.ArgumentError(true, index, _s5_, null);
      $length = A._asInt(J.get$length$asx(indexable));
      if (index < 0 || index >= $length)
        return A.IndexError$withLength(index, $length, indexable, null, _s5_);
      return A.RangeError$value(index, _s5_);
    },
    diagnoseRangeError(start, end, $length) {
      if (start > $length)
        return A.RangeError$range(start, 0, $length, "start", null);
      if (end != null)
        if (end < start || end > $length)
          return A.RangeError$range(end, start, $length, "end", null);
      return new A.ArgumentError(true, end, "end", null);
    },
    argumentErrorValue(object) {
      return new A.ArgumentError(true, object, null, null);
    },
    wrapException(ex) {
      return A.initializeExceptionWrapper(ex, new Error());
    },
    initializeExceptionWrapper(ex, wrapper) {
      var t1;
      if (ex == null)
        ex = new A.TypeError();
      wrapper.dartException = ex;
      t1 = A.toStringWrapper;
      if ("defineProperty" in Object) {
        Object.defineProperty(wrapper, "message", {get: t1});
        wrapper.name = "";
      } else
        wrapper.toString = t1;
      return wrapper;
    },
    toStringWrapper() {
      return J.toString$0$(this.dartException);
    },
    throwExpression(ex, wrapper) {
      throw A.initializeExceptionWrapper(ex, wrapper == null ? new Error() : wrapper);
    },
    throwUnsupportedOperation(o, operation, verb) {
      var wrapper;
      if (operation == null)
        operation = 0;
      if (verb == null)
        verb = 0;
      wrapper = Error();
      A.throwExpression(A._diagnoseUnsupportedOperation(o, operation, verb), wrapper);
    },
    _diagnoseUnsupportedOperation(o, encodedOperation, encodedVerb) {
      var operation, table, tableLength, index, verb, object, flags, article, adjective;
      if (typeof encodedOperation == "string")
        operation = encodedOperation;
      else {
        table = "[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";");
        tableLength = table.length;
        index = encodedOperation;
        if (index > tableLength) {
          encodedVerb = index / tableLength | 0;
          index %= tableLength;
        }
        operation = table[index];
      }
      verb = typeof encodedVerb == "string" ? encodedVerb : "modify;remove from;add to".split(";")[encodedVerb];
      object = type$.List_dynamic._is(o) ? "list" : "ByteData";
      flags = o.$flags | 0;
      article = "a ";
      if ((flags & 4) !== 0)
        adjective = "constant ";
      else if ((flags & 2) !== 0) {
        adjective = "unmodifiable ";
        article = "an ";
      } else
        adjective = (flags & 1) !== 0 ? "fixed-length " : "";
      return new A.UnsupportedError("'" + operation + "': Cannot " + verb + " " + article + adjective + object);
    },
    throwConcurrentModificationError(collection) {
      throw A.wrapException(A.ConcurrentModificationError$(collection));
    },
    TypeErrorDecoder_extractPattern(message) {
      var match, $arguments, argumentsExpr, expr, method, receiver;
      message = A.quoteStringForRegExp(message.replace(String({}), "$receiver$"));
      match = message.match(/\\\$[a-zA-Z]+\\\$/g);
      if (match == null)
        match = A._setArrayType([], type$.JSArray_String);
      $arguments = match.indexOf("\\$arguments\\$");
      argumentsExpr = match.indexOf("\\$argumentsExpr\\$");
      expr = match.indexOf("\\$expr\\$");
      method = match.indexOf("\\$method\\$");
      receiver = match.indexOf("\\$receiver\\$");
      return new A.TypeErrorDecoder(message.replace(new RegExp("\\\\\\$arguments\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$", "g"), "((?:x|[^x])*)"), $arguments, argumentsExpr, expr, method, receiver);
    },
    TypeErrorDecoder_provokeCallErrorOn(expression) {
      return function($expr$) {
        var $argumentsExpr$ = "$arguments$";
        try {
          $expr$.$method$($argumentsExpr$);
        } catch (e) {
          return e.message;
        }
      }(expression);
    },
    TypeErrorDecoder_provokePropertyErrorOn(expression) {
      return function($expr$) {
        try {
          $expr$.$method$;
        } catch (e) {
          return e.message;
        }
      }(expression);
    },
    JsNoSuchMethodError$(_message, match) {
      var t1 = match == null,
        t2 = t1 ? null : match.method;
      return new A.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver);
    },
    unwrapException(ex) {
      var t1;
      if (ex == null)
        return new A.NullThrownFromJavaScriptException(ex);
      if (ex instanceof A.ExceptionAndStackTrace) {
        t1 = ex.dartException;
        return A.saveStackTrace(ex, t1 == null ? A._asObject(t1) : t1);
      }
      if (typeof ex !== "object")
        return ex;
      if ("dartException" in ex)
        return A.saveStackTrace(ex, ex.dartException);
      return A._unwrapNonDartException(ex);
    },
    saveStackTrace(ex, error) {
      if (type$.Error._is(error))
        if (error.$thrownJsError == null)
          error.$thrownJsError = ex;
      return error;
    },
    _unwrapNonDartException(ex) {
      var message, number, ieErrorCode, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match;
      if (!("message" in ex))
        return ex;
      message = ex.message;
      if ("number" in ex && typeof ex.number == "number") {
        number = ex.number;
        ieErrorCode = number & 65535;
        if ((B.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)
          switch (ieErrorCode) {
            case 438:
              return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A.S(message) + " (Error " + ieErrorCode + ")", null));
            case 445:
            case 5007:
              A.S(message);
              return A.saveStackTrace(ex, new A.NullError());
          }
      }
      if (ex instanceof TypeError) {
        nsme = $.$get$TypeErrorDecoder_noSuchMethodPattern();
        notClosure = $.$get$TypeErrorDecoder_notClosurePattern();
        nullCall = $.$get$TypeErrorDecoder_nullCallPattern();
        nullLiteralCall = $.$get$TypeErrorDecoder_nullLiteralCallPattern();
        undefCall = $.$get$TypeErrorDecoder_undefinedCallPattern();
        undefLiteralCall = $.$get$TypeErrorDecoder_undefinedLiteralCallPattern();
        nullProperty = $.$get$TypeErrorDecoder_nullPropertyPattern();
        $.$get$TypeErrorDecoder_nullLiteralPropertyPattern();
        undefProperty = $.$get$TypeErrorDecoder_undefinedPropertyPattern();
        undefLiteralProperty = $.$get$TypeErrorDecoder_undefinedLiteralPropertyPattern();
        match = nsme.matchTypeError$1(message);
        if (match != null)
          return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A._asString(message), match));
        else {
          match = notClosure.matchTypeError$1(message);
          if (match != null) {
            match.method = "call";
            return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A._asString(message), match));
          } else if (nullCall.matchTypeError$1(message) != null || nullLiteralCall.matchTypeError$1(message) != null || undefCall.matchTypeError$1(message) != null || undefLiteralCall.matchTypeError$1(message) != null || nullProperty.matchTypeError$1(message) != null || nullLiteralCall.matchTypeError$1(message) != null || undefProperty.matchTypeError$1(message) != null || undefLiteralProperty.matchTypeError$1(message) != null) {
            A._asString(message);
            return A.saveStackTrace(ex, new A.NullError());
          }
        }
        return A.saveStackTrace(ex, new A.UnknownJsTypeError(typeof message == "string" ? message : ""));
      }
      if (ex instanceof RangeError) {
        if (typeof message == "string" && message.indexOf("call stack") !== -1)
          return new A.StackOverflowError();
        message = function(ex) {
          try {
            return String(ex);
          } catch (e) {
          }
          return null;
        }(ex);
        return A.saveStackTrace(ex, new A.ArgumentError(false, null, null, typeof message == "string" ? message.replace(/^RangeError:\s*/, "") : message));
      }
      if (typeof InternalError == "function" && ex instanceof InternalError)
        if (typeof message == "string" && message === "too much recursion")
          return new A.StackOverflowError();
      return ex;
    },
    getTraceFromException(exception) {
      var trace;
      if (exception instanceof A.ExceptionAndStackTrace)
        return exception.stackTrace;
      if (exception == null)
        return new A._StackTrace(exception);
      trace = exception.$cachedTrace;
      if (trace != null)
        return trace;
      trace = new A._StackTrace(exception);
      if (typeof exception === "object")
        exception.$cachedTrace = trace;
      return trace;
    },
    objectHashCode(object) {
      if (object == null)
        return J.get$hashCode$(object);
      if (typeof object == "object")
        return A.Primitives_objectHashCode(object);
      return J.get$hashCode$(object);
    },
    fillLiteralMap(keyValuePairs, result) {
      var index, index0, index1,
        $length = keyValuePairs.length;
      for (index = 0; index < $length; index = index1) {
        index0 = index + 1;
        index1 = index0 + 1;
        result.$indexSet(0, keyValuePairs[index], keyValuePairs[index0]);
      }
      return result;
    },
    _invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) {
      type$.Function._as(closure);
      switch (A._asInt(numberOfArguments)) {
        case 0:
          return closure.call$0();
        case 1:
          return closure.call$1(arg1);
        case 2:
          return closure.call$2(arg1, arg2);
        case 3:
          return closure.call$3(arg1, arg2, arg3);
        case 4:
          return closure.call$4(arg1, arg2, arg3, arg4);
      }
      throw A.wrapException(A.Exception_Exception("Unsupported number of arguments for wrapped closure"));
    },
    convertDartClosureToJS(closure, arity) {
      var $function;
      if (closure == null)
        return null;
      $function = closure.$identity;
      if (!!$function)
        return $function;
      $function = A.convertDartClosureToJSUncached(closure, arity);
      closure.$identity = $function;
      return $function;
    },
    convertDartClosureToJSUncached(closure, arity) {
      var entry;
      switch (arity) {
        case 0:
          entry = closure.call$0;
          break;
        case 1:
          entry = closure.call$1;
          break;
        case 2:
          entry = closure.call$2;
          break;
        case 3:
          entry = closure.call$3;
          break;
        case 4:
          entry = closure.call$4;
          break;
        default:
          entry = null;
      }
      if (entry != null)
        return entry.bind(closure);
      return function(closure, arity, invoke) {
        return function(a1, a2, a3, a4) {
          return invoke(closure, arity, a1, a2, a3, a4);
        };
      }(closure, arity, A._invokeClosure);
    },
    Closure_fromTearOff(parameters) {
      var $name, callName, $function, t1, $prototype, $constructor, t2, trampoline, applyTrampoline, i, stub, stub0, stubName, stubCallName,
        container = parameters.co,
        isStatic = parameters.iS,
        isIntercepted = parameters.iI,
        needsDirectAccess = parameters.nDA,
        applyTrampolineIndex = parameters.aI,
        funsOrNames = parameters.fs,
        callNames = parameters.cs;
      A.assertHelper(typeof funsOrNames[0] == "string");
      $name = funsOrNames[0];
      callName = callNames[0];
      $function = container[$name];
      t1 = parameters.fT;
      t1.toString;
      $prototype = isStatic ? Object.create(new A.StaticClosure().constructor.prototype) : Object.create(new A.BoundClosure(null, null).constructor.prototype);
      $prototype.$initialize = $prototype.constructor;
      $constructor = isStatic ? function static_tear_off() {
        this.$initialize();
      } : function tear_off(a, b) {
        this.$initialize(a, b);
      };
      $prototype.constructor = $constructor;
      $constructor.prototype = $prototype;
      $prototype.$_name = $name;
      $prototype.$_target = $function;
      t2 = !isStatic;
      if (t2)
        trampoline = A.Closure_forwardCallTo($name, $function, isIntercepted, needsDirectAccess);
      else {
        $prototype.$static_name = $name;
        trampoline = $function;
      }
      $prototype.$signature = A.Closure__computeSignatureFunction(t1, isStatic, isIntercepted);
      $prototype[callName] = trampoline;
      for (applyTrampoline = trampoline, i = 1; i < funsOrNames.length; ++i) {
        stub = funsOrNames[i];
        if (typeof stub == "string") {
          stub0 = container[stub];
          stubName = stub;
          stub = stub0;
        } else
          stubName = "";
        stubCallName = callNames[i];
        if (stubCallName != null) {
          if (t2)
            stub = A.Closure_forwardCallTo(stubName, stub, isIntercepted, needsDirectAccess);
          $prototype[stubCallName] = stub;
        }
        if (i === applyTrampolineIndex)
          applyTrampoline = stub;
      }
      $prototype["call*"] = applyTrampoline;
      $prototype.$requiredArgCount = parameters.rC;
      $prototype.$defaultValues = parameters.dV;
      return $constructor;
    },
    Closure__computeSignatureFunction(functionType, isStatic, isIntercepted) {
      if (typeof functionType == "number")
        return functionType;
      if (typeof functionType == "string") {
        if (isStatic)
          throw A.wrapException("Cannot compute signature for static tearoff.");
        return function(recipe, evalOnReceiver) {
          return function() {
            return evalOnReceiver(this, recipe);
          };
        }(functionType, A.BoundClosure_evalRecipe);
      }
      throw A.wrapException("Error in functionType of tearoff");
    },
    Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function) {
      var getReceiver = A.BoundClosure_receiverOf;
      switch (needsDirectAccess ? -1 : arity) {
        case 0:
          return function(entry, receiverOf) {
            return function() {
              return receiverOf(this)[entry]();
            };
          }(stubName, getReceiver);
        case 1:
          return function(entry, receiverOf) {
            return function(a) {
              return receiverOf(this)[entry](a);
            };
          }(stubName, getReceiver);
        case 2:
          return function(entry, receiverOf) {
            return function(a, b) {
              return receiverOf(this)[entry](a, b);
            };
          }(stubName, getReceiver);
        case 3:
          return function(entry, receiverOf) {
            return function(a, b, c) {
              return receiverOf(this)[entry](a, b, c);
            };
          }(stubName, getReceiver);
        case 4:
          return function(entry, receiverOf) {
            return function(a, b, c, d) {
              return receiverOf(this)[entry](a, b, c, d);
            };
          }(stubName, getReceiver);
        case 5:
          return function(entry, receiverOf) {
            return function(a, b, c, d, e) {
              return receiverOf(this)[entry](a, b, c, d, e);
            };
          }(stubName, getReceiver);
        default:
          return function(f, receiverOf) {
            return function() {
              return f.apply(receiverOf(this), arguments);
            };
          }($function, getReceiver);
      }
    },
    Closure_forwardCallTo(stubName, $function, isIntercepted, needsDirectAccess) {
      if (isIntercepted)
        return A.Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess);
      return A.Closure_cspForwardCall($function.length, needsDirectAccess, stubName, $function);
    },
    Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function) {
      var getReceiver = A.BoundClosure_receiverOf,
        getInterceptor = A.BoundClosure_interceptorOf;
      switch (needsDirectAccess ? -1 : arity) {
        case 0:
          throw A.wrapException(new A.RuntimeError("Intercepted function with no arguments."));
        case 1:
          return function(entry, interceptorOf, receiverOf) {
            return function() {
              return interceptorOf(this)[entry](receiverOf(this));
            };
          }(stubName, getInterceptor, getReceiver);
        case 2:
          return function(entry, interceptorOf, receiverOf) {
            return function(a) {
              return interceptorOf(this)[entry](receiverOf(this), a);
            };
          }(stubName, getInterceptor, getReceiver);
        case 3:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b) {
              return interceptorOf(this)[entry](receiverOf(this), a, b);
            };
          }(stubName, getInterceptor, getReceiver);
        case 4:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b, c) {
              return interceptorOf(this)[entry](receiverOf(this), a, b, c);
            };
          }(stubName, getInterceptor, getReceiver);
        case 5:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b, c, d) {
              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d);
            };
          }(stubName, getInterceptor, getReceiver);
        case 6:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b, c, d, e) {
              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d, e);
            };
          }(stubName, getInterceptor, getReceiver);
        default:
          return function(f, interceptorOf, receiverOf) {
            return function() {
              var a = [receiverOf(this)];
              Array.prototype.push.apply(a, arguments);
              return f.apply(interceptorOf(this), a);
            };
          }($function, getInterceptor, getReceiver);
      }
    },
    Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess) {
      var arity, t1;
      if ($.BoundClosure__interceptorFieldNameCache == null)
        $.BoundClosure__interceptorFieldNameCache = A.BoundClosure__computeFieldNamed("interceptor");
      if ($.BoundClosure__receiverFieldNameCache == null)
        $.BoundClosure__receiverFieldNameCache = A.BoundClosure__computeFieldNamed("receiver");
      arity = $function.length;
      t1 = A.Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function);
      return t1;
    },
    closureFromTearOff(parameters) {
      return A.Closure_fromTearOff(parameters);
    },
    BoundClosure_evalRecipe(closure, recipe) {
      return A._Universe_evalInEnvironment(init.typeUniverse, A.instanceType(closure._receiver), recipe);
    },
    BoundClosure_receiverOf(closure) {
      return closure._receiver;
    },
    BoundClosure_interceptorOf(closure) {
      return closure._interceptor;
    },
    BoundClosure__computeFieldNamed(fieldName) {
      var names, i, $name,
        template = new A.BoundClosure("receiver", "interceptor"),
        t1 = Object.getOwnPropertyNames(template);
      t1.$flags = 1;
      names = t1;
      for (t1 = names.length, i = 0; i < t1; ++i) {
        $name = names[i];
        if (template[$name] === fieldName)
          return $name;
      }
      throw A.wrapException(A.ArgumentError$("Field name " + fieldName + " not found.", null));
    },
    assertTest(condition) {
      if (true === condition)
        return false;
      if (false === condition)
        return true;
      A._asBool(condition);
      return !condition;
    },
    assertThrow(message) {
      throw A.wrapException(new A._AssertionError(message));
    },
    assertHelper(condition) {
      if (A.assertTest(condition))
        throw A.wrapException(A.AssertionError$(null));
    },
    getIsolateAffinityTag($name) {
      return init.getIsolateTag($name);
    },
    assertInteropArgs(args) {
      if (A.assertTest(B.JSArray_methods.every$1(args, new A.assertInteropArgs_closure())))
        A.assertThrow("Dart function requires `allowInterop` to be passed to JavaScript.");
    },
    wrapZoneUnaryCallback(callback, $T) {
      var t1 = $.Zone__current;
      if (t1 === B.C__RootZone)
        return callback;
      return t1.bindUnaryCallbackGuarded$1$1(callback, $T);
    },
    defineProperty(obj, property, value) {
      Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
    },
    lookupAndCacheInterceptor(obj) {
      var tag, record, interceptor, interceptorClass, altTag, mark, t1;
      A.assertHelper(!(obj instanceof A.Object));
      tag = A._asString($.getTagFunction.call$1(obj));
      record = $.dispatchRecordsForInstanceTags[tag];
      if (record != null) {
        Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
        return record.i;
      }
      interceptor = $.interceptorsForUncacheableTags[tag];
      if (interceptor != null)
        return interceptor;
      interceptorClass = init.interceptorsByTag[tag];
      if (interceptorClass == null) {
        altTag = A._asStringQ($.alternateTagFunction.call$2(obj, tag));
        if (altTag != null) {
          record = $.dispatchRecordsForInstanceTags[altTag];
          if (record != null) {
            Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
            return record.i;
          }
          interceptor = $.interceptorsForUncacheableTags[altTag];
          if (interceptor != null)
            return interceptor;
          interceptorClass = init.interceptorsByTag[altTag];
          tag = altTag;
        }
      }
      if (interceptorClass == null)
        return null;
      interceptor = interceptorClass.prototype;
      mark = tag[0];
      if (mark === "!") {
        record = A.makeLeafDispatchRecord(interceptor);
        $.dispatchRecordsForInstanceTags[tag] = record;
        Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
        return record.i;
      }
      if (mark === "~") {
        $.interceptorsForUncacheableTags[tag] = interceptor;
        return interceptor;
      }
      if (mark === "-") {
        t1 = A.makeLeafDispatchRecord(interceptor);
        Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
        return t1.i;
      }
      if (mark === "+")
        return A.patchInteriorProto(obj, interceptor);
      if (mark === "*")
        throw A.wrapException(A.UnimplementedError$(tag));
      if (init.leafTags[tag] === true) {
        t1 = A.makeLeafDispatchRecord(interceptor);
        Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
        return t1.i;
      } else
        return A.patchInteriorProto(obj, interceptor);
    },
    patchInteriorProto(obj, interceptor) {
      var proto = Object.getPrototypeOf(obj);
      Object.defineProperty(proto, init.dispatchPropertyName, {value: J.makeDispatchRecord(interceptor, proto, null, null), enumerable: false, writable: true, configurable: true});
      return interceptor;
    },
    makeLeafDispatchRecord(interceptor) {
      return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
    },
    makeDefaultDispatchRecord(tag, interceptorClass, proto) {
      var interceptor = interceptorClass.prototype;
      if (init.leafTags[tag] === true)
        return A.makeLeafDispatchRecord(interceptor);
      else
        return J.makeDispatchRecord(interceptor, proto, null, null);
    },
    initNativeDispatch() {
      if (true === $.initNativeDispatchFlag)
        return;
      $.initNativeDispatchFlag = true;
      A.initNativeDispatchContinue();
    },
    initNativeDispatchContinue() {
      var map, tags, fun, i, tag, proto, record, interceptorClass;
      $.dispatchRecordsForInstanceTags = Object.create(null);
      $.interceptorsForUncacheableTags = Object.create(null);
      A.initHooks();
      map = init.interceptorsByTag;
      tags = Object.getOwnPropertyNames(map);
      if (typeof window != "undefined") {
        window;
        fun = function() {
        };
        for (i = 0; i < tags.length; ++i) {
          tag = tags[i];
          proto = $.prototypeForTagFunction.call$1(tag);
          if (proto != null) {
            record = A.makeDefaultDispatchRecord(tag, map[tag], proto);
            if (record != null) {
              Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
              fun.prototype = proto;
            }
          }
        }
      }
      for (i = 0; i < tags.length; ++i) {
        tag = tags[i];
        if (/^[A-Za-z_]/.test(tag)) {
          interceptorClass = map[tag];
          map["!" + tag] = interceptorClass;
          map["~" + tag] = interceptorClass;
          map["-" + tag] = interceptorClass;
          map["+" + tag] = interceptorClass;
          map["*" + tag] = interceptorClass;
        }
      }
    },
    initHooks() {
      var transformers, i, transformer, getTag, getUnknownTag, prototypeForTag,
        hooks = B.C_JS_CONST0();
      hooks = A.applyHooksTransformer(B.C_JS_CONST1, A.applyHooksTransformer(B.C_JS_CONST2, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST4, A.applyHooksTransformer(B.C_JS_CONST5, A.applyHooksTransformer(B.C_JS_CONST6(B.C_JS_CONST), hooks)))))));
      if (typeof dartNativeDispatchHooksTransformer != "undefined") {
        transformers = dartNativeDispatchHooksTransformer;
        if (typeof transformers == "function")
          transformers = [transformers];
        if (Array.isArray(transformers))
          for (i = 0; i < transformers.length; ++i) {
            transformer = transformers[i];
            if (typeof transformer == "function")
              hooks = transformer(hooks) || hooks;
          }
      }
      getTag = hooks.getTag;
      getUnknownTag = hooks.getUnknownTag;
      prototypeForTag = hooks.prototypeForTag;
      $.getTagFunction = new A.initHooks_closure(getTag);
      $.alternateTagFunction = new A.initHooks_closure0(getUnknownTag);
      $.prototypeForTagFunction = new A.initHooks_closure1(prototypeForTag);
    },
    applyHooksTransformer(transformer, hooks) {
      return transformer(hooks) || hooks;
    },
    createRecordTypePredicate(shape, fieldRtis) {
      var argumentCount,
        $length = fieldRtis.length,
        $function = init.rttc["" + $length + ";" + shape];
      if ($function == null)
        return null;
      if ($length === 0)
        return $function;
      argumentCount = $function.length;
      if ($length === argumentCount)
        return $function.apply(null, fieldRtis);
      A.assertHelper(argumentCount === 1);
      return $function(fieldRtis);
    },
    JSSyntaxRegExp_makeNative(source, multiLine, caseSensitive, unicode, dotAll, extraFlags) {
      var m = multiLine ? "m" : "",
        i = caseSensitive ? "" : "i",
        u = unicode ? "u" : "",
        s = dotAll ? "s" : "",
        regexp = function(source, modifiers) {
          try {
            return new RegExp(source, modifiers);
          } catch (e) {
            return e;
          }
        }(source, m + i + u + s + extraFlags);
      if (regexp instanceof RegExp)
        return regexp;
      throw A.wrapException(A.FormatException$("Illegal RegExp pattern (" + String(regexp) + ")", source, null));
    },
    _MatchImplementation$(pattern, _match) {
      A.assertHelper(typeof _match.input == "string");
      A.assertHelper(A._isInt(_match.index));
      return new A._MatchImplementation(_match);
    },
    stringContainsUnchecked(receiver, other, startIndex) {
      var t1;
      if (typeof other == "string")
        return receiver.indexOf(other, startIndex) >= 0;
      else if (other instanceof A.JSSyntaxRegExp) {
        t1 = B.JSString_methods.substring$1(receiver, startIndex);
        return other._nativeRegExp.test(t1);
      } else
        return !J.allMatches$1$s(other, B.JSString_methods.substring$1(receiver, startIndex)).get$isEmpty(0);
    },
    escapeReplacement(replacement) {
      if (replacement.indexOf("$", 0) >= 0)
        return replacement.replace(/\$/g, "$$$$");
      return replacement;
    },
    stringReplaceFirstRE(receiver, regexp, replacement, startIndex) {
      var match = regexp._execGlobal$2(receiver, startIndex);
      if (match == null)
        return receiver;
      return A.stringReplaceRangeUnchecked(receiver, match._match.index, match.get$end(), replacement);
    },
    quoteStringForRegExp(string) {
      if (/[[\]{}()*+?.\\^$|]/.test(string))
        return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
      return string;
    },
    stringReplaceAllUnchecked(receiver, pattern, replacement) {
      var nativeRegexp;
      if (typeof pattern == "string")
        return A.stringReplaceAllUncheckedString(receiver, pattern, replacement);
      if (pattern instanceof A.JSSyntaxRegExp) {
        nativeRegexp = pattern.get$_nativeGlobalVersion();
        nativeRegexp.lastIndex = 0;
        return receiver.replace(nativeRegexp, A.escapeReplacement(replacement));
      }
      return A.stringReplaceAllGeneral(receiver, pattern, replacement);
    },
    stringReplaceAllGeneral(receiver, pattern, replacement) {
      var t1, startIndex, t2, match;
      for (t1 = J.allMatches$1$s(pattern, receiver), t1 = t1.get$iterator(t1), startIndex = 0, t2 = ""; t1.moveNext$0();) {
        match = t1.get$current();
        t2 = t2 + receiver.substring(startIndex, match.get$start()) + replacement;
        startIndex = match.get$end();
      }
      t1 = t2 + receiver.substring(startIndex);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    stringReplaceAllUncheckedString(receiver, pattern, replacement) {
      var $length, t1, i;
      if (pattern === "") {
        if (receiver === "")
          return replacement;
        $length = receiver.length;
        for (t1 = replacement, i = 0; i < $length; ++i)
          t1 = t1 + receiver[i] + replacement;
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      }
      if (receiver.indexOf(pattern, 0) < 0)
        return receiver;
      if (receiver.length < 500 || replacement.indexOf("$", 0) >= 0)
        return receiver.split(pattern).join(replacement);
      return receiver.replace(new RegExp(A.quoteStringForRegExp(pattern), "g"), A.escapeReplacement(replacement));
    },
    stringReplaceFirstUnchecked(receiver, pattern, replacement, startIndex) {
      var index, t1, matches, match;
      if (typeof pattern == "string") {
        index = receiver.indexOf(pattern, startIndex);
        if (index < 0)
          return receiver;
        return A.stringReplaceRangeUnchecked(receiver, index, index + pattern.length, replacement);
      }
      if (pattern instanceof A.JSSyntaxRegExp)
        return startIndex === 0 ? receiver.replace(pattern._nativeRegExp, A.escapeReplacement(replacement)) : A.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
      t1 = J.allMatches$2$s(pattern, receiver, startIndex);
      matches = t1.get$iterator(t1);
      if (!matches.moveNext$0())
        return receiver;
      match = matches.get$current();
      return B.JSString_methods.replaceRange$3(receiver, match.get$start(), match.get$end(), replacement);
    },
    stringReplaceRangeUnchecked(receiver, start, end, replacement) {
      return receiver.substring(0, start) + replacement + receiver.substring(end);
    },
    _Record_2: function _Record_2(t0, t1) {
      this._0 = t0;
      this._1 = t1;
    },
    _Record_2_file_outFlags: function _Record_2_file_outFlags(t0, t1) {
      this._0 = t0;
      this._1 = t1;
    },
    ConstantMap: function ConstantMap() {
    },
    ConstantStringMap: function ConstantStringMap(t0, t1, t2) {
      this._jsIndex = t0;
      this._values = t1;
      this.$ti = t2;
    },
    _KeysOrValues: function _KeysOrValues(t0, t1) {
      this._elements = t0;
      this.$ti = t1;
    },
    _KeysOrValuesOrElementsIterator: function _KeysOrValuesOrElementsIterator(t0, t1, t2) {
      var _ = this;
      _._elements = t0;
      _.__js_helper$_length = t1;
      _.__js_helper$_index = 0;
      _.__js_helper$_current = null;
      _.$ti = t2;
    },
    Instantiation: function Instantiation() {
    },
    Instantiation1: function Instantiation1(t0, t1) {
      this._genericClosure = t0;
      this.$ti = t1;
    },
    SafeToStringHook: function SafeToStringHook() {
    },
    TypeErrorDecoder: function TypeErrorDecoder(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._pattern = t0;
      _._arguments = t1;
      _._argumentsExpr = t2;
      _._expr = t3;
      _._method = t4;
      _._receiver = t5;
    },
    NullError: function NullError() {
    },
    JsNoSuchMethodError: function JsNoSuchMethodError(t0, t1, t2) {
      this.__js_helper$_message = t0;
      this._method = t1;
      this._receiver = t2;
    },
    UnknownJsTypeError: function UnknownJsTypeError(t0) {
      this.__js_helper$_message = t0;
    },
    NullThrownFromJavaScriptException: function NullThrownFromJavaScriptException(t0) {
      this._irritant = t0;
    },
    ExceptionAndStackTrace: function ExceptionAndStackTrace(t0, t1) {
      this.dartException = t0;
      this.stackTrace = t1;
    },
    _StackTrace: function _StackTrace(t0) {
      this._exception = t0;
      this._trace = null;
    },
    Closure: function Closure() {
    },
    Closure0Args: function Closure0Args() {
    },
    Closure2Args: function Closure2Args() {
    },
    TearOffClosure: function TearOffClosure() {
    },
    StaticClosure: function StaticClosure() {
    },
    BoundClosure: function BoundClosure(t0, t1) {
      this._receiver = t0;
      this._interceptor = t1;
    },
    RuntimeError: function RuntimeError(t0) {
      this.message = t0;
    },
    _AssertionError: function _AssertionError(t0) {
      this.message = t0;
    },
    assertInteropArgs_closure: function assertInteropArgs_closure() {
    },
    JsLinkedHashMap: function JsLinkedHashMap(t0) {
      var _ = this;
      _.__js_helper$_length = 0;
      _.__js_helper$_last = _.__js_helper$_first = _.__js_helper$_rest = _.__js_helper$_nums = _.__js_helper$_strings = null;
      _.__js_helper$_modifications = 0;
      _.$ti = t0;
    },
    JsLinkedHashMap_addAll_closure: function JsLinkedHashMap_addAll_closure(t0) {
      this.$this = t0;
    },
    LinkedHashMapCell: function LinkedHashMapCell(t0, t1) {
      var _ = this;
      _.hashMapCellKey = t0;
      _.hashMapCellValue = t1;
      _.__js_helper$_previous = _.__js_helper$_next = null;
    },
    LinkedHashMapKeysIterable: function LinkedHashMapKeysIterable(t0, t1) {
      this.__js_helper$_map = t0;
      this.$ti = t1;
    },
    LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1, t2, t3) {
      var _ = this;
      _.__js_helper$_map = t0;
      _.__js_helper$_modifications = t1;
      _.__js_helper$_cell = t2;
      _.__js_helper$_current = null;
      _.$ti = t3;
    },
    LinkedHashMapValuesIterable: function LinkedHashMapValuesIterable(t0, t1) {
      this.__js_helper$_map = t0;
      this.$ti = t1;
    },
    LinkedHashMapValueIterator: function LinkedHashMapValueIterator(t0, t1, t2, t3) {
      var _ = this;
      _.__js_helper$_map = t0;
      _.__js_helper$_modifications = t1;
      _.__js_helper$_cell = t2;
      _.__js_helper$_current = null;
      _.$ti = t3;
    },
    LinkedHashMapEntriesIterable: function LinkedHashMapEntriesIterable(t0, t1) {
      this.__js_helper$_map = t0;
      this.$ti = t1;
    },
    LinkedHashMapEntryIterator: function LinkedHashMapEntryIterator(t0, t1, t2, t3) {
      var _ = this;
      _.__js_helper$_map = t0;
      _.__js_helper$_modifications = t1;
      _.__js_helper$_cell = t2;
      _.__js_helper$_current = null;
      _.$ti = t3;
    },
    initHooks_closure: function initHooks_closure(t0) {
      this.getTag = t0;
    },
    initHooks_closure0: function initHooks_closure0(t0) {
      this.getUnknownTag = t0;
    },
    initHooks_closure1: function initHooks_closure1(t0) {
      this.prototypeForTag = t0;
    },
    _Record: function _Record() {
    },
    _Record2: function _Record2() {
    },
    JSSyntaxRegExp: function JSSyntaxRegExp(t0, t1) {
      var _ = this;
      _.pattern = t0;
      _._nativeRegExp = t1;
      _._hasCapturesCache = _._nativeAnchoredRegExp = _._nativeGlobalRegExp = null;
    },
    _MatchImplementation: function _MatchImplementation(t0) {
      this._match = t0;
    },
    _AllMatchesIterable: function _AllMatchesIterable(t0, t1, t2) {
      this._re = t0;
      this.__js_helper$_string = t1;
      this.__js_helper$_start = t2;
    },
    _AllMatchesIterator: function _AllMatchesIterator(t0, t1, t2) {
      var _ = this;
      _._regExp = t0;
      _.__js_helper$_string = t1;
      _._nextIndex = t2;
      _.__js_helper$_current = null;
    },
    StringMatch: function StringMatch(t0, t1) {
      this.start = t0;
      this.pattern = t1;
    },
    _StringAllMatchesIterable: function _StringAllMatchesIterable(t0, t1, t2) {
      this._input = t0;
      this._pattern = t1;
      this.__js_helper$_index = t2;
    },
    _StringAllMatchesIterator: function _StringAllMatchesIterator(t0, t1, t2) {
      var _ = this;
      _._input = t0;
      _._pattern = t1;
      _.__js_helper$_index = t2;
      _.__js_helper$_current = null;
    },
    throwLateFieldNI(fieldName) {
      throw A.initializeExceptionWrapper(A.LateError$fieldNI(fieldName), new Error());
    },
    throwLateFieldAI(fieldName) {
      throw A.initializeExceptionWrapper(A.LateError$fieldAI(fieldName), new Error());
    },
    throwLateFieldADI(fieldName) {
      throw A.initializeExceptionWrapper(A.LateError$fieldADI(fieldName), new Error());
    },
    _Cell$named(_name) {
      var t1 = new A._Cell(_name);
      return t1._value = t1;
    },
    _Cell: function _Cell(t0) {
      this.__late_helper$_name = t0;
      this._value = null;
    },
    _checkLength($length) {
      return $length;
    },
    _checkViewArguments(buffer, offsetInBytes, $length) {
    },
    _ensureNativeList(list) {
      var t1, result, i;
      if (type$.JSIndexable_dynamic._is(list))
        return list;
      t1 = J.getInterceptor$asx(list);
      result = A.List_List$filled(t1.get$length(list), null, false, type$.dynamic);
      for (i = 0; i < t1.get$length(list); ++i)
        B.JSArray_methods.$indexSet(result, i, t1.$index(list, i));
      return result;
    },
    NativeByteData_NativeByteData$view(buffer, offsetInBytes, $length) {
      var t1;
      A._checkViewArguments(buffer, offsetInBytes, $length);
      t1 = new DataView(buffer, offsetInBytes);
      return t1;
    },
    NativeInt32List_NativeInt32List$view(buffer, offsetInBytes, $length) {
      A._checkViewArguments(buffer, offsetInBytes, $length);
      $length = B.JSInt_methods._tdivFast$1(buffer.byteLength - offsetInBytes, 4);
      return new Int32Array(buffer, offsetInBytes, $length);
    },
    NativeInt8List__create1(arg) {
      return new Int8Array(arg);
    },
    NativeUint32List_NativeUint32List$view(buffer, offsetInBytes, $length) {
      A._checkViewArguments(buffer, offsetInBytes, $length);
      return new Uint32Array(buffer, offsetInBytes, $length);
    },
    NativeUint8List_NativeUint8List($length) {
      return new Uint8Array($length);
    },
    NativeUint8List_NativeUint8List$view(buffer, offsetInBytes, $length) {
      A._checkViewArguments(buffer, offsetInBytes, $length);
      return $length == null ? new Uint8Array(buffer, offsetInBytes) : new Uint8Array(buffer, offsetInBytes, $length);
    },
    _checkValidIndex(index, list, $length) {
      if (index >>> 0 !== index || index >= $length)
        throw A.wrapException(A.diagnoseIndexError(list, index));
    },
    _checkValidRange(start, end, $length) {
      var t1;
      if (!(start >>> 0 !== start))
        t1 = end >>> 0 !== end || start > end || end > $length;
      else
        t1 = true;
      if (t1)
        throw A.wrapException(A.diagnoseRangeError(start, end, $length));
      return end;
    },
    NativeByteBuffer: function NativeByteBuffer() {
    },
    NativeArrayBuffer: function NativeArrayBuffer() {
    },
    NativeTypedData: function NativeTypedData() {
    },
    _UnmodifiableNativeByteBufferView: function _UnmodifiableNativeByteBufferView(t0) {
      this.__native_typed_data$_data = t0;
    },
    NativeByteData: function NativeByteData() {
    },
    NativeTypedArray: function NativeTypedArray() {
    },
    NativeTypedArrayOfDouble: function NativeTypedArrayOfDouble() {
    },
    NativeTypedArrayOfInt: function NativeTypedArrayOfInt() {
    },
    NativeFloat32List: function NativeFloat32List() {
    },
    NativeFloat64List: function NativeFloat64List() {
    },
    NativeInt16List: function NativeInt16List() {
    },
    NativeInt32List: function NativeInt32List() {
    },
    NativeInt8List: function NativeInt8List() {
    },
    NativeUint16List: function NativeUint16List() {
    },
    NativeUint32List: function NativeUint32List() {
    },
    NativeUint8ClampedList: function NativeUint8ClampedList() {
    },
    NativeUint8List: function NativeUint8List() {
    },
    _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin() {
    },
    _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin() {
    },
    _NativeTypedArrayOfInt_NativeTypedArray_ListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin() {
    },
    _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin() {
    },
    Rti__getFutureFromFutureOr(universe, rti) {
      var future;
      A.assertHelper(rti._kind === 7);
      future = rti._precomputed1;
      if (future == null) {
        A.assertHelper(rti._kind === 7);
        future = rti._precomputed1 = A._Universe__lookupInterfaceRti(universe, "Future", [rti._primary]);
      }
      return future;
    },
    Rti__isUnionOfFunctionType(rti) {
      var kind = rti._kind;
      if (kind === 6 || kind === 7)
        return A.Rti__isUnionOfFunctionType(rti._primary);
      return kind === 11 || kind === 12;
    },
    Rti__getInterfaceTypeArguments(rti) {
      A.assertHelper(rti._kind === 8);
      return rti._rest;
    },
    Rti__getBindingArguments(rti) {
      A.assertHelper(rti._kind === 9);
      return rti._rest;
    },
    Rti__getRecordFields(rti) {
      A.assertHelper(rti._kind === 10);
      return rti._rest;
    },
    Rti__getGenericFunctionBounds(rti) {
      A.assertHelper(rti._kind === 12);
      return rti._rest;
    },
    Rti__getCanonicalRecipe(rti) {
      var s = rti._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      return s;
    },
    findType(recipe) {
      return A._Universe_eval(init.typeUniverse, recipe, false);
    },
    instantiatedGenericFunctionType(genericFunctionRti, instantiationRti) {
      var bounds, typeArguments, cache, s, key, probe, rti;
      if (genericFunctionRti == null)
        return null;
      bounds = A.Rti__getGenericFunctionBounds(genericFunctionRti);
      typeArguments = A.Rti__getInterfaceTypeArguments(instantiationRti);
      A.assertHelper(bounds.length === typeArguments.length);
      cache = genericFunctionRti._bindCache;
      if (cache == null)
        cache = genericFunctionRti._bindCache = new Map();
      s = instantiationRti._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      key = s;
      probe = cache.get(key);
      if (probe != null)
        return probe;
      A.assertHelper(genericFunctionRti._kind === 12);
      rti = A._substitute(init.typeUniverse, genericFunctionRti._primary, typeArguments, 0);
      cache.set(key, rti);
      return rti;
    },
    _substitute(universe, rti, typeArguments, depth) {
      var baseType, substitutedBaseType, interfaceTypeArguments, substitutedInterfaceTypeArguments, base, substitutedBase, $arguments, substitutedArguments, fields, substitutedFields, returnType, substitutedReturnType, functionParameters, substitutedFunctionParameters, bounds, substitutedBounds, index, argument,
        t1 = rti._kind,
        kind = t1;
      switch (kind) {
        case 5:
        case 1:
        case 2:
        case 3:
        case 4:
          return rti;
        case 6:
          baseType = rti._primary;
          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
          if (substitutedBaseType === baseType)
            return rti;
          return A._Universe__lookupQuestionRti(universe, substitutedBaseType, true);
        case 7:
          baseType = rti._primary;
          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
          if (substitutedBaseType === baseType)
            return rti;
          return A._Universe__lookupFutureOrRti(universe, substitutedBaseType, true);
        case 8:
          interfaceTypeArguments = A.Rti__getInterfaceTypeArguments(rti);
          substitutedInterfaceTypeArguments = A._substituteArray(universe, interfaceTypeArguments, typeArguments, depth);
          if (substitutedInterfaceTypeArguments === interfaceTypeArguments)
            return rti;
          A.assertHelper(rti._kind === 8);
          return A._Universe__lookupInterfaceRti(universe, rti._primary, substitutedInterfaceTypeArguments);
        case 9:
          A.assertHelper(t1 === 9);
          base = rti._primary;
          substitutedBase = A._substitute(universe, base, typeArguments, depth);
          $arguments = A.Rti__getBindingArguments(rti);
          substitutedArguments = A._substituteArray(universe, $arguments, typeArguments, depth);
          if (substitutedBase === base && substitutedArguments === $arguments)
            return rti;
          return A._Universe__lookupBindingRti(universe, substitutedBase, substitutedArguments);
        case 10:
          A.assertHelper(t1 === 10);
          t1 = rti._primary;
          fields = A.Rti__getRecordFields(rti);
          substitutedFields = A._substituteArray(universe, fields, typeArguments, depth);
          if (substitutedFields === fields)
            return rti;
          return A._Universe__lookupRecordRti(universe, t1, substitutedFields);
        case 11:
          A.assertHelper(t1 === 11);
          returnType = rti._primary;
          substitutedReturnType = A._substitute(universe, returnType, typeArguments, depth);
          A.assertHelper(rti._kind === 11);
          functionParameters = rti._rest;
          substitutedFunctionParameters = A._substituteFunctionParameters(universe, functionParameters, typeArguments, depth);
          if (substitutedReturnType === returnType && substitutedFunctionParameters === functionParameters)
            return rti;
          return A._Universe__lookupFunctionRti(universe, substitutedReturnType, substitutedFunctionParameters);
        case 12:
          bounds = A.Rti__getGenericFunctionBounds(rti);
          depth += bounds.length;
          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, depth);
          A.assertHelper(rti._kind === 12);
          base = rti._primary;
          substitutedBase = A._substitute(universe, base, typeArguments, depth);
          if (substitutedBounds === bounds && substitutedBase === base)
            return rti;
          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, true);
        case 13:
          A.assertHelper(t1 === 13);
          index = rti._primary;
          if (index < depth)
            return rti;
          argument = typeArguments[index - depth];
          if (argument == null)
            return rti;
          return argument;
        default:
          throw A.wrapException(A.AssertionError$("Attempted to substitute unexpected RTI kind " + kind));
      }
    },
    _substituteArray(universe, rtiArray, typeArguments, depth) {
      var changed, i, rti, substitutedRti,
        $length = rtiArray.length,
        result = A._Utils_newArrayOrEmpty($length);
      for (changed = false, i = 0; i < $length; ++i) {
        rti = rtiArray[i];
        substitutedRti = A._substitute(universe, rti, typeArguments, depth);
        if (substitutedRti !== rti)
          changed = true;
        result[i] = substitutedRti;
      }
      return changed ? result : rtiArray;
    },
    _substituteNamed(universe, namedArray, typeArguments, depth) {
      var result, changed, i, t1, t2, rti, substitutedRti,
        $length = namedArray.length;
      A.assertHelper($length % 3 === 0);
      result = A._Utils_newArrayOrEmpty($length);
      for (changed = false, i = 0; i < $length; i += 3) {
        t1 = namedArray[i];
        t2 = namedArray[i + 1];
        rti = namedArray[i + 2];
        substitutedRti = A._substitute(universe, rti, typeArguments, depth);
        if (substitutedRti !== rti)
          changed = true;
        result.splice(i, 3, t1, t2, substitutedRti);
      }
      return changed ? result : namedArray;
    },
    _substituteFunctionParameters(universe, functionParameters, typeArguments, depth) {
      var result,
        requiredPositional = functionParameters._requiredPositional,
        substitutedRequiredPositional = A._substituteArray(universe, requiredPositional, typeArguments, depth),
        optionalPositional = functionParameters._optionalPositional,
        substitutedOptionalPositional = A._substituteArray(universe, optionalPositional, typeArguments, depth),
        named = functionParameters._named,
        substitutedNamed = A._substituteNamed(universe, named, typeArguments, depth);
      if (substitutedRequiredPositional === requiredPositional && substitutedOptionalPositional === optionalPositional && substitutedNamed === named)
        return functionParameters;
      result = new A._FunctionParameters();
      result._requiredPositional = substitutedRequiredPositional;
      result._optionalPositional = substitutedOptionalPositional;
      result._named = substitutedNamed;
      return result;
    },
    _setArrayType(target, rti) {
      A.assertHelper(rti != null);
      target[init.arrayRti] = rti;
      return target;
    },
    closureFunctionType(closure) {
      var signature = closure.$signature;
      if (signature != null) {
        if (typeof signature == "number")
          return A.getTypeFromTypesTable(signature);
        return closure.$signature();
      }
      return null;
    },
    instanceOrFunctionType(object, testRti) {
      var rti;
      if (A.Rti__isUnionOfFunctionType(testRti))
        if (object instanceof A.Closure) {
          rti = A.closureFunctionType(object);
          if (rti != null)
            return rti;
        }
      return A.instanceType(object);
    },
    instanceType(object) {
      if (object instanceof A.Object)
        return A._instanceType(object);
      if (Array.isArray(object))
        return A._arrayInstanceType(object);
      return A._instanceTypeFromConstructor(J.getInterceptor$(object));
    },
    _arrayInstanceType(object) {
      var rti = object[init.arrayRti],
        defaultRti = type$.JSArray_dynamic;
      if (rti == null)
        return defaultRti;
      if (rti.constructor !== defaultRti.constructor)
        return defaultRti;
      return rti;
    },
    _instanceType(object) {
      var rti = object.$ti;
      return rti != null ? rti : A._instanceTypeFromConstructor(object);
    },
    _instanceTypeFromConstructor(instance) {
      var $constructor = instance.constructor,
        probe = $constructor.$ccache;
      if (probe != null)
        return probe;
      return A._instanceTypeFromConstructorMiss(instance, $constructor);
    },
    _instanceTypeFromConstructorMiss(instance, $constructor) {
      var effectiveConstructor = instance instanceof A.Closure ? Object.getPrototypeOf(Object.getPrototypeOf(instance)).constructor : $constructor,
        rti = A._Universe_findErasedType(init.typeUniverse, effectiveConstructor.name);
      $constructor.$ccache = rti;
      return rti;
    },
    getTypeFromTypesTable(index) {
      var rti,
        table = init.types,
        type = table[index];
      if (typeof type == "string") {
        rti = A._Universe_eval(init.typeUniverse, type, false);
        table[index] = rti;
        return rti;
      }
      return type;
    },
    getRuntimeTypeOfDartObject(object) {
      return A.createRuntimeType(A._instanceType(object));
    },
    getRuntimeTypeOfClosure(closure) {
      var rti = A.closureFunctionType(closure);
      return A.createRuntimeType(rti == null ? A.instanceType(closure) : rti);
    },
    _structuralTypeOf(object) {
      var functionRti;
      if (object instanceof A._Record)
        return A.evaluateRtiForRecord(object.$recipe, object._getFieldValues$0());
      functionRti = object instanceof A.Closure ? A.closureFunctionType(object) : null;
      if (functionRti != null)
        return functionRti;
      if (type$.TrustedGetRuntimeType._is(object))
        return J.get$runtimeType$(object)._rti;
      if (Array.isArray(object))
        return A._arrayInstanceType(object);
      return A.instanceType(object);
    },
    createRuntimeType(rti) {
      var t1 = rti._cachedRuntimeType,
        t2 = t1;
      if (t2 == null) {
        A.assertHelper(t1 == null);
        t1 = rti._cachedRuntimeType = new A._Type(rti);
      } else
        t1 = t2;
      return t1;
    },
    evaluateRtiForRecord(recordRecipe, valuesList) {
      var bindings, i,
        values = valuesList,
        $length = values.length;
      if ($length === 0)
        return type$.Record_0;
      if (0 >= $length)
        return A.ioore(values, 0);
      bindings = A._Universe_evalInEnvironment(init.typeUniverse, A._structuralTypeOf(values[0]), "@<0>");
      for (i = 1; i < $length; ++i) {
        if (!(i < values.length))
          return A.ioore(values, i);
        bindings = A._Universe_bind(init.typeUniverse, bindings, A._structuralTypeOf(values[i]));
      }
      return A._Universe_evalInEnvironment(init.typeUniverse, bindings, recordRecipe);
    },
    typeLiteral(recipe) {
      return A.createRuntimeType(A._Universe_eval(init.typeUniverse, recipe, false));
    },
    _installSpecializedIsTest(object) {
      var testRti = this;
      testRti._is = A._specializedIsTest(testRti);
      return testRti._is(object);
    },
    _specializedIsTest(testRti) {
      var kind, simpleIsFn, $name, predicate, t1;
      if (testRti === type$.Object)
        return A._isObject;
      if (A.isTopType(testRti))
        return A._isTop;
      kind = testRti._kind;
      if (kind === 6)
        return A._generalNullableIsTestImplementation;
      if (kind === 1)
        return A._isNever;
      if (kind === 7)
        return A._isFutureOr;
      simpleIsFn = A._simpleSpecializedIsTest(testRti);
      if (simpleIsFn != null)
        return simpleIsFn;
      if (kind === 8) {
        A.assertHelper(testRti._kind === 8);
        $name = testRti._primary;
        if (A.Rti__getInterfaceTypeArguments(testRti).every(A.isTopType)) {
          testRti._specializedTestResource = "$is" + $name;
          if ($name === "List")
            return A._isListTestViaProperty;
          if (testRti === type$.JSObject)
            return A._isJSObject;
          return A._isTestViaProperty;
        }
      } else if (kind === 10) {
        A.assertHelper(testRti._kind === 10);
        predicate = A.createRecordTypePredicate(testRti._primary, A.Rti__getRecordFields(testRti));
        t1 = predicate == null ? A._isNever : predicate;
        return t1 == null ? A._asObject(t1) : t1;
      }
      return A._generalIsTestImplementation;
    },
    _simpleSpecializedIsTest(testRti) {
      if (testRti._kind === 8) {
        if (testRti === type$.int)
          return A._isInt;
        if (testRti === type$.double || testRti === type$.num)
          return A._isNum;
        if (testRti === type$.String)
          return A._isString;
        if (testRti === type$.bool)
          return A._isBool;
      }
      return null;
    },
    _installSpecializedAsCheck(object) {
      var testRti = this,
        asFn = A._generalAsCheckImplementation;
      if (A.isTopType(testRti))
        asFn = A._asTop;
      else if (testRti === type$.Object)
        asFn = A._asObject;
      else if (A.isNullable(testRti)) {
        asFn = A._generalNullableAsCheckImplementation;
        if (testRti === type$.nullable_int)
          asFn = A._asIntQ;
        else if (testRti === type$.nullable_String)
          asFn = A._asStringQ;
        else if (testRti === type$.nullable_bool)
          asFn = A._asBoolQ;
        else if (testRti === type$.nullable_num)
          asFn = A._asNumQ;
        else if (testRti === type$.nullable_double)
          asFn = A._asDoubleQ;
        else if (testRti === type$.nullable_JSObject)
          asFn = A._asJSObjectQ;
      } else if (testRti === type$.int)
        asFn = A._asInt;
      else if (testRti === type$.String)
        asFn = A._asString;
      else if (testRti === type$.bool)
        asFn = A._asBool;
      else if (testRti === type$.num)
        asFn = A._asNum;
      else if (testRti === type$.double)
        asFn = A._asDouble;
      else if (testRti === type$.JSObject)
        asFn = A._asJSObject;
      testRti._as = asFn;
      return testRti._as(object);
    },
    _generalIsTestImplementation(object) {
      var testRti = this;
      if (object == null)
        return A.isNullable(testRti);
      return A.isSubtype(init.typeUniverse, A.instanceOrFunctionType(object, testRti), testRti);
    },
    _generalNullableIsTestImplementation(object) {
      var testRti;
      if (object == null)
        return true;
      testRti = this;
      A.assertHelper(testRti._kind === 6);
      return testRti._primary._is(object);
    },
    _isTestViaProperty(object) {
      var tag, testRti = this;
      if (object == null)
        return A.isNullable(testRti);
      tag = testRti._specializedTestResource;
      if (object instanceof A.Object)
        return !!object[tag];
      return !!J.getInterceptor$(object)[tag];
    },
    _isListTestViaProperty(object) {
      var tag, testRti = this;
      if (object == null)
        return A.isNullable(testRti);
      if (typeof object != "object")
        return false;
      if (Array.isArray(object))
        return true;
      tag = testRti._specializedTestResource;
      if (object instanceof A.Object)
        return !!object[tag];
      return !!J.getInterceptor$(object)[tag];
    },
    _isJSObject(object) {
      var t1 = this;
      if (object == null)
        return false;
      if (typeof object == "object") {
        if (object instanceof A.Object)
          return !!object[t1._specializedTestResource];
        return true;
      }
      if (typeof object == "function")
        return true;
      return false;
    },
    _isJSObjectStandalone(object) {
      if (typeof object == "object") {
        if (object instanceof A.Object)
          return type$.JSObject._is(object);
        return true;
      }
      if (typeof object == "function")
        return true;
      return false;
    },
    _generalAsCheckImplementation(object) {
      var testRti = this;
      if (object == null) {
        if (A.isNullable(testRti))
          return object;
      } else if (testRti._is(object))
        return object;
      throw A.initializeExceptionWrapper(A._errorForAsCheck(object, testRti), new Error());
    },
    _generalNullableAsCheckImplementation(object) {
      var testRti = this;
      if (object == null || testRti._is(object))
        return object;
      throw A.initializeExceptionWrapper(A._errorForAsCheck(object, testRti), new Error());
    },
    _errorForAsCheck(object, testRti) {
      return new A._TypeError("TypeError: " + A._Error_compose(object, A._rtiToString(testRti, null)));
    },
    checkTypeBound(type, bound, variable, methodName) {
      if (A.isSubtype(init.typeUniverse, type, bound))
        return type;
      throw A.initializeExceptionWrapper(A._TypeError$fromMessage("The type argument '" + A._rtiToString(type, null) + "' is not a subtype of the type variable bound '" + A._rtiToString(bound, null) + "' of type variable '" + variable + "' in '" + methodName + "'."), new Error());
    },
    _Error_compose(object, checkedTypeDescription) {
      return A.Error_safeToString(object) + ": type '" + A._rtiToString(A._structuralTypeOf(object), null) + "' is not a subtype of type '" + checkedTypeDescription + "'";
    },
    _TypeError$fromMessage(message) {
      return new A._TypeError("TypeError: " + message);
    },
    _TypeError__TypeError$forType(object, type) {
      return new A._TypeError("TypeError: " + A._Error_compose(object, type));
    },
    _isFutureOr(object) {
      var testRti = this;
      A.assertHelper(testRti._kind === 7);
      return testRti._primary._is(object) || A.Rti__getFutureFromFutureOr(init.typeUniverse, testRti)._is(object);
    },
    _isObject(object) {
      return object != null;
    },
    _asObject(object) {
      if (object != null)
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "Object"), new Error());
    },
    _isTop(object) {
      return true;
    },
    _asTop(object) {
      return object;
    },
    _isNever(object) {
      return false;
    },
    _isBool(object) {
      return true === object || false === object;
    },
    _asBool(object) {
      if (true === object)
        return true;
      if (false === object)
        return false;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "bool"), new Error());
    },
    _asBoolQ(object) {
      if (true === object)
        return true;
      if (false === object)
        return false;
      if (object == null)
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "bool?"), new Error());
    },
    _asDouble(object) {
      if (typeof object == "number")
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "double"), new Error());
    },
    _asDoubleQ(object) {
      if (typeof object == "number")
        return object;
      if (object == null)
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "double?"), new Error());
    },
    _isInt(object) {
      return typeof object == "number" && Math.floor(object) === object;
    },
    _asInt(object) {
      if (typeof object == "number" && Math.floor(object) === object)
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "int"), new Error());
    },
    _asIntQ(object) {
      if (typeof object == "number" && Math.floor(object) === object)
        return object;
      if (object == null)
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "int?"), new Error());
    },
    _isNum(object) {
      return typeof object == "number";
    },
    _asNum(object) {
      if (typeof object == "number")
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "num"), new Error());
    },
    _asNumQ(object) {
      if (typeof object == "number")
        return object;
      if (object == null)
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "num?"), new Error());
    },
    _isString(object) {
      return typeof object == "string";
    },
    _asString(object) {
      if (typeof object == "string")
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "String"), new Error());
    },
    _asStringQ(object) {
      if (typeof object == "string")
        return object;
      if (object == null)
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "String?"), new Error());
    },
    _asJSObject(object) {
      if (A._isJSObjectStandalone(object))
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "JSObject"), new Error());
    },
    _asJSObjectQ(object) {
      if (object == null)
        return object;
      if (A._isJSObjectStandalone(object))
        return object;
      throw A.initializeExceptionWrapper(A._TypeError__TypeError$forType(object, "JSObject?"), new Error());
    },
    _rtiArrayToString(array, genericContext) {
      var s, sep, i;
      for (s = "", sep = "", i = 0; i < array.length; ++i, sep = ", ")
        s += sep + A._rtiToString(array[i], genericContext);
      return s;
    },
    _recordRtiToString(recordType, genericContext) {
      var partialShape, fields, fieldCount, names, namesIndex, s, comma, i;
      A.assertHelper(recordType._kind === 10);
      partialShape = recordType._primary;
      fields = A.Rti__getRecordFields(recordType);
      if ("" === partialShape)
        return "(" + A._rtiArrayToString(fields, genericContext) + ")";
      fieldCount = fields.length;
      names = partialShape.split(",");
      namesIndex = names.length - fieldCount;
      for (s = "(", comma = "", i = 0; i < fieldCount; ++i, comma = ", ") {
        s += comma;
        if (namesIndex === 0)
          s += "{";
        s += A._rtiToString(fields[i], genericContext);
        if (namesIndex >= 0)
          s += " " + names[namesIndex];
        ++namesIndex;
      }
      return s + "})";
    },
    _functionRtiToString(functionType, genericContext, bounds) {
      var boundsLength, offset, i, t1, typeParametersText, typeSep, t2, t3, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", ", outerContextLength = null;
      if (bounds != null) {
        boundsLength = bounds.length;
        if (genericContext == null)
          genericContext = A._setArrayType([], type$.JSArray_String);
        else
          outerContextLength = genericContext.length;
        offset = genericContext.length;
        for (i = boundsLength; i > 0; --i)
          B.JSArray_methods.add$1(genericContext, "T" + (offset + i));
        for (t1 = type$.nullable_Object, typeParametersText = "<", typeSep = "", i = 0; i < boundsLength; ++i, typeSep = _s2_) {
          t2 = genericContext.length;
          t3 = t2 - 1 - i;
          if (!(t3 >= 0))
            return A.ioore(genericContext, t3);
          typeParametersText = typeParametersText + typeSep + genericContext[t3];
          boundRti = bounds[i];
          kind = boundRti._kind;
          if (!(kind === 2 || kind === 3 || kind === 4 || kind === 5 || boundRti === t1))
            typeParametersText += " extends " + A._rtiToString(boundRti, genericContext);
        }
        typeParametersText += ">";
      } else
        typeParametersText = "";
      A.assertHelper(functionType._kind === 11);
      t1 = functionType._primary;
      A.assertHelper(functionType._kind === 11);
      parameters = functionType._rest;
      requiredPositional = parameters._requiredPositional;
      requiredPositionalLength = requiredPositional.length;
      optionalPositional = parameters._optionalPositional;
      optionalPositionalLength = optionalPositional.length;
      named = parameters._named;
      namedLength = named.length;
      A.assertHelper(optionalPositionalLength === 0 || namedLength === 0);
      returnTypeText = A._rtiToString(t1, genericContext);
      for (argumentsText = "", sep = "", i = 0; i < requiredPositionalLength; ++i, sep = _s2_)
        argumentsText += sep + A._rtiToString(requiredPositional[i], genericContext);
      if (optionalPositionalLength > 0) {
        argumentsText += sep + "[";
        for (sep = "", i = 0; i < optionalPositionalLength; ++i, sep = _s2_)
          argumentsText += sep + A._rtiToString(optionalPositional[i], genericContext);
        argumentsText += "]";
      }
      if (namedLength > 0) {
        argumentsText += sep + "{";
        for (sep = "", i = 0; i < namedLength; i += 3, sep = _s2_) {
          argumentsText += sep;
          if (named[i + 1])
            argumentsText += "required ";
          argumentsText += A._rtiToString(named[i + 2], genericContext) + " " + named[i];
        }
        argumentsText += "}";
      }
      if (outerContextLength != null) {
        genericContext.toString;
        genericContext.length = outerContextLength;
      }
      return typeParametersText + "(" + argumentsText + ") => " + returnTypeText;
    },
    _rtiToString(rti, genericContext) {
      var questionArgument, s, argumentKind, $name, $arguments, t2,
        t1 = rti._kind,
        kind = t1;
      if (kind === 5)
        return "erased";
      if (kind === 2)
        return "dynamic";
      if (kind === 3)
        return "void";
      if (kind === 1)
        return "Never";
      if (kind === 4)
        return "any";
      if (kind === 6) {
        A.assertHelper(t1 === 6);
        questionArgument = rti._primary;
        s = A._rtiToString(questionArgument, genericContext);
        argumentKind = questionArgument._kind;
        return (argumentKind === 11 || argumentKind === 12 ? "(" + s + ")" : s) + "?";
      }
      if (kind === 7) {
        A.assertHelper(t1 === 7);
        return "FutureOr<" + A._rtiToString(rti._primary, genericContext) + ">";
      }
      if (kind === 8) {
        A.assertHelper(t1 === 8);
        $name = A._unminifyOrTag(rti._primary);
        $arguments = A.Rti__getInterfaceTypeArguments(rti);
        return $arguments.length > 0 ? $name + ("<" + A._rtiArrayToString($arguments, genericContext) + ">") : $name;
      }
      if (kind === 10)
        return A._recordRtiToString(rti, genericContext);
      if (kind === 11)
        return A._functionRtiToString(rti, genericContext, null);
      if (kind === 12) {
        A.assertHelper(t1 === 12);
        return A._functionRtiToString(rti._primary, genericContext, A.Rti__getGenericFunctionBounds(rti));
      }
      if (kind === 13) {
        genericContext.toString;
        A.assertHelper(t1 === 13);
        t1 = rti._primary;
        t2 = genericContext.length;
        t1 = t2 - 1 - t1;
        if (!(t1 >= 0 && t1 < t2))
          return A.ioore(genericContext, t1);
        return genericContext[t1];
      }
      return "?";
    },
    _unminifyOrTag(rawClassName) {
      var preserved = init.mangledGlobalNames[rawClassName];
      if (preserved != null)
        return preserved;
      return rawClassName;
    },
    _Universe_findRule(universe, targetType) {
      var rule = universe.tR[targetType];
      while (typeof rule == "string")
        rule = universe.tR[rule];
      return rule;
    },
    _Universe_findErasedType(universe, cls) {
      var $length, erased, $arguments, i, $interface,
        metadata = universe.eT,
        probe = metadata[cls];
      if (probe == null)
        return A._Universe_eval(universe, cls, false);
      else if (typeof probe == "number") {
        $length = probe;
        erased = A._Universe__lookupTerminalRti(universe, 5, "#");
        $arguments = A._Utils_newArrayOrEmpty($length);
        for (i = 0; i < $length; ++i)
          $arguments[i] = erased;
        $interface = A._Universe__lookupInterfaceRti(universe, cls, $arguments);
        metadata[cls] = $interface;
        return $interface;
      } else
        return probe;
    },
    _Universe_addRules(universe, rules) {
      return A._Utils_objectAssign(universe.tR, rules);
    },
    _Universe_addErasedTypes(universe, types) {
      return A._Utils_objectAssign(universe.eT, types);
    },
    _Universe_eval(universe, recipe, normalize) {
      var rti,
        cache = universe.eC,
        probe = cache.get(recipe);
      if (probe != null)
        return probe;
      rti = A._Parser_parse(A._Parser_create(universe, null, recipe, false));
      cache.set(recipe, rti);
      return rti;
    },
    _Universe_evalInEnvironment(universe, environment, recipe) {
      var probe, rti,
        cache = environment._evalCache;
      if (cache == null)
        cache = environment._evalCache = new Map();
      probe = cache.get(recipe);
      if (probe != null)
        return probe;
      rti = A._Parser_parse(A._Parser_create(universe, environment, recipe, true));
      cache.set(recipe, rti);
      return rti;
    },
    _Universe_bind(universe, environment, argumentsRti) {
      var s, argumentsRecipe, probe, rti,
        cache = environment._bindCache;
      if (cache == null)
        cache = environment._bindCache = new Map();
      s = argumentsRti._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      argumentsRecipe = s;
      probe = cache.get(argumentsRecipe);
      if (probe != null)
        return probe;
      rti = A._Universe__lookupBindingRti(universe, environment, argumentsRti._kind === 9 ? A.Rti__getBindingArguments(argumentsRti) : [argumentsRti]);
      cache.set(argumentsRecipe, rti);
      return rti;
    },
    _Universe__installTypeTests(universe, rti) {
      rti._as = A._installSpecializedAsCheck;
      rti._is = A._installSpecializedIsTest;
      return rti;
    },
    _Universe__lookupTerminalRti(universe, kind, key) {
      var rti, t1,
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = kind;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupQuestionRti(universe, baseType, normalize) {
      var key, probe, t1,
        s = baseType._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      key = s + "?";
      probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      t1 = A._Universe__createQuestionRti(universe, baseType, key, normalize);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__createQuestionRti(universe, baseType, key, normalize) {
      var baseKind, t1, rti;
      if (normalize) {
        baseKind = baseType._kind;
        t1 = true;
        if (!A.isTopType(baseType))
          if (!(baseType === type$.Null || baseType === type$.JSNull))
            if (baseKind !== 6)
              if (baseKind === 7) {
                A.assertHelper(baseType._kind === 7);
                t1 = A.isNullable(baseType._primary);
              } else
                t1 = false;
        if (t1)
          return baseType;
        else if (baseKind === 1)
          return type$.Null;
      }
      rti = new A.Rti(null, null);
      rti._kind = 6;
      rti._primary = baseType;
      rti._canonicalRecipe = key;
      return A._Universe__installTypeTests(universe, rti);
    },
    _Universe__lookupFutureOrRti(universe, baseType, normalize) {
      var key, probe, t1,
        s = baseType._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      key = s + "/";
      probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      t1 = A._Universe__createFutureOrRti(universe, baseType, key, normalize);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__createFutureOrRti(universe, baseType, key, normalize) {
      var t1, rti;
      if (normalize) {
        t1 = baseType._kind;
        if (A.isTopType(baseType) || baseType === type$.Object)
          return baseType;
        else if (t1 === 1)
          return A._Universe__lookupInterfaceRti(universe, "Future", [baseType]);
        else if (baseType === type$.Null || baseType === type$.JSNull)
          return type$.nullable_Future_Null;
      }
      rti = new A.Rti(null, null);
      rti._kind = 7;
      rti._primary = baseType;
      rti._canonicalRecipe = key;
      return A._Universe__installTypeTests(universe, rti);
    },
    _Universe__lookupGenericFunctionParameterRti(universe, index) {
      var rti, t1,
        key = "" + index + "^",
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 13;
      rti._primary = index;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__canonicalRecipeJoin($arguments) {
      var s, sep, i, s0,
        $length = $arguments.length;
      for (s = "", sep = "", i = 0; i < $length; ++i, sep = ",") {
        s0 = $arguments[i]._canonicalRecipe;
        if (A.assertTest(typeof s0 == "string"))
          A.assertThrow("Missing canonical recipe");
        s += sep + s0;
      }
      return s;
    },
    _Universe__canonicalRecipeJoinNamed($arguments) {
      var s, sep, i, t1, nameSep, s0,
        $length = $arguments.length;
      A.assertHelper($length % 3 === 0);
      for (s = "", sep = "", i = 0; i < $length; i += 3, sep = ",") {
        t1 = $arguments[i];
        nameSep = $arguments[i + 1] ? "!" : ":";
        s0 = $arguments[i + 2]._canonicalRecipe;
        if (A.assertTest(typeof s0 == "string"))
          A.assertThrow("Missing canonical recipe");
        s += sep + t1 + nameSep + s0;
      }
      return s;
    },
    _Universe__lookupInterfaceRti(universe, $name, $arguments) {
      var s, probe, rti, t1;
      A.assertHelper(typeof $name == "string");
      s = $name;
      if ($arguments.length > 0)
        s += "<" + A._Universe__canonicalRecipeJoin($arguments) + ">";
      probe = universe.eC.get(s);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 8;
      rti._primary = $name;
      rti._rest = $arguments;
      if ($arguments.length > 0)
        rti._precomputed1 = $arguments[0];
      rti._canonicalRecipe = s;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(s, t1);
      return t1;
    },
    _Universe__lookupBindingRti(universe, base, $arguments) {
      var newBase, newArguments, s, key, probe, rti,
        t1 = base._kind;
      if (t1 === 9) {
        A.assertHelper(t1 === 9);
        newBase = base._primary;
        newArguments = A.Rti__getBindingArguments(base).concat($arguments);
      } else {
        newArguments = $arguments;
        newBase = base;
      }
      s = newBase._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      key = s + (";<" + A._Universe__canonicalRecipeJoin(newArguments) + ">");
      probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 9;
      rti._primary = newBase;
      rti._rest = newArguments;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupRecordRti(universe, partialShapeTag, fields) {
      var rti, t1,
        key = "+" + (partialShapeTag + "(" + A._Universe__canonicalRecipeJoin(fields) + ")"),
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 10;
      rti._primary = partialShapeTag;
      rti._rest = fields;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupFunctionRti(universe, returnType, parameters) {
      var requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, recipe, sep, key, probe, rti, t1,
        s = returnType._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      requiredPositional = parameters._requiredPositional;
      requiredPositionalLength = requiredPositional.length;
      optionalPositional = parameters._optionalPositional;
      optionalPositionalLength = optionalPositional.length;
      named = parameters._named;
      namedLength = named.length;
      A.assertHelper(optionalPositionalLength === 0 || namedLength === 0);
      recipe = "(" + A._Universe__canonicalRecipeJoin(requiredPositional);
      if (optionalPositionalLength > 0) {
        sep = requiredPositionalLength > 0 ? "," : "";
        recipe += sep + "[" + A._Universe__canonicalRecipeJoin(optionalPositional) + "]";
      }
      if (namedLength > 0) {
        sep = requiredPositionalLength > 0 ? "," : "";
        recipe += sep + "{" + A._Universe__canonicalRecipeJoinNamed(named) + "}";
      }
      key = s + (recipe + ")");
      probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 11;
      rti._primary = returnType;
      rti._rest = parameters;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupGenericFunctionRti(universe, baseFunctionType, bounds, normalize) {
      var key, probe, t1,
        s = baseFunctionType._canonicalRecipe;
      if (A.assertTest(typeof s == "string"))
        A.assertThrow("Missing canonical recipe");
      key = s + ("<" + A._Universe__canonicalRecipeJoin(bounds) + ">");
      probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      t1 = A._Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize) {
      var $length, typeArguments, count, i, bound, substitutedBase, substitutedBounds, rti;
      if (normalize) {
        $length = bounds.length;
        typeArguments = A._Utils_newArrayOrEmpty($length);
        for (count = 0, i = 0; i < $length; ++i) {
          bound = bounds[i];
          if (bound._kind === 1) {
            typeArguments[i] = bound;
            ++count;
          }
        }
        if (count > 0) {
          substitutedBase = A._substitute(universe, baseFunctionType, typeArguments, 0);
          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, 0);
          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, bounds !== substitutedBounds);
        }
      }
      rti = new A.Rti(null, null);
      rti._kind = 12;
      rti._primary = baseFunctionType;
      rti._rest = bounds;
      rti._canonicalRecipe = key;
      return A._Universe__installTypeTests(universe, rti);
    },
    _Parser_create(universe, environment, recipe, normalize) {
      return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize};
    },
    _Parser_parse(parser) {
      var t1, i, ch, t2, t3, u, array, end, item,
        source = parser.r,
        stack = parser.s;
      for (t1 = source.length, i = 0; i < t1;) {
        ch = source.charCodeAt(i);
        if (ch >= 48 && ch <= 57)
          i = A._Parser_handleDigit(i + 1, ch, source, stack);
        else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124)
          i = A._Parser_handleIdentifier(parser, i, source, stack, false);
        else if (ch === 46)
          i = A._Parser_handleIdentifier(parser, i, source, stack, true);
        else {
          ++i;
          switch (ch) {
            case 44:
              break;
            case 58:
              stack.push(false);
              break;
            case 33:
              stack.push(true);
              break;
            case 59:
              stack.push(A._Parser_toType(parser.u, parser.e, stack.pop()));
              break;
            case 94:
              t2 = parser.u;
              t3 = stack.pop();
              A.assertHelper(typeof t3 == "number");
              stack.push(A._Universe__lookupGenericFunctionParameterRti(t2, t3));
              break;
            case 35:
              stack.push(A._Universe__lookupTerminalRti(parser.u, 5, "#"));
              break;
            case 64:
              stack.push(A._Universe__lookupTerminalRti(parser.u, 2, "@"));
              break;
            case 126:
              stack.push(A._Universe__lookupTerminalRti(parser.u, 3, "~"));
              break;
            case 60:
              stack.push(parser.p);
              parser.p = stack.length;
              break;
            case 62:
              A._Parser_handleTypeArguments(parser, stack);
              break;
            case 38:
              A._Parser_handleExtendedOperations(parser, stack);
              break;
            case 63:
              u = parser.u;
              stack.push(A._Universe__lookupQuestionRti(u, A._Parser_toType(u, parser.e, stack.pop()), parser.n));
              break;
            case 47:
              u = parser.u;
              stack.push(A._Universe__lookupFutureOrRti(u, A._Parser_toType(u, parser.e, stack.pop()), parser.n));
              break;
            case 40:
              stack.push(-3);
              stack.push(parser.p);
              parser.p = stack.length;
              break;
            case 41:
              A._Parser_handleArguments(parser, stack);
              break;
            case 91:
              stack.push(parser.p);
              parser.p = stack.length;
              break;
            case 93:
              array = stack.splice(parser.p);
              A._Parser_toTypes(parser.u, parser.e, array);
              parser.p = stack.pop();
              stack.push(array);
              stack.push(-1);
              break;
            case 123:
              stack.push(parser.p);
              parser.p = stack.length;
              break;
            case 125:
              array = stack.splice(parser.p);
              A._Parser_toTypesNamed(parser.u, parser.e, array);
              parser.p = stack.pop();
              stack.push(array);
              stack.push(-2);
              break;
            case 43:
              end = source.indexOf("(", i);
              A.assertHelper(end >= 0);
              stack.push(source.substring(i, end));
              stack.push(-4);
              stack.push(parser.p);
              parser.p = stack.length;
              i = end + 1;
              break;
            default:
              throw "Bad character " + ch;
          }
        }
      }
      item = stack.pop();
      return A._Parser_toType(parser.u, parser.e, item);
    },
    _Parser_handleDigit(i, digit, source, stack) {
      var t1, ch,
        value = digit - 48;
      for (t1 = source.length; i < t1; ++i) {
        ch = source.charCodeAt(i);
        if (!(ch >= 48 && ch <= 57))
          break;
        value = value * 10 + (ch - 48);
      }
      stack.push(value);
      return i;
    },
    _Parser_handleIdentifier(parser, start, source, stack, hasPeriod) {
      var t1, ch, t2, string, environment, rule, recipe,
        i = start + 1;
      for (t1 = source.length; i < t1; ++i) {
        ch = source.charCodeAt(i);
        if (ch === 46) {
          if (hasPeriod)
            break;
          hasPeriod = true;
        } else {
          if (!((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124))
            t2 = ch >= 48 && ch <= 57;
          else
            t2 = true;
          if (!t2)
            break;
        }
      }
      string = source.substring(start, i);
      if (hasPeriod) {
        t1 = parser.u;
        environment = parser.e;
        t2 = environment._kind;
        if (t2 === 9) {
          A.assertHelper(t2 === 9);
          environment = environment._primary;
        }
        A.assertHelper(environment._kind === 8);
        rule = A._Universe_findRule(t1, environment._primary);
        A.assertHelper(rule != null);
        recipe = rule[string];
        if (recipe == null)
          A.throwExpression('No "' + string + '" in "' + A.Rti__getCanonicalRecipe(environment) + '"');
        stack.push(A._Universe_evalInEnvironment(t1, environment, recipe));
      } else
        stack.push(string);
      return i;
    },
    _Parser_handleTypeArguments(parser, stack) {
      var base,
        universe = parser.u,
        $arguments = A._Parser_collectArray(parser, stack),
        head = stack.pop();
      if (typeof head == "string")
        stack.push(A._Universe__lookupInterfaceRti(universe, head, $arguments));
      else {
        base = A._Parser_toType(universe, parser.e, head);
        switch (base._kind) {
          case 11:
            stack.push(A._Universe__lookupGenericFunctionRti(universe, base, $arguments, parser.n));
            break;
          default:
            stack.push(A._Universe__lookupBindingRti(universe, base, $arguments));
            break;
        }
      }
    },
    _Parser_handleArguments(parser, stack) {
      var requiredPositional, returnType, parameters,
        universe = parser.u,
        head = stack.pop(),
        optionalPositional = null, named = null;
      if (typeof head == "number")
        switch (head) {
          case -1:
            optionalPositional = stack.pop();
            break;
          case -2:
            named = stack.pop();
            break;
          default:
            stack.push(head);
            break;
        }
      else
        stack.push(head);
      requiredPositional = A._Parser_collectArray(parser, stack);
      head = stack.pop();
      switch (head) {
        case -3:
          head = stack.pop();
          if (optionalPositional == null)
            optionalPositional = universe.sEA;
          if (named == null)
            named = universe.sEA;
          returnType = A._Parser_toType(universe, parser.e, head);
          parameters = new A._FunctionParameters();
          parameters._requiredPositional = requiredPositional;
          parameters._optionalPositional = optionalPositional;
          parameters._named = named;
          stack.push(A._Universe__lookupFunctionRti(universe, returnType, parameters));
          return;
        case -4:
          A.assertHelper(optionalPositional == null);
          A.assertHelper(named == null);
          head = stack.pop();
          A.assertHelper(typeof head == "string");
          stack.push(A._Universe__lookupRecordRti(universe, head, requiredPositional));
          return;
        default:
          throw A.wrapException(A.AssertionError$("Unexpected state under `()`: " + A.S(head)));
      }
    },
    _Parser_handleExtendedOperations(parser, stack) {
      var $top = stack.pop();
      if (0 === $top) {
        stack.push(A._Universe__lookupTerminalRti(parser.u, 1, "0&"));
        return;
      }
      if (1 === $top) {
        stack.push(A._Universe__lookupTerminalRti(parser.u, 4, "1&"));
        return;
      }
      throw A.wrapException(A.AssertionError$("Unexpected extended operation " + A.S($top)));
    },
    _Parser_collectArray(parser, stack) {
      var array = stack.splice(parser.p);
      A._Parser_toTypes(parser.u, parser.e, array);
      parser.p = stack.pop();
      return array;
    },
    _Parser_toType(universe, environment, item) {
      if (typeof item == "string")
        return A._Universe__lookupInterfaceRti(universe, item, universe.sEA);
      else if (typeof item == "number") {
        environment.toString;
        return A._Parser_indexToType(universe, environment, item);
      } else
        return item;
    },
    _Parser_toTypes(universe, environment, items) {
      var i,
        $length = items.length;
      for (i = 0; i < $length; ++i)
        items[i] = A._Parser_toType(universe, environment, items[i]);
    },
    _Parser_toTypesNamed(universe, environment, items) {
      var i,
        $length = items.length;
      A.assertHelper($length % 3 === 0);
      for (i = 2; i < $length; i += 3)
        items[i] = A._Parser_toType(universe, environment, items[i]);
    },
    _Parser_indexToType(universe, environment, index) {
      var typeArguments, len,
        t1 = environment._kind,
        kind = t1;
      if (kind === 9) {
        if (index === 0) {
          A.assertHelper(t1 === 9);
          return environment._primary;
        }
        typeArguments = A.Rti__getBindingArguments(environment);
        len = typeArguments.length;
        if (index <= len)
          return typeArguments[index - 1];
        index -= len;
        A.assertHelper(t1 === 9);
        environment = environment._primary;
        kind = environment._kind;
      } else if (index === 0)
        return environment;
      if (kind !== 8)
        throw A.wrapException(A.AssertionError$("Indexed base must be an interface type"));
      typeArguments = A.Rti__getInterfaceTypeArguments(environment);
      if (index <= typeArguments.length)
        return typeArguments[index - 1];
      throw A.wrapException(A.AssertionError$("Bad index " + index + " for " + environment.toString$0(0)));
    },
    isSubtype(universe, s, t) {
      var result,
        sCache = s._isSubtypeCache;
      if (sCache == null)
        sCache = s._isSubtypeCache = new Map();
      result = sCache.get(t);
      if (result == null) {
        result = A._isSubtype(universe, s, null, t, null);
        sCache.set(t, result);
      }
      return result;
    },
    _isSubtype(universe, s, sEnv, t, tEnv) {
      var sKind, t1, leftTypeVariable, tKind, t2, sBounds, tBounds, sLength, i, sBound, tBound;
      if (s === t)
        return true;
      if (A.isTopType(t))
        return true;
      sKind = s._kind;
      if (sKind === 4)
        return true;
      if (A.isTopType(s))
        return false;
      t1 = s._kind;
      if (t1 === 1)
        return true;
      leftTypeVariable = sKind === 13;
      if (leftTypeVariable) {
        A.assertHelper(t1 === 13);
        if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv))
          return true;
      }
      t1 = t._kind;
      tKind = t1;
      t2 = type$.Null;
      if (s === t2 || s === type$.JSNull) {
        if (tKind === 7) {
          A.assertHelper(t1 === 7);
          return A._isSubtype(universe, s, sEnv, t._primary, tEnv);
        }
        return t === t2 || t === type$.JSNull || tKind === 6;
      }
      if (t === type$.Object) {
        if (sKind === 7) {
          A.assertHelper(s._kind === 7);
          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
        }
        return sKind !== 6;
      }
      if (sKind === 7) {
        A.assertHelper(s._kind === 7);
        if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv))
          return false;
        return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv);
      }
      if (sKind === 6) {
        if (A._isSubtype(universe, t2, sEnv, t, tEnv)) {
          A.assertHelper(s._kind === 6);
          t1 = A._isSubtype(universe, s._primary, sEnv, t, tEnv);
        } else
          t1 = false;
        return t1;
      }
      if (tKind === 7) {
        A.assertHelper(t1 === 7);
        if (A._isSubtype(universe, s, sEnv, t._primary, tEnv))
          return true;
        return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv);
      }
      if (tKind === 6) {
        if (!A._isSubtype(universe, s, sEnv, t2, tEnv)) {
          A.assertHelper(t._kind === 6);
          t1 = A._isSubtype(universe, s, sEnv, t._primary, tEnv);
        } else
          t1 = true;
        return t1;
      }
      if (leftTypeVariable)
        return false;
      t1 = sKind !== 11;
      if ((!t1 || sKind === 12) && t === type$.Function)
        return true;
      t2 = sKind === 10;
      if (t2 && t === type$.Record)
        return true;
      if (tKind === 12) {
        if (s === type$.JavaScriptFunction)
          return true;
        if (sKind !== 12)
          return false;
        sBounds = A.Rti__getGenericFunctionBounds(s);
        tBounds = A.Rti__getGenericFunctionBounds(t);
        sLength = sBounds.length;
        if (sLength !== tBounds.length)
          return false;
        sEnv = sEnv == null ? sBounds : sBounds.concat(sEnv);
        tEnv = tEnv == null ? tBounds : tBounds.concat(tEnv);
        for (i = 0; i < sLength; ++i) {
          sBound = sBounds[i];
          tBound = tBounds[i];
          if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv))
            return false;
        }
        A.assertHelper(s._kind === 12);
        t1 = s._primary;
        A.assertHelper(t._kind === 12);
        return A._isFunctionSubtype(universe, t1, sEnv, t._primary, tEnv);
      }
      if (tKind === 11) {
        if (s === type$.JavaScriptFunction)
          return true;
        if (t1)
          return false;
        return A._isFunctionSubtype(universe, s, sEnv, t, tEnv);
      }
      if (sKind === 8) {
        if (tKind !== 8)
          return false;
        return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv);
      }
      if (t2 && tKind === 10)
        return A._isRecordSubtype(universe, s, sEnv, t, tEnv);
      return false;
    },
    _isFunctionSubtype(universe, s, sEnv, t, tEnv) {
      var t1, sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired;
      A.assertHelper(s._kind === 11);
      A.assertHelper(t._kind === 11);
      A.assertHelper(s._kind === 11);
      t1 = s._primary;
      A.assertHelper(t._kind === 11);
      if (!A._isSubtype(universe, t1, sEnv, t._primary, tEnv))
        return false;
      A.assertHelper(s._kind === 11);
      sParameters = s._rest;
      A.assertHelper(t._kind === 11);
      tParameters = t._rest;
      sRequiredPositional = sParameters._requiredPositional;
      tRequiredPositional = tParameters._requiredPositional;
      sRequiredPositionalLength = sRequiredPositional.length;
      tRequiredPositionalLength = tRequiredPositional.length;
      if (sRequiredPositionalLength > tRequiredPositionalLength)
        return false;
      requiredPositionalDelta = tRequiredPositionalLength - sRequiredPositionalLength;
      sOptionalPositional = sParameters._optionalPositional;
      tOptionalPositional = tParameters._optionalPositional;
      sOptionalPositionalLength = sOptionalPositional.length;
      tOptionalPositionalLength = tOptionalPositional.length;
      if (sRequiredPositionalLength + sOptionalPositionalLength < tRequiredPositionalLength + tOptionalPositionalLength)
        return false;
      for (i = 0; i < sRequiredPositionalLength; ++i) {
        t1 = sRequiredPositional[i];
        if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv))
          return false;
      }
      for (i = 0; i < requiredPositionalDelta; ++i) {
        t1 = sOptionalPositional[i];
        if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv))
          return false;
      }
      for (i = 0; i < tOptionalPositionalLength; ++i) {
        t1 = sOptionalPositional[requiredPositionalDelta + i];
        if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv))
          return false;
      }
      sNamed = sParameters._named;
      tNamed = tParameters._named;
      sNamedLength = sNamed.length;
      tNamedLength = tNamed.length;
      for (sIndex = 0, tIndex = 0; tIndex < tNamedLength; tIndex += 3) {
        tName = tNamed[tIndex];
        for (;;) {
          if (sIndex >= sNamedLength)
            return false;
          sName = sNamed[sIndex];
          sIndex += 3;
          if (tName < sName)
            return false;
          sIsRequired = sNamed[sIndex - 2];
          if (sName < tName) {
            if (sIsRequired)
              return false;
            continue;
          }
          t1 = tNamed[tIndex + 1];
          if (sIsRequired && !t1)
            return false;
          t1 = sNamed[sIndex - 1];
          if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv))
            return false;
          break;
        }
      }
      while (sIndex < sNamedLength) {
        if (sNamed[sIndex + 1])
          return false;
        sIndex += 3;
      }
      return true;
    },
    _isInterfaceSubtype(universe, s, sEnv, t, tEnv) {
      var sName, tName, t1, rule, recipes, $length, supertypeArgs, i;
      A.assertHelper(s._kind === 8);
      sName = s._primary;
      A.assertHelper(t._kind === 8);
      tName = t._primary;
      while (t1 = sName === tName, !t1) {
        rule = universe.tR[sName];
        if (rule == null)
          return false;
        if (typeof rule == "string") {
          sName = rule;
          continue;
        }
        recipes = rule[tName];
        if (recipes == null)
          return false;
        $length = recipes.length;
        supertypeArgs = $length > 0 ? new Array($length) : init.typeUniverse.sEA;
        for (i = 0; i < $length; ++i)
          supertypeArgs[i] = A._Universe_evalInEnvironment(universe, s, recipes[i]);
        A.assertHelper(t._kind === 8);
        return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv);
      }
      A.assertHelper(t1);
      return A._areArgumentsSubtypes(universe, A.Rti__getInterfaceTypeArguments(s), null, sEnv, A.Rti__getInterfaceTypeArguments(t), tEnv);
    },
    _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv) {
      var i,
        $length = sArgs.length;
      A.assertHelper($length === tArgs.length);
      for (i = 0; i < $length; ++i)
        if (!A._isSubtype(universe, sArgs[i], sEnv, tArgs[i], tEnv))
          return false;
      return true;
    },
    _isRecordSubtype(universe, s, sEnv, t, tEnv) {
      var t1, i,
        sFields = A.Rti__getRecordFields(s),
        tFields = A.Rti__getRecordFields(t),
        sCount = sFields.length;
      if (sCount !== tFields.length)
        return false;
      A.assertHelper(s._kind === 10);
      t1 = s._primary;
      A.assertHelper(t._kind === 10);
      if (t1 !== t._primary)
        return false;
      for (i = 0; i < sCount; ++i)
        if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv))
          return false;
      return true;
    },
    isNullable(t) {
      var kind = t._kind,
        t1 = true;
      if (!(t === type$.Null || t === type$.JSNull))
        if (!A.isTopType(t))
          if (kind !== 6)
            if (kind === 7) {
              A.assertHelper(t._kind === 7);
              t1 = A.isNullable(t._primary);
            } else
              t1 = false;
      return t1;
    },
    isTopType(t) {
      var kind = t._kind;
      return kind === 2 || kind === 3 || kind === 4 || kind === 5 || t === type$.nullable_Object;
    },
    _Utils_objectAssign(o, other) {
      var i, key,
        keys = Object.keys(other),
        $length = keys.length;
      for (i = 0; i < $length; ++i) {
        key = keys[i];
        o[key] = other[key];
      }
    },
    _Utils_newArrayOrEmpty($length) {
      return $length > 0 ? new Array($length) : init.typeUniverse.sEA;
    },
    Rti: function Rti(t0, t1) {
      var _ = this;
      _._as = t0;
      _._is = t1;
      _._cachedRuntimeType = _._specializedTestResource = _._isSubtypeCache = _._precomputed1 = null;
      _._kind = 0;
      _._canonicalRecipe = _._bindCache = _._evalCache = _._rest = _._primary = null;
    },
    _FunctionParameters: function _FunctionParameters() {
      this._named = this._optionalPositional = this._requiredPositional = null;
    },
    _Type: function _Type(t0) {
      this._rti = t0;
    },
    _Error: function _Error() {
    },
    _TypeError: function _TypeError(t0) {
      this._message = t0;
    },
    _AsyncRun__initializeScheduleImmediate() {
      var t1, div, span;
      if (self.scheduleImmediate != null)
        return A.async__AsyncRun__scheduleImmediateJsOverride$closure();
      if (self.MutationObserver != null && self.document != null) {
        t1 = {};
        div = self.document.createElement("div");
        span = self.document.createElement("span");
        t1.storedCallback = null;
        new self.MutationObserver(A.convertDartClosureToJS(new A._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true});
        return new A._AsyncRun__initializeScheduleImmediate_closure(t1, div, span);
      } else if (self.setImmediate != null)
        return A.async__AsyncRun__scheduleImmediateWithSetImmediate$closure();
      return A.async__AsyncRun__scheduleImmediateWithTimer$closure();
    },
    _AsyncRun__scheduleImmediateJsOverride(callback) {
      self.scheduleImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateJsOverride_internalCallback(type$.void_Function._as(callback)), 0));
    },
    _AsyncRun__scheduleImmediateWithSetImmediate(callback) {
      self.setImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(type$.void_Function._as(callback)), 0));
    },
    _AsyncRun__scheduleImmediateWithTimer(callback) {
      A.Timer__createTimer(B.Duration_0, type$.void_Function._as(callback));
    },
    Timer__createTimer(duration, callback) {
      var milliseconds = B.JSInt_methods._tdivFast$1(duration._duration, 1000);
      return A._TimerImpl$(milliseconds < 0 ? 0 : milliseconds, callback);
    },
    _TimerImpl$(milliseconds, callback) {
      var t1 = new A._TimerImpl();
      t1._TimerImpl$2(milliseconds, callback);
      return t1;
    },
    _TimerImpl$periodic(milliseconds, callback) {
      var t1 = new A._TimerImpl();
      t1._TimerImpl$periodic$2(milliseconds, callback);
      return t1;
    },
    _makeAsyncAwaitCompleter($T) {
      return new A._AsyncAwaitCompleter(new A._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncAwaitCompleter<0>"));
    },
    _asyncStartSync(bodyFunction, completer) {
      bodyFunction.call$2(0, null);
      completer.isSync = true;
      return completer._future;
    },
    _asyncAwait(object, bodyFunction) {
      A._awaitOnObject(object, bodyFunction);
    },
    _asyncReturn(object, completer) {
      completer.complete$1(object);
    },
    _asyncRethrow(object, completer) {
      completer.completeError$2(A.unwrapException(object), A.getTraceFromException(object));
    },
    _awaitOnObject(object, bodyFunction) {
      var t1, future,
        thenCallback = new A._awaitOnObject_closure(bodyFunction),
        errorCallback = new A._awaitOnObject_closure0(bodyFunction);
      if (object instanceof A._Future)
        object._thenAwait$1$2(thenCallback, errorCallback, type$.dynamic);
      else {
        t1 = type$.dynamic;
        if (object instanceof A._Future)
          object.then$1$2$onError(thenCallback, errorCallback, t1);
        else {
          future = new A._Future($.Zone__current, type$._Future_dynamic);
          future._state = 8;
          future._resultOrListeners = object;
          future._thenAwait$1$2(thenCallback, errorCallback, t1);
        }
      }
    },
    _wrapJsFunctionForAsync($function) {
      var $protected = function(fn, ERROR) {
        return function(errorCode, result) {
          while (true) {
            try {
              fn(errorCode, result);
              break;
            } catch (error) {
              result = error;
              errorCode = ERROR;
            }
          }
        };
      }($function, 1);
      return $.Zone__current.registerBinaryCallback$3$1(new A._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic);
    },
    _SyncStarIterator__terminatedBody(_1, _2, _3) {
      return 0;
    },
    AsyncError_defaultStackTrace(error) {
      var stackTrace;
      if (type$.Error._is(error)) {
        stackTrace = error.get$stackTrace();
        if (stackTrace != null)
          return stackTrace;
      }
      return B._StringStackTrace_OdL;
    },
    Future_Future(computation, $T) {
      var result = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
      A.Timer_Timer(B.Duration_0, new A.Future_Future_closure(computation, result));
      return result;
    },
    Future_Future$sync(computation, $T) {
      var error, stackTrace, exception, t1, t2, t3, t4, result = null;
      try {
        result = computation.call$0();
      } catch (exception) {
        error = A.unwrapException(exception);
        stackTrace = A.getTraceFromException(exception);
        t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
        t2 = error;
        t3 = stackTrace;
        t4 = A._interceptError(t2, t3);
        if (t4 == null)
          t2 = new A.AsyncError(t2, t3 == null ? A.AsyncError_defaultStackTrace(t2) : t3);
        else
          t2 = t4;
        t1._asyncCompleteErrorObject$1(t2);
        return t1;
      }
      return $T._eval$1("Future<0>")._is(result) ? result : A._Future$value(result, $T);
    },
    Future_Future$value(value, $T) {
      var t1 = value == null ? $T._as(value) : value,
        t2 = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
      t2._asyncComplete$1(t1);
      return t2;
    },
    Future_Future$delayed(duration, $T) {
      var result;
      if (!$T._is(null))
        throw A.wrapException(A.ArgumentError$value(null, "computation", "The type parameter is not nullable"));
      result = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
      A.Timer_Timer(duration, new A.Future_Future$delayed_closure(null, result, $T));
      return result;
    },
    Future_wait(futures, $T) {
      var handleError, future, pos, e, s, t1, t2, exception, t3, t4, _box_0 = {}, cleanUp = null,
        eagerError = false,
        _future = new A._Future($.Zone__current, $T._eval$1("_Future<List<0>>"));
      _box_0.values = null;
      _box_0.remaining = 0;
      _box_0.stackTrace = _box_0.error = null;
      handleError = new A.Future_wait_handleError(_box_0, cleanUp, eagerError, _future);
      try {
        for (t1 = J.get$iterator$ax(futures), t2 = type$.Null; t1.moveNext$0();) {
          future = t1.get$current();
          pos = _box_0.remaining;
          future.then$1$2$onError(new A.Future_wait_closure(_box_0, pos, _future, $T, cleanUp, eagerError), handleError, t2);
          ++_box_0.remaining;
        }
        t1 = _box_0.remaining;
        if (t1 === 0) {
          t1 = _future;
          t1._completeWithValue$1(A._setArrayType([], $T._eval$1("JSArray<0>")));
          return t1;
        }
        _box_0.values = A.List_List$filled(t1, null, false, $T._eval$1("0?"));
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        if (_box_0.remaining === 0 || eagerError) {
          t1 = _future;
          t2 = e;
          t3 = s;
          t4 = A._interceptError(t2, t3);
          if (t4 == null)
            t2 = new A.AsyncError(t2, t3 == null ? A.AsyncError_defaultStackTrace(t2) : t3);
          else
            t2 = t4;
          t1._asyncCompleteErrorObject$1(t2);
          return t1;
        } else {
          _box_0.error = e;
          _box_0.stackTrace = s;
        }
      }
      return _future;
    },
    _interceptError(error, stackTrace) {
      var replacement, t1, t2,
        zone = $.Zone__current;
      if (zone === B.C__RootZone)
        return null;
      replacement = zone.errorCallback$2(error, stackTrace);
      if (replacement == null)
        return null;
      t1 = replacement.error;
      t2 = replacement.stackTrace;
      if (type$.Error._is(t1))
        A.Primitives_trySetStackTrace(t1, t2);
      return replacement;
    },
    _interceptUserError(error, stackTrace) {
      var replacement;
      if ($.Zone__current !== B.C__RootZone) {
        replacement = A._interceptError(error, stackTrace);
        if (replacement != null)
          return replacement;
      }
      if (stackTrace == null)
        if (type$.Error._is(error)) {
          stackTrace = error.get$stackTrace();
          if (stackTrace == null) {
            A.Primitives_trySetStackTrace(error, B._StringStackTrace_OdL);
            stackTrace = B._StringStackTrace_OdL;
          }
        } else
          stackTrace = B._StringStackTrace_OdL;
      else if (type$.Error._is(error))
        A.Primitives_trySetStackTrace(error, stackTrace);
      return new A.AsyncError(error, stackTrace);
    },
    _Future$zoneValue(value, _zone, $T) {
      var t1 = new A._Future(_zone, $T._eval$1("_Future<0>"));
      $T._as(value);
      t1._state = 8;
      t1._resultOrListeners = value;
      return t1;
    },
    _Future$value(value, $T) {
      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
      $T._as(value);
      t1._state = 8;
      t1._resultOrListeners = value;
      return t1;
    },
    _Future__chainCoreFuture(source, target, sync) {
      var t2, t3, t4, ignoreError, listeners, _box_0 = {},
        t1 = _box_0.source = source;
      A.assertHelper(target._state <= 3);
      for (t2 = type$._Future_dynamic; t3 = t1._state, t4 = (t3 & 4) !== 0, t4; t1 = source) {
        A.assertHelper(t4);
        source = t2._as(t1._resultOrListeners);
        _box_0.source = source;
      }
      if (t1 === target) {
        t2 = A.StackTrace_current();
        target._asyncCompleteErrorObject$1(new A.AsyncError(new A.ArgumentError(true, t1, null, "Cannot complete a future with itself"), t2));
        return;
      }
      ignoreError = target._state & 1;
      t2 = t1._state = t3 | ignoreError;
      if ((t2 & 24) === 0) {
        listeners = type$.nullable__FutureListener_dynamic_dynamic._as(target._resultOrListeners);
        A.assertHelper(target._state <= 3);
        target._state = target._state & 1 | 4;
        target._resultOrListeners = t1;
        _box_0.source._prependListeners$1(listeners);
        return;
      }
      if (!sync)
        if (target._resultOrListeners == null)
          t1 = (t2 & 16) === 0 || ignoreError !== 0;
        else
          t1 = false;
      else
        t1 = true;
      if (t1) {
        listeners = target._removeListeners$0();
        target._cloneResult$1(_box_0.source);
        A._Future__propagateToListeners(target, listeners);
        return;
      }
      target._setPendingComplete$0();
      target._zone.scheduleMicrotask$1(new A._Future__chainCoreFuture_closure(_box_0, target));
    },
    _Future__propagateToListeners(source, listeners) {
      var t2, t3, _box_0, t4, t5, hasError, asyncError, nextListener, nextListener0, sourceResult, t6, zone, previous, oldZone, result, current, _box_1 = {},
        t1 = _box_1.source = source;
      for (t2 = type$.AsyncError, t3 = type$.nullable__FutureListener_dynamic_dynamic;;) {
        _box_0 = {};
        A.assertHelper((t1._state & 24) !== 0);
        t1 = _box_1.source;
        t4 = t1._state;
        t5 = (t4 & 16) === 0;
        hasError = !t5;
        if (listeners == null) {
          if (hasError && (t4 & 1) === 0) {
            A.assertHelper(hasError);
            asyncError = t2._as(t1._resultOrListeners);
            _box_1.source._zone.handleUncaughtError$2(asyncError.error, asyncError.stackTrace);
          }
          return;
        }
        _box_0.listener = listeners;
        nextListener = listeners._nextListener;
        for (t1 = listeners; nextListener != null; t1 = nextListener, nextListener = nextListener0) {
          t1._nextListener = null;
          A._Future__propagateToListeners(_box_1.source, t1);
          _box_0.listener = nextListener;
          nextListener0 = nextListener._nextListener;
        }
        t4 = _box_1.source;
        sourceResult = t4._resultOrListeners;
        _box_0.listenerHasError = hasError;
        _box_0.listenerValueOrError = sourceResult;
        if (t5) {
          t6 = t1.state;
          t6 = (t6 & 1) !== 0 || (t6 & 15) === 8;
        } else
          t6 = true;
        if (t6) {
          zone = t1.result._zone;
          if (hasError) {
            t1 = t4._zone;
            t1 = !(t1 === zone || t1.get$errorZone() === zone.get$errorZone());
          } else
            t1 = false;
          if (t1) {
            t1 = _box_1.source;
            A.assertHelper((t1._state & 16) !== 0);
            asyncError = t2._as(t1._resultOrListeners);
            _box_1.source._zone.handleUncaughtError$2(asyncError.error, asyncError.stackTrace);
            return;
          }
          t1 = $.Zone__current;
          if (t1 !== zone) {
            A.assertHelper(zone !== t1);
            previous = $.Zone__current;
            $.Zone__current = zone;
            oldZone = previous;
          } else
            oldZone = null;
          t1 = _box_0.listener.state;
          if ((t1 & 15) === 8)
            new A._Future__propagateToListeners_handleWhenCompleteCallback(_box_0, _box_1, hasError).call$0();
          else if (t5) {
            if ((t1 & 1) !== 0)
              new A._Future__propagateToListeners_handleValueCallback(_box_0, sourceResult).call$0();
          } else if ((t1 & 2) !== 0)
            new A._Future__propagateToListeners_handleError(_box_1, _box_0).call$0();
          if (oldZone != null)
            $.Zone__current = oldZone;
          t1 = _box_0.listenerValueOrError;
          if (t1 instanceof A._Future) {
            t4 = _box_0.listener.$ti;
            t4 = t4._eval$1("Future<2>")._is(t1) || !t4._rest[1]._is(t1);
          } else
            t4 = false;
          if (t4) {
            result = _box_0.listener.result;
            if ((t1._state & 24) !== 0) {
              A.assertHelper((result._state & 24) === 0);
              current = t3._as(result._resultOrListeners);
              result._resultOrListeners = null;
              listeners = result._reverseListeners$1(current);
              result._cloneResult$1(t1);
              _box_1.source = t1;
              continue;
            } else
              A._Future__chainCoreFuture(t1, result, true);
            return;
          }
        }
        result = _box_0.listener.result;
        A.assertHelper((result._state & 24) === 0);
        current = t3._as(result._resultOrListeners);
        result._resultOrListeners = null;
        listeners = result._reverseListeners$1(current);
        t1 = _box_0.listenerHasError;
        t4 = _box_0.listenerValueOrError;
        t5 = result._state & 24;
        if (!t1) {
          result.$ti._precomputed1._as(t4);
          A.assertHelper(t5 === 0);
          result._state = 8;
          result._resultOrListeners = t4;
        } else {
          t2._as(t4);
          A.assertHelper(t5 === 0);
          result._state = result._state & 1 | 16;
          result._resultOrListeners = t4;
        }
        _box_1.source = result;
        t1 = result;
      }
    },
    _registerErrorHandler(errorHandler, zone) {
      if (type$.dynamic_Function_Object_StackTrace._is(errorHandler))
        return zone.registerBinaryCallback$3$1(errorHandler, type$.dynamic, type$.Object, type$.StackTrace);
      if (type$.dynamic_Function_Object._is(errorHandler))
        return zone.registerUnaryCallback$2$1(errorHandler, type$.dynamic, type$.Object);
      throw A.wrapException(A.ArgumentError$value(errorHandler, "onError", string$.Error_));
    },
    _microtaskLoop() {
      var entry, next;
      for (entry = $._nextCallback; entry != null; entry = $._nextCallback) {
        $._lastPriorityCallback = null;
        next = entry.next;
        $._nextCallback = next;
        if (next == null)
          $._lastCallback = null;
        entry.callback.call$0();
      }
    },
    _startMicrotaskLoop() {
      $._isInCallbackLoop = true;
      try {
        A._microtaskLoop();
      } finally {
        $._lastPriorityCallback = null;
        $._isInCallbackLoop = false;
        if ($._nextCallback != null)
          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure());
      }
    },
    _scheduleAsyncCallback(callback) {
      var newEntry = new A._AsyncCallbackEntry(callback),
        lastCallback = $._lastCallback;
      if (lastCallback == null) {
        $._nextCallback = $._lastCallback = newEntry;
        if (!$._isInCallbackLoop)
          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure());
      } else
        $._lastCallback = lastCallback.next = newEntry;
    },
    _schedulePriorityAsyncCallback(callback) {
      var entry, lastPriorityCallback, next,
        t1 = $._nextCallback;
      if (t1 == null) {
        A._scheduleAsyncCallback(callback);
        $._lastPriorityCallback = $._lastCallback;
        return;
      }
      entry = new A._AsyncCallbackEntry(callback);
      lastPriorityCallback = $._lastPriorityCallback;
      if (lastPriorityCallback == null) {
        entry.next = t1;
        $._nextCallback = $._lastPriorityCallback = entry;
      } else {
        next = lastPriorityCallback.next;
        entry.next = next;
        $._lastPriorityCallback = lastPriorityCallback.next = entry;
        if (next == null)
          $._lastCallback = entry;
      }
    },
    scheduleMicrotask(callback) {
      var t1, _null = null,
        currentZone = $.Zone__current;
      if (B.C__RootZone === currentZone) {
        A._rootScheduleMicrotask(_null, _null, B.C__RootZone, callback);
        return;
      }
      if (B.C__RootZone === currentZone.get$_scheduleMicrotask().zone)
        t1 = B.C__RootZone.get$errorZone() === currentZone.get$errorZone();
      else
        t1 = false;
      if (t1) {
        A._rootScheduleMicrotask(_null, _null, currentZone, currentZone.registerCallback$1$1(callback, type$.void));
        return;
      }
      t1 = $.Zone__current;
      t1.scheduleMicrotask$1(t1.bindCallbackGuarded$1(callback));
    },
    StreamIterator_StreamIterator(stream, $T) {
      return new A._StreamIterator(A.checkNotNullable(stream, "stream", type$.Object), $T._eval$1("_StreamIterator<0>"));
    },
    StreamController_StreamController(onCancel, onListen, sync, $T) {
      var _null = null;
      return sync ? new A._SyncStreamController(onListen, _null, _null, onCancel, $T._eval$1("_SyncStreamController<0>")) : new A._AsyncStreamController(onListen, _null, _null, onCancel, $T._eval$1("_AsyncStreamController<0>"));
    },
    _runGuarded(notificationHandler) {
      var e, s, exception;
      if (notificationHandler == null)
        return;
      try {
        notificationHandler.call$0();
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        $.Zone__current.handleUncaughtError$2(e, s);
      }
    },
    _ControllerSubscription$(_controller, onData, onError, onDone, cancelOnError, $T) {
      var t1 = $.Zone__current,
        t2 = cancelOnError ? 1 : 0,
        t3 = onError != null ? 32 : 0,
        t4 = A._BufferingStreamSubscription__registerDataHandler(t1, onData, $T),
        t5 = A._BufferingStreamSubscription__registerErrorHandler(t1, onError),
        t6 = onDone == null ? A.async___nullDoneHandler$closure() : onDone;
      return new A._ControllerSubscription(_controller, t4, t5, t1.registerCallback$1$1(t6, type$.void), t1, t2 | t3, $T._eval$1("_ControllerSubscription<0>"));
    },
    _BufferingStreamSubscription__registerDataHandler(zone, handleData, $T) {
      var t1 = handleData == null ? A.async___nullDataHandler$closure() : handleData;
      return zone.registerUnaryCallback$2$1(t1, type$.void, $T);
    },
    _BufferingStreamSubscription__registerErrorHandler(zone, handleError) {
      if (handleError == null)
        handleError = A.async___nullErrorHandler$closure();
      if (type$.void_Function_Object_StackTrace._is(handleError))
        return zone.registerBinaryCallback$3$1(handleError, type$.dynamic, type$.Object, type$.StackTrace);
      if (type$.void_Function_Object._is(handleError))
        return zone.registerUnaryCallback$2$1(handleError, type$.dynamic, type$.Object);
      throw A.wrapException(A.ArgumentError$("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.", null));
    },
    _nullDataHandler(value) {
    },
    _nullErrorHandler(error, stackTrace) {
      A._asObject(error);
      type$.StackTrace._as(stackTrace);
      $.Zone__current.handleUncaughtError$2(error, stackTrace);
    },
    _nullDoneHandler() {
    },
    _runUserCode(userCode, onSuccess, onError, $T) {
      var error, stackTrace, replacement, exception;
      try {
        onSuccess.call$1(userCode.call$0());
      } catch (exception) {
        error = A.unwrapException(exception);
        stackTrace = A.getTraceFromException(exception);
        replacement = A._interceptError(error, stackTrace);
        if (replacement != null)
          onError.call$2(replacement.error, replacement.stackTrace);
        else
          onError.call$2(error, stackTrace);
      }
    },
    _cancelAndError(subscription, future, error) {
      var cancelFuture = subscription.cancel$0();
      if (cancelFuture !== $.$get$Future__nullFuture())
        cancelFuture.whenComplete$1(new A._cancelAndError_closure(future, error));
      else
        future._completeErrorObject$1(error);
    },
    _cancelAndErrorClosure(subscription, future) {
      return new A._cancelAndErrorClosure_closure(subscription, future);
    },
    _cancelAndValue(subscription, future, value) {
      var cancelFuture = subscription.cancel$0();
      if (cancelFuture !== $.$get$Future__nullFuture())
        cancelFuture.whenComplete$1(new A._cancelAndValue_closure(future, value));
      else
        future._complete$1(value);
    },
    _StreamHandlerTransformer$(handleDone, $S, $T) {
      return new A._StreamHandlerTransformer(new A._StreamHandlerTransformer_closure(null, null, handleDone, $T, $S), $S._eval$1("@<0>")._bind$1($T)._eval$1("_StreamHandlerTransformer<1,2>"));
    },
    Timer_Timer(duration, callback) {
      var t1 = $.Zone__current;
      if (t1 === B.C__RootZone)
        return t1.createTimer$2(duration, callback);
      return t1.createTimer$2(duration, t1.bindCallbackGuarded$1(callback));
    },
    _rootHandleUncaughtError($self, $parent, zone, error, stackTrace) {
      A._rootHandleError(A._asObject(error), type$.StackTrace._as(stackTrace));
    },
    _rootHandleError(error, stackTrace) {
      A._schedulePriorityAsyncCallback(new A._rootHandleError_closure(error, stackTrace));
    },
    _rootRun($self, $parent, zone, f, $R) {
      var old, t1, previous;
      type$.nullable_Zone._as($self);
      type$.nullable_ZoneDelegate._as($parent);
      type$.Zone._as(zone);
      $R._eval$1("0()")._as(f);
      t1 = $.Zone__current;
      if (t1 === zone)
        return f.call$0();
      A.assertHelper(zone !== t1);
      previous = $.Zone__current;
      $.Zone__current = zone;
      old = previous;
      try {
        t1 = f.call$0();
        return t1;
      } finally {
        $.Zone__current = old;
      }
    },
    _rootRunUnary($self, $parent, zone, f, arg, $R, $T) {
      var old, t1, previous;
      type$.nullable_Zone._as($self);
      type$.nullable_ZoneDelegate._as($parent);
      type$.Zone._as(zone);
      $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f);
      $T._as(arg);
      t1 = $.Zone__current;
      if (t1 === zone)
        return f.call$1(arg);
      A.assertHelper(zone !== t1);
      previous = $.Zone__current;
      $.Zone__current = zone;
      old = previous;
      try {
        t1 = f.call$1(arg);
        return t1;
      } finally {
        $.Zone__current = old;
      }
    },
    _rootRunBinary($self, $parent, zone, f, arg1, arg2, $R, $T1, $T2) {
      var old, t1, previous;
      type$.nullable_Zone._as($self);
      type$.nullable_ZoneDelegate._as($parent);
      type$.Zone._as(zone);
      $R._eval$1("@<0>")._bind$1($T1)._bind$1($T2)._eval$1("1(2,3)")._as(f);
      $T1._as(arg1);
      $T2._as(arg2);
      t1 = $.Zone__current;
      if (t1 === zone)
        return f.call$2(arg1, arg2);
      A.assertHelper(zone !== t1);
      previous = $.Zone__current;
      $.Zone__current = zone;
      old = previous;
      try {
        t1 = f.call$2(arg1, arg2);
        return t1;
      } finally {
        $.Zone__current = old;
      }
    },
    _rootRegisterCallback($self, $parent, zone, f, $R) {
      return $R._eval$1("0()")._as(f);
    },
    _rootRegisterUnaryCallback($self, $parent, zone, f, $R, $T) {
      return $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f);
    },
    _rootRegisterBinaryCallback($self, $parent, zone, f, $R, $T1, $T2) {
      return $R._eval$1("@<0>")._bind$1($T1)._bind$1($T2)._eval$1("1(2,3)")._as(f);
    },
    _rootErrorCallback($self, $parent, zone, error, stackTrace) {
      A._asObject(error);
      type$.nullable_StackTrace._as(stackTrace);
      return null;
    },
    _rootScheduleMicrotask($self, $parent, zone, f) {
      var t1, t2;
      type$.void_Function._as(f);
      if (B.C__RootZone !== zone) {
        t1 = B.C__RootZone.get$errorZone();
        t2 = zone.get$errorZone();
        f = t1 !== t2 ? zone.bindCallbackGuarded$1(f) : zone.bindCallback$1$1(f, type$.void);
      }
      A._scheduleAsyncCallback(f);
    },
    _rootCreateTimer($self, $parent, zone, duration, callback) {
      type$.Duration._as(duration);
      type$.void_Function._as(callback);
      return A.Timer__createTimer(duration, B.C__RootZone !== zone ? zone.bindCallback$1$1(callback, type$.void) : callback);
    },
    _rootCreatePeriodicTimer($self, $parent, zone, duration, callback) {
      var milliseconds;
      type$.Duration._as(duration);
      type$.void_Function_Timer._as(callback);
      if (B.C__RootZone !== zone)
        callback = zone.bindUnaryCallback$2$1(callback, type$.void, type$.Timer);
      milliseconds = B.JSInt_methods._tdivFast$1(duration._duration, 1000);
      return A._TimerImpl$periodic(milliseconds < 0 ? 0 : milliseconds, callback);
    },
    _rootPrint($self, $parent, zone, line) {
      A.printString(A._asString(line));
    },
    _printToZone(line) {
      $.Zone__current.print$1(line);
    },
    _rootFork($self, $parent, zone, specification, zoneValues) {
      var valueMap, t1, handleUncaughtError;
      type$.nullable_ZoneSpecification._as(specification);
      type$.nullable_Map_of_nullable_Object_and_nullable_Object._as(zoneValues);
      $.printToZone = A.async___printToZone$closure();
      if (specification == null)
        specification = B._ZoneSpecification_Ipa;
      if (zoneValues == null)
        valueMap = zone.get$_map();
      else {
        t1 = type$.nullable_Object;
        valueMap = A.HashMap_HashMap$from(zoneValues, t1, t1);
      }
      t1 = new A._CustomZone(zone.get$_run(), zone.get$_runUnary(), zone.get$_runBinary(), zone.get$_registerCallback(), zone.get$_registerUnaryCallback(), zone.get$_registerBinaryCallback(), zone.get$_errorCallback(), zone.get$_scheduleMicrotask(), zone.get$_createTimer(), zone.get$_createPeriodicTimer(), zone.get$_print(), zone.get$_fork(), zone.get$_handleUncaughtError(), zone, valueMap);
      handleUncaughtError = specification.handleUncaughtError;
      if (handleUncaughtError != null)
        t1._handleUncaughtError = new A._ZoneFunction(t1, handleUncaughtError, type$._ZoneFunction_of_void_Function_Zone_ZoneDelegate_Zone_Object_StackTrace);
      return t1;
    },
    runZoned(body, zoneValues, $R) {
      return A._runZoned(body, zoneValues, null, $R);
    },
    _runZoned(body, zoneValues, specification, $R) {
      return $.Zone__current.fork$2$specification$zoneValues(specification, zoneValues).run$1$1(body, $R);
    },
    _AsyncRun__initializeScheduleImmediate_internalCallback: function _AsyncRun__initializeScheduleImmediate_internalCallback(t0) {
      this._box_0 = t0;
    },
    _AsyncRun__initializeScheduleImmediate_closure: function _AsyncRun__initializeScheduleImmediate_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.div = t1;
      this.span = t2;
    },
    _AsyncRun__scheduleImmediateJsOverride_internalCallback: function _AsyncRun__scheduleImmediateJsOverride_internalCallback(t0) {
      this.callback = t0;
    },
    _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback: function _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(t0) {
      this.callback = t0;
    },
    _TimerImpl: function _TimerImpl() {
      this._tick = 0;
    },
    _TimerImpl_internalCallback: function _TimerImpl_internalCallback(t0, t1) {
      this.$this = t0;
      this.callback = t1;
    },
    _TimerImpl$periodic_closure: function _TimerImpl$periodic_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.milliseconds = t1;
      _.start = t2;
      _.callback = t3;
    },
    _AsyncAwaitCompleter: function _AsyncAwaitCompleter(t0, t1) {
      this._future = t0;
      this.isSync = false;
      this.$ti = t1;
    },
    _awaitOnObject_closure: function _awaitOnObject_closure(t0) {
      this.bodyFunction = t0;
    },
    _awaitOnObject_closure0: function _awaitOnObject_closure0(t0) {
      this.bodyFunction = t0;
    },
    _wrapJsFunctionForAsync_closure: function _wrapJsFunctionForAsync_closure(t0) {
      this.$protected = t0;
    },
    _SyncStarIterator: function _SyncStarIterator(t0, t1) {
      var _ = this;
      _._body = t0;
      _._suspendedBodies = _._nestedIterator = _._datum = _._async$_current = null;
      _.$ti = t1;
    },
    _SyncStarIterable: function _SyncStarIterable(t0, t1) {
      this._outerHelper = t0;
      this.$ti = t1;
    },
    AsyncError: function AsyncError(t0, t1) {
      this.error = t0;
      this.stackTrace = t1;
    },
    _BroadcastStream: function _BroadcastStream(t0, t1) {
      this._controller = t0;
      this.$ti = t1;
    },
    _BroadcastSubscription: function _BroadcastSubscription(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._eventState = 0;
      _._async$_previous = _._async$_next = null;
      _._controller = t0;
      _._async$_onData = t1;
      _._onError = t2;
      _._onDone = t3;
      _._zone = t4;
      _._state = t5;
      _._pending = _._cancelFuture = null;
      _.$ti = t6;
    },
    _BroadcastStreamController: function _BroadcastStreamController() {
    },
    _SyncBroadcastStreamController: function _SyncBroadcastStreamController(t0, t1, t2) {
      var _ = this;
      _.onListen = t0;
      _.onCancel = t1;
      _._state = 0;
      _._doneFuture = _._addStreamState = _._lastSubscription = _._firstSubscription = null;
      _.$ti = t2;
    },
    _SyncBroadcastStreamController__sendData_closure: function _SyncBroadcastStreamController__sendData_closure(t0, t1) {
      this.$this = t0;
      this.data = t1;
    },
    _SyncBroadcastStreamController__sendError_closure: function _SyncBroadcastStreamController__sendError_closure(t0, t1, t2) {
      this.$this = t0;
      this.error = t1;
      this.stackTrace = t2;
    },
    _SyncBroadcastStreamController__sendDone_closure: function _SyncBroadcastStreamController__sendDone_closure(t0) {
      this.$this = t0;
    },
    Future_Future_closure: function Future_Future_closure(t0, t1) {
      this.computation = t0;
      this.result = t1;
    },
    Future_Future$delayed_closure: function Future_Future$delayed_closure(t0, t1, t2) {
      this.computation = t0;
      this.result = t1;
      this.T = t2;
    },
    Future_wait_handleError: function Future_wait_handleError(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.cleanUp = t1;
      _.eagerError = t2;
      _._future = t3;
    },
    Future_wait_closure: function Future_wait_closure(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.pos = t1;
      _._future = t2;
      _.T = t3;
      _.cleanUp = t4;
      _.eagerError = t5;
    },
    _Completer: function _Completer() {
    },
    _AsyncCompleter: function _AsyncCompleter(t0, t1) {
      this.future = t0;
      this.$ti = t1;
    },
    _SyncCompleter: function _SyncCompleter(t0, t1) {
      this.future = t0;
      this.$ti = t1;
    },
    _FutureListener: function _FutureListener(t0, t1, t2, t3, t4) {
      var _ = this;
      _._nextListener = null;
      _.result = t0;
      _.state = t1;
      _.callback = t2;
      _.errorCallback = t3;
      _.$ti = t4;
    },
    _Future: function _Future(t0, t1) {
      var _ = this;
      _._state = 0;
      _._zone = t0;
      _._resultOrListeners = null;
      _.$ti = t1;
    },
    _Future__addListener_closure: function _Future__addListener_closure(t0, t1) {
      this.$this = t0;
      this.listener = t1;
    },
    _Future__prependListeners_closure: function _Future__prependListeners_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _Future__chainCoreFuture_closure: function _Future__chainCoreFuture_closure(t0, t1) {
      this._box_0 = t0;
      this.target = t1;
    },
    _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) {
      this.$this = t0;
      this.value = t1;
    },
    _Future__asyncCompleteErrorObject_closure: function _Future__asyncCompleteErrorObject_closure(t0, t1) {
      this.$this = t0;
      this.error = t1;
    },
    _Future__propagateToListeners_handleWhenCompleteCallback: function _Future__propagateToListeners_handleWhenCompleteCallback(t0, t1, t2) {
      this._box_0 = t0;
      this._box_1 = t1;
      this.hasError = t2;
    },
    _Future__propagateToListeners_handleWhenCompleteCallback_closure: function _Future__propagateToListeners_handleWhenCompleteCallback_closure(t0, t1) {
      this.joinedResult = t0;
      this.originalSource = t1;
    },
    _Future__propagateToListeners_handleWhenCompleteCallback_closure0: function _Future__propagateToListeners_handleWhenCompleteCallback_closure0(t0) {
      this.joinedResult = t0;
    },
    _Future__propagateToListeners_handleValueCallback: function _Future__propagateToListeners_handleValueCallback(t0, t1) {
      this._box_0 = t0;
      this.sourceResult = t1;
    },
    _Future__propagateToListeners_handleError: function _Future__propagateToListeners_handleError(t0, t1) {
      this._box_1 = t0;
      this._box_0 = t1;
    },
    _AsyncCallbackEntry: function _AsyncCallbackEntry(t0) {
      this.callback = t0;
      this.next = null;
    },
    Stream: function Stream() {
    },
    Stream_length_closure: function Stream_length_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    Stream_length_closure0: function Stream_length_closure0(t0, t1) {
      this._box_0 = t0;
      this.future = t1;
    },
    Stream_first_closure: function Stream_first_closure(t0) {
      this.future = t0;
    },
    Stream_first_closure0: function Stream_first_closure0(t0, t1, t2) {
      this.$this = t0;
      this.subscription = t1;
      this.future = t2;
    },
    Stream_firstWhere_closure: function Stream_firstWhere_closure(t0, t1, t2) {
      this.$this = t0;
      this.orElse = t1;
      this.future = t2;
    },
    Stream_firstWhere_closure0: function Stream_firstWhere_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.test = t1;
      _.subscription = t2;
      _.future = t3;
    },
    Stream_firstWhere__closure: function Stream_firstWhere__closure(t0, t1) {
      this.test = t0;
      this.value = t1;
    },
    Stream_firstWhere__closure0: function Stream_firstWhere__closure0(t0, t1, t2) {
      this.subscription = t0;
      this.future = t1;
      this.value = t2;
    },
    StreamTransformerBase: function StreamTransformerBase() {
    },
    _StreamController: function _StreamController() {
    },
    _StreamController__subscribe_closure: function _StreamController__subscribe_closure(t0) {
      this.$this = t0;
    },
    _StreamController__recordCancel_complete: function _StreamController__recordCancel_complete(t0) {
      this.$this = t0;
    },
    _SyncStreamControllerDispatch: function _SyncStreamControllerDispatch() {
    },
    _AsyncStreamControllerDispatch: function _AsyncStreamControllerDispatch() {
    },
    _AsyncStreamController: function _AsyncStreamController(t0, t1, t2, t3, t4) {
      var _ = this;
      _._varData = null;
      _._state = 0;
      _._doneFuture = null;
      _.onListen = t0;
      _.onPause = t1;
      _.onResume = t2;
      _.onCancel = t3;
      _.$ti = t4;
    },
    _SyncStreamController: function _SyncStreamController(t0, t1, t2, t3, t4) {
      var _ = this;
      _._varData = null;
      _._state = 0;
      _._doneFuture = null;
      _.onListen = t0;
      _.onPause = t1;
      _.onResume = t2;
      _.onCancel = t3;
      _.$ti = t4;
    },
    _ControllerStream: function _ControllerStream(t0, t1) {
      this._controller = t0;
      this.$ti = t1;
    },
    _ControllerSubscription: function _ControllerSubscription(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._controller = t0;
      _._async$_onData = t1;
      _._onError = t2;
      _._onDone = t3;
      _._zone = t4;
      _._state = t5;
      _._pending = _._cancelFuture = null;
      _.$ti = t6;
    },
    _StreamSinkWrapper: function _StreamSinkWrapper(t0, t1) {
      this._async$_target = t0;
      this.$ti = t1;
    },
    _BufferingStreamSubscription: function _BufferingStreamSubscription() {
    },
    _BufferingStreamSubscription__sendError_sendError: function _BufferingStreamSubscription__sendError_sendError(t0, t1, t2) {
      this.$this = t0;
      this.error = t1;
      this.stackTrace = t2;
    },
    _BufferingStreamSubscription__sendDone_sendDone: function _BufferingStreamSubscription__sendDone_sendDone(t0) {
      this.$this = t0;
    },
    _StreamImpl: function _StreamImpl() {
    },
    _DelayedEvent: function _DelayedEvent() {
    },
    _DelayedData: function _DelayedData(t0, t1) {
      this.value = t0;
      this.next = null;
      this.$ti = t1;
    },
    _DelayedError: function _DelayedError(t0, t1) {
      this.error = t0;
      this.stackTrace = t1;
      this.next = null;
    },
    _DelayedDone: function _DelayedDone() {
    },
    _PendingEvents: function _PendingEvents(t0) {
      var _ = this;
      _._state = 0;
      _.lastPendingEvent = _.firstPendingEvent = null;
      _.$ti = t0;
    },
    _PendingEvents_schedule_closure: function _PendingEvents_schedule_closure(t0, t1) {
      this.$this = t0;
      this.dispatch = t1;
    },
    _DoneStreamSubscription: function _DoneStreamSubscription(t0, t1) {
      var _ = this;
      _._state = 1;
      _._zone = t0;
      _._onDone = null;
      _.$ti = t1;
    },
    _StreamIterator: function _StreamIterator(t0, t1) {
      var _ = this;
      _._subscription = null;
      _._stateData = t0;
      _._async$_hasValue = false;
      _.$ti = t1;
    },
    _cancelAndError_closure: function _cancelAndError_closure(t0, t1) {
      this.future = t0;
      this.error = t1;
    },
    _cancelAndErrorClosure_closure: function _cancelAndErrorClosure_closure(t0, t1) {
      this.subscription = t0;
      this.future = t1;
    },
    _cancelAndValue_closure: function _cancelAndValue_closure(t0, t1) {
      this.future = t0;
      this.value = t1;
    },
    _ForwardingStream: function _ForwardingStream() {
    },
    _ForwardingStreamSubscription: function _ForwardingStreamSubscription(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._stream = t0;
      _._subscription = null;
      _._async$_onData = t1;
      _._onError = t2;
      _._onDone = t3;
      _._zone = t4;
      _._state = t5;
      _._pending = _._cancelFuture = null;
      _.$ti = t6;
    },
    _MapStream: function _MapStream(t0, t1, t2) {
      this._transform = t0;
      this._async$_source = t1;
      this.$ti = t2;
    },
    _EventSinkWrapper: function _EventSinkWrapper(t0, t1) {
      this._async$_sink = t0;
      this.$ti = t1;
    },
    _SinkTransformerStreamSubscription: function _SinkTransformerStreamSubscription(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.___SinkTransformerStreamSubscription__transformerSink_A = $;
      _._subscription = null;
      _._async$_onData = t0;
      _._onError = t1;
      _._onDone = t2;
      _._zone = t3;
      _._state = t4;
      _._pending = _._cancelFuture = null;
      _.$ti = t5;
    },
    _StreamSinkTransformer: function _StreamSinkTransformer() {
    },
    _BoundSinkStream: function _BoundSinkStream(t0, t1, t2) {
      this._sinkMapper = t0;
      this._stream = t1;
      this.$ti = t2;
    },
    _HandlerEventSink: function _HandlerEventSink(t0, t1, t2, t3, t4) {
      var _ = this;
      _._handleData = t0;
      _._handleError = t1;
      _._handleDone = t2;
      _._async$_sink = t3;
      _.$ti = t4;
    },
    _StreamHandlerTransformer: function _StreamHandlerTransformer(t0, t1) {
      this._sinkMapper = t0;
      this.$ti = t1;
    },
    _StreamHandlerTransformer_closure: function _StreamHandlerTransformer_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.handleData = t0;
      _.handleError = t1;
      _.handleDone = t2;
      _.T = t3;
      _.S = t4;
    },
    _ZoneFunction: function _ZoneFunction(t0, t1, t2) {
      this.zone = t0;
      this.$function = t1;
      this.$ti = t2;
    },
    _ZoneSpecification: function _ZoneSpecification(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {
      var _ = this;
      _.handleUncaughtError = t0;
      _.run = t1;
      _.runUnary = t2;
      _.runBinary = t3;
      _.registerCallback = t4;
      _.registerUnaryCallback = t5;
      _.registerBinaryCallback = t6;
      _.errorCallback = t7;
      _.scheduleMicrotask = t8;
      _.createTimer = t9;
      _.createPeriodicTimer = t10;
      _.print = t11;
      _.fork = t12;
    },
    _ZoneDelegate: function _ZoneDelegate(t0) {
      this._delegationTarget = t0;
    },
    _Zone: function _Zone() {
    },
    _CustomZone: function _CustomZone(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) {
      var _ = this;
      _._run = t0;
      _._runUnary = t1;
      _._runBinary = t2;
      _._registerCallback = t3;
      _._registerUnaryCallback = t4;
      _._registerBinaryCallback = t5;
      _._errorCallback = t6;
      _._scheduleMicrotask = t7;
      _._createTimer = t8;
      _._createPeriodicTimer = t9;
      _._print = t10;
      _._fork = t11;
      _._handleUncaughtError = t12;
      _._delegateCache = null;
      _.parent = t13;
      _._map = t14;
    },
    _CustomZone_bindCallback_closure: function _CustomZone_bindCallback_closure(t0, t1, t2) {
      this.$this = t0;
      this.registered = t1;
      this.R = t2;
    },
    _CustomZone_bindUnaryCallback_closure: function _CustomZone_bindUnaryCallback_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.registered = t1;
      _.T = t2;
      _.R = t3;
    },
    _CustomZone_bindCallbackGuarded_closure: function _CustomZone_bindCallbackGuarded_closure(t0, t1) {
      this.$this = t0;
      this.registered = t1;
    },
    _CustomZone_bindUnaryCallbackGuarded_closure: function _CustomZone_bindUnaryCallbackGuarded_closure(t0, t1, t2) {
      this.$this = t0;
      this.registered = t1;
      this.T = t2;
    },
    _rootHandleError_closure: function _rootHandleError_closure(t0, t1) {
      this.error = t0;
      this.stackTrace = t1;
    },
    _RootZone: function _RootZone() {
    },
    _RootZone_bindCallback_closure: function _RootZone_bindCallback_closure(t0, t1, t2) {
      this.$this = t0;
      this.f = t1;
      this.R = t2;
    },
    _RootZone_bindUnaryCallback_closure: function _RootZone_bindUnaryCallback_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.f = t1;
      _.T = t2;
      _.R = t3;
    },
    _RootZone_bindCallbackGuarded_closure: function _RootZone_bindCallbackGuarded_closure(t0, t1) {
      this.$this = t0;
      this.f = t1;
    },
    _RootZone_bindUnaryCallbackGuarded_closure: function _RootZone_bindUnaryCallbackGuarded_closure(t0, t1, t2) {
      this.$this = t0;
      this.f = t1;
      this.T = t2;
    },
    HashMap_HashMap($K, $V) {
      return new A._HashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("_HashMap<1,2>"));
    },
    _HashMap__getTableEntry(table, key) {
      var entry = table[key];
      return entry === table ? null : entry;
    },
    _HashMap__setTableEntry(table, key, value) {
      if (value == null)
        table[key] = table;
      else
        table[key] = value;
    },
    _HashMap__newHashTable() {
      var table = Object.create(null);
      A._HashMap__setTableEntry(table, "<non-identifier-key>", table);
      delete table["<non-identifier-key>"];
      return table;
    },
    LinkedHashMap_LinkedHashMap($K, $V) {
      return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"));
    },
    LinkedHashMap_LinkedHashMap$_literal(keyValuePairs, $K, $V) {
      return $K._eval$1("@<0>")._bind$1($V)._eval$1("LinkedHashMap<1,2>")._as(A.fillLiteralMap(keyValuePairs, new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"))));
    },
    LinkedHashMap_LinkedHashMap$_empty($K, $V) {
      return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"));
    },
    LinkedHashSet_LinkedHashSet$_empty($E) {
      return new A._LinkedHashSet($E._eval$1("_LinkedHashSet<0>"));
    },
    _LinkedHashSet__newHashTable() {
      var table = Object.create(null);
      A.assertHelper(table != null);
      table["<non-identifier-key>"] = table;
      delete table["<non-identifier-key>"];
      return table;
    },
    _LinkedHashSetIterator$(_set, _modifications, $E) {
      var t1 = new A._LinkedHashSetIterator(_set, _modifications, $E._eval$1("_LinkedHashSetIterator<0>"));
      t1._cell = _set._first;
      return t1;
    },
    HashMap_HashMap$from(other, $K, $V) {
      var result = A.HashMap_HashMap($K, $V);
      other.forEach$1(0, new A.HashMap_HashMap$from_closure(result, $K, $V));
      return result;
    },
    MapBase_mapToString(m) {
      var result, t1;
      if (A.isToStringVisiting(m))
        return "{...}";
      result = new A.StringBuffer("");
      try {
        t1 = {};
        B.JSArray_methods.add$1($.toStringVisiting, m);
        result._contents += "{";
        t1.first = true;
        m.forEach$1(0, new A.MapBase_mapToString_closure(t1, result));
        result._contents += "}";
      } finally {
        A.assertHelper(B.JSArray_methods.get$last($.toStringVisiting) === m);
        if (0 >= $.toStringVisiting.length)
          return A.ioore($.toStringVisiting, -1);
        $.toStringVisiting.pop();
      }
      t1 = result._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _HashMap: function _HashMap(t0) {
      var _ = this;
      _._collection$_length = 0;
      _._keys = _._collection$_rest = _._nums = _._strings = null;
      _.$ti = t0;
    },
    _HashMap_values_closure: function _HashMap_values_closure(t0) {
      this.$this = t0;
    },
    _IdentityHashMap: function _IdentityHashMap(t0) {
      var _ = this;
      _._collection$_length = 0;
      _._keys = _._collection$_rest = _._nums = _._strings = null;
      _.$ti = t0;
    },
    _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) {
      this._collection$_map = t0;
      this.$ti = t1;
    },
    _HashMapKeyIterator: function _HashMapKeyIterator(t0, t1, t2) {
      var _ = this;
      _._collection$_map = t0;
      _._keys = t1;
      _._offset = 0;
      _._collection$_current = null;
      _.$ti = t2;
    },
    _LinkedHashSet: function _LinkedHashSet(t0) {
      var _ = this;
      _._collection$_length = 0;
      _._collection$_last = _._first = _._collection$_rest = _._nums = _._strings = null;
      _._modifications = 0;
      _.$ti = t0;
    },
    _LinkedHashSetCell: function _LinkedHashSetCell(t0) {
      this._element = t0;
      this._previous = this._next = null;
    },
    _LinkedHashSetIterator: function _LinkedHashSetIterator(t0, t1, t2) {
      var _ = this;
      _._set = t0;
      _._modifications = t1;
      _._collection$_current = _._cell = null;
      _.$ti = t2;
    },
    HashMap_HashMap$from_closure: function HashMap_HashMap$from_closure(t0, t1, t2) {
      this.result = t0;
      this.K = t1;
      this.V = t2;
    },
    LinkedList: function LinkedList(t0) {
      var _ = this;
      _._collection$_length = _._modificationCount = 0;
      _._first = null;
      _.$ti = t0;
    },
    _LinkedListIterator: function _LinkedListIterator(t0, t1, t2, t3) {
      var _ = this;
      _._list = t0;
      _._modificationCount = t1;
      _._collection$_current = null;
      _._next = t2;
      _._visitedFirst = false;
      _.$ti = t3;
    },
    LinkedListEntry: function LinkedListEntry() {
    },
    ListBase: function ListBase() {
    },
    MapBase: function MapBase() {
    },
    MapBase_entries_closure: function MapBase_entries_closure(t0) {
      this.$this = t0;
    },
    MapBase_mapToString_closure: function MapBase_mapToString_closure(t0, t1) {
      this._box_0 = t0;
      this.result = t1;
    },
    _MapBaseValueIterable: function _MapBaseValueIterable(t0, t1) {
      this._collection$_map = t0;
      this.$ti = t1;
    },
    _MapBaseValueIterator: function _MapBaseValueIterator(t0, t1, t2) {
      var _ = this;
      _._keys = t0;
      _._collection$_map = t1;
      _._collection$_current = null;
      _.$ti = t2;
    },
    SetBase: function SetBase() {
    },
    _SetBase: function _SetBase() {
    },
    _Utf8Decoder__makeNativeUint8List(codeUnits, start, end) {
      var bytes, t1, i, b,
        $length = end - start;
      if ($length <= 4096)
        bytes = $.$get$_Utf8Decoder__reusableBuffer();
      else
        bytes = new Uint8Array($length);
      for (t1 = J.getInterceptor$asx(codeUnits), i = 0; i < $length; ++i) {
        b = t1.$index(codeUnits, start + i);
        if ((b & 255) !== b)
          b = 255;
        bytes[i] = b;
      }
      return bytes;
    },
    _Utf8Decoder__convertInterceptedUint8List(allowMalformed, codeUnits, start, end) {
      var decoder = allowMalformed ? $.$get$_Utf8Decoder__decoderNonfatal() : $.$get$_Utf8Decoder__decoder();
      if (decoder == null)
        return null;
      if (0 === start && end === codeUnits.length)
        return A._Utf8Decoder__useTextDecoder(decoder, codeUnits);
      return A._Utf8Decoder__useTextDecoder(decoder, codeUnits.subarray(start, end));
    },
    _Utf8Decoder__useTextDecoder(decoder, codeUnits) {
      var t1, exception;
      try {
        t1 = decoder.decode(codeUnits);
        return t1;
      } catch (exception) {
      }
      return null;
    },
    Base64Codec__checkPadding(source, sourceIndex, sourceEnd, firstPadding, paddingCount, $length) {
      if (B.JSInt_methods.$mod($length, 4) !== 0)
        throw A.wrapException(A.FormatException$("Invalid base64 padding, padded length must be multiple of four, is " + $length, source, sourceEnd));
      if (firstPadding + paddingCount !== $length)
        throw A.wrapException(A.FormatException$("Invalid base64 padding, '=' not at the end", source, sourceIndex));
      if (paddingCount > 2)
        throw A.wrapException(A.FormatException$("Invalid base64 padding, more than two '=' characters", source, sourceIndex));
    },
    _Utf8Decoder_errorDescription(state) {
      switch (state) {
        case 65:
          return "Missing extension byte";
        case 67:
          return "Unexpected extension byte";
        case 69:
          return "Invalid UTF-8 byte";
        case 71:
          return "Overlong encoding";
        case 73:
          return "Out of unicode range";
        case 75:
          return "Encoded surrogate";
        case 77:
          return "Unfinished UTF-8 octet sequence";
        default:
          return "";
      }
    },
    _Utf8Decoder__decoder_closure: function _Utf8Decoder__decoder_closure() {
    },
    _Utf8Decoder__decoderNonfatal_closure: function _Utf8Decoder__decoderNonfatal_closure() {
    },
    AsciiCodec: function AsciiCodec() {
    },
    _UnicodeSubsetEncoder: function _UnicodeSubsetEncoder() {
    },
    AsciiEncoder: function AsciiEncoder(t0) {
      this._subsetMask = t0;
    },
    Base64Codec: function Base64Codec() {
    },
    Base64Encoder: function Base64Encoder() {
    },
    Codec: function Codec() {
    },
    _FusedCodec: function _FusedCodec(t0, t1, t2) {
      this._convert$_first = t0;
      this._second = t1;
      this.$ti = t2;
    },
    Converter: function Converter() {
    },
    Encoding: function Encoding() {
    },
    Utf8Codec: function Utf8Codec() {
    },
    Utf8Encoder: function Utf8Encoder() {
    },
    _Utf8Encoder: function _Utf8Encoder(t0) {
      this._bufferIndex = this._carry = 0;
      this._buffer = t0;
    },
    _Utf8Decoder: function _Utf8Decoder(t0) {
      this.allowMalformed = t0;
      this._convert$_state = 16;
      this._charOrIndex = 0;
    },
    BigInt_parse(source) {
      var result = A._BigIntImpl__tryParse(source, null);
      if (result == null)
        A.throwExpression(A.FormatException$("Could not parse BigInt", source, null));
      return result;
    },
    _BigIntImpl_parse(source, radix) {
      var result = A._BigIntImpl__tryParse(source, radix);
      if (result == null)
        throw A.wrapException(A.FormatException$("Could not parse BigInt", source, null));
      return result;
    },
    _BigIntImpl__parseDecimal(source, isNegative) {
      var part, i,
        result = $.$get$_BigIntImpl_zero(),
        t1 = source.length,
        digitInPartCount = 4 - t1 % 4;
      if (digitInPartCount === 4)
        digitInPartCount = 0;
      for (part = 0, i = 0; i < t1; ++i) {
        part = part * 10 + source.charCodeAt(i) - 48;
        ++digitInPartCount;
        if (digitInPartCount === 4) {
          result = result.$mul(0, $.$get$_BigIntImpl__bigInt10000()).$add(0, A._BigIntImpl__BigIntImpl$_fromInt(part));
          part = 0;
          digitInPartCount = 0;
        }
      }
      if (isNegative)
        return result.$negate(0);
      return result;
    },
    _BigIntImpl__codeUnitToRadixValue(codeUnit) {
      if (48 <= codeUnit && codeUnit <= 57)
        return codeUnit - 48;
      return (codeUnit | 32) - 97 + 10;
    },
    _BigIntImpl__parseHex(source, startPos, isNegative) {
      var i, chunk, j, i0, digitValue, digitIndex, digitIndex0,
        t1 = source.length,
        sourceLength = t1 - startPos,
        chunkCount = B.JSNumber_methods.ceil$0(sourceLength / 4),
        digits = new Uint16Array(chunkCount),
        t2 = chunkCount - 1,
        lastDigitLength = sourceLength - t2 * 4;
      for (i = startPos, chunk = 0, j = 0; j < lastDigitLength; ++j, i = i0) {
        i0 = i + 1;
        if (!(i < t1))
          return A.ioore(source, i);
        digitValue = A._BigIntImpl__codeUnitToRadixValue(source.charCodeAt(i));
        if (digitValue >= 16)
          return null;
        chunk = chunk * 16 + digitValue;
      }
      digitIndex = t2 - 1;
      if (!(t2 >= 0 && t2 < chunkCount))
        return A.ioore(digits, t2);
      digits[t2] = chunk;
      for (; i < t1; digitIndex = digitIndex0) {
        for (chunk = 0, j = 0; j < 4; ++j, i = i0) {
          i0 = i + 1;
          if (!(i >= 0 && i < t1))
            return A.ioore(source, i);
          digitValue = A._BigIntImpl__codeUnitToRadixValue(source.charCodeAt(i));
          if (digitValue >= 16)
            return null;
          chunk = chunk * 16 + digitValue;
        }
        digitIndex0 = digitIndex - 1;
        if (!(digitIndex >= 0 && digitIndex < chunkCount))
          return A.ioore(digits, digitIndex);
        digits[digitIndex] = chunk;
      }
      if (chunkCount === 1) {
        if (0 >= chunkCount)
          return A.ioore(digits, 0);
        t1 = digits[0] === 0;
      } else
        t1 = false;
      if (t1)
        return $.$get$_BigIntImpl_zero();
      t1 = A._BigIntImpl__normalize(chunkCount, digits);
      return new A._BigIntImpl(t1 === 0 ? false : isNegative, digits, t1);
    },
    _BigIntImpl__tryParse(source, radix) {
      var match, t1, t2, isNegative, decimalMatch, hexMatch;
      if (source === "")
        return null;
      match = $.$get$_BigIntImpl__parseRE().firstMatch$1(source);
      if (match == null)
        return null;
      t1 = match._match;
      t2 = t1.length;
      if (1 >= t2)
        return A.ioore(t1, 1);
      isNegative = t1[1] === "-";
      if (4 >= t2)
        return A.ioore(t1, 4);
      decimalMatch = t1[4];
      hexMatch = t1[3];
      if (5 >= t2)
        return A.ioore(t1, 5);
      if (decimalMatch != null)
        return A._BigIntImpl__parseDecimal(decimalMatch, isNegative);
      if (hexMatch != null)
        return A._BigIntImpl__parseHex(hexMatch, 2, isNegative);
      return null;
    },
    _BigIntImpl__normalize(used, digits) {
      var t2,
        t1 = digits.length;
      for (;;) {
        if (used > 0) {
          t2 = used - 1;
          if (!(t2 < t1))
            return A.ioore(digits, t2);
          t2 = digits[t2] === 0;
        } else
          t2 = false;
        if (!t2)
          break;
        --used;
      }
      return used;
    },
    _BigIntImpl__cloneDigits(digits, from, to, $length) {
      var t1, i, t2,
        resultDigits = new Uint16Array($length),
        n = to - from;
      for (t1 = digits.length, i = 0; i < n; ++i) {
        t2 = from + i;
        if (!(t2 >= 0 && t2 < t1))
          return A.ioore(digits, t2);
        t2 = digits[t2];
        if (!(i < $length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = t2;
      }
      return resultDigits;
    },
    _BigIntImpl__BigIntImpl$from(value) {
      var t1;
      if (value === 0)
        return $.$get$_BigIntImpl_zero();
      if (value === 1)
        return $.$get$_BigIntImpl_one();
      if (value === 2)
        return $.$get$_BigIntImpl_two();
      if (Math.abs(value) < 4294967296)
        return A._BigIntImpl__BigIntImpl$_fromInt(B.JSInt_methods.toInt$0(value));
      t1 = A._BigIntImpl__BigIntImpl$_fromDouble(value);
      return t1;
    },
    _BigIntImpl__BigIntImpl$_fromInt(value) {
      var digits, t1, i, i0,
        isNegative = value < 0;
      if (isNegative) {
        if (value === -9223372036854776e3) {
          digits = new Uint16Array(4);
          digits[3] = 32768;
          t1 = A._BigIntImpl__normalize(4, digits);
          return new A._BigIntImpl(t1 !== 0, digits, t1);
        }
        value = -value;
      }
      if (value < 65536) {
        digits = new Uint16Array(1);
        digits[0] = value;
        t1 = A._BigIntImpl__normalize(1, digits);
        return new A._BigIntImpl(t1 === 0 ? false : isNegative, digits, t1);
      }
      if (value <= 4294967295) {
        digits = new Uint16Array(2);
        digits[0] = value & 65535;
        digits[1] = B.JSInt_methods._shrOtherPositive$1(value, 16);
        t1 = A._BigIntImpl__normalize(2, digits);
        return new A._BigIntImpl(t1 === 0 ? false : isNegative, digits, t1);
      }
      t1 = B.JSInt_methods._tdivFast$1(B.JSInt_methods.get$bitLength(value) - 1, 16) + 1;
      digits = new Uint16Array(t1);
      for (i = 0; value !== 0; i = i0) {
        i0 = i + 1;
        if (!(i < t1))
          return A.ioore(digits, i);
        digits[i] = value & 65535;
        value = B.JSInt_methods._tdivFast$1(value, 65536);
      }
      t1 = A._BigIntImpl__normalize(t1, digits);
      return new A._BigIntImpl(t1 === 0 ? false : isNegative, digits, t1);
    },
    _BigIntImpl__BigIntImpl$_fromDouble(value) {
      var isNegative, bits, t1, i, exponent, unshiftedDigits, unshiftedBig, absResult;
      if (isNaN(value) || value == 1 / 0 || value == -1 / 0)
        throw A.wrapException(A.ArgumentError$("Value must be finite: " + value, null));
      isNegative = value < 0;
      if (isNegative)
        value = -value;
      value = Math.floor(value);
      if (value === 0)
        return $.$get$_BigIntImpl_zero();
      bits = $.$get$_BigIntImpl__bitsForFromDouble();
      for (t1 = bits.$flags | 0, i = 0; i < 8; ++i) {
        t1 & 2 && A.throwUnsupportedOperation(bits);
        if (!(i < 8))
          return A.ioore(bits, i);
        bits[i] = 0;
      }
      t1 = J.asByteData$0$x(B.NativeUint8List_methods.get$buffer(bits));
      t1.$flags & 2 && A.throwUnsupportedOperation(t1, 13);
      t1.setFloat64(0, value, true);
      exponent = (bits[7] << 4 >>> 0) + (bits[6] >>> 4) - 1075;
      unshiftedDigits = new Uint16Array(4);
      unshiftedDigits[0] = (bits[1] << 8 >>> 0) + bits[0];
      unshiftedDigits[1] = (bits[3] << 8 >>> 0) + bits[2];
      unshiftedDigits[2] = (bits[5] << 8 >>> 0) + bits[4];
      unshiftedDigits[3] = bits[6] & 15 | 16;
      unshiftedBig = new A._BigIntImpl(false, unshiftedDigits, 4);
      if (exponent < 0)
        absResult = unshiftedBig.$shr(0, -exponent);
      else
        absResult = exponent > 0 ? unshiftedBig.$shl(0, exponent) : unshiftedBig;
      if (isNegative)
        return absResult.$negate(0);
      return absResult;
    },
    _BigIntImpl__dlShiftDigits(xDigits, xUsed, n, resultDigits) {
      var i, t1, t2, t3, t4;
      if (xUsed === 0)
        return 0;
      if (n === 0 && resultDigits === xDigits)
        return xUsed;
      for (i = xUsed - 1, t1 = xDigits.length, t2 = resultDigits.$flags | 0; i >= 0; --i) {
        t3 = i + n;
        if (!(i < t1))
          return A.ioore(xDigits, i);
        t4 = xDigits[i];
        t2 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(t3 >= 0 && t3 < resultDigits.length))
          return A.ioore(resultDigits, t3);
        resultDigits[t3] = t4;
      }
      for (i = n - 1; i >= 0; --i) {
        t2 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(i < resultDigits.length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = 0;
      }
      return xUsed + n;
    },
    _BigIntImpl__lsh(xDigits, xUsed, n, resultDigits) {
      var digitShift, bitShift, carryBitShift, bitMask, i, t1, t2, carry, digit, t3, t4;
      A.assertHelper(xUsed > 0);
      digitShift = B.JSInt_methods._tdivFast$1(n, 16);
      bitShift = B.JSInt_methods.$mod(n, 16);
      carryBitShift = 16 - bitShift;
      bitMask = B.JSInt_methods.$shl(1, carryBitShift) - 1;
      for (i = xUsed - 1, t1 = xDigits.length, t2 = resultDigits.$flags | 0, carry = 0; i >= 0; --i) {
        if (!(i < t1))
          return A.ioore(xDigits, i);
        digit = xDigits[i];
        t3 = i + digitShift + 1;
        t4 = B.JSInt_methods.$shr(digit, carryBitShift);
        t2 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(t3 >= 0 && t3 < resultDigits.length))
          return A.ioore(resultDigits, t3);
        resultDigits[t3] = (t4 | carry) >>> 0;
        carry = B.JSInt_methods.$shl((digit & bitMask) >>> 0, bitShift);
      }
      t2 & 2 && A.throwUnsupportedOperation(resultDigits);
      if (!(digitShift >= 0 && digitShift < resultDigits.length))
        return A.ioore(resultDigits, digitShift);
      resultDigits[digitShift] = carry;
    },
    _BigIntImpl__lShiftDigits(xDigits, xUsed, n, resultDigits) {
      var resultUsed, t1, i,
        digitsShift = B.JSInt_methods._tdivFast$1(n, 16);
      if (B.JSInt_methods.$mod(n, 16) === 0)
        return A._BigIntImpl__dlShiftDigits(xDigits, xUsed, digitsShift, resultDigits);
      resultUsed = xUsed + digitsShift + 1;
      A._BigIntImpl__lsh(xDigits, xUsed, n, resultDigits);
      for (t1 = resultDigits.$flags | 0, i = digitsShift; --i, i >= 0;) {
        t1 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(i < resultDigits.length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = 0;
      }
      t1 = resultUsed - 1;
      if (!(t1 >= 0 && t1 < resultDigits.length))
        return A.ioore(resultDigits, t1);
      if (resultDigits[t1] === 0)
        resultUsed = t1;
      return resultUsed;
    },
    _BigIntImpl__rsh(xDigits, xUsed, n, resultDigits) {
      var digitsShift, bitShift, carryBitShift, bitMask, t1, carry, last, t2, i, t3, digit;
      A.assertHelper(xUsed > 0);
      digitsShift = B.JSInt_methods._tdivFast$1(n, 16);
      bitShift = B.JSInt_methods.$mod(n, 16);
      carryBitShift = 16 - bitShift;
      bitMask = B.JSInt_methods.$shl(1, bitShift) - 1;
      t1 = xDigits.length;
      if (!(digitsShift >= 0 && digitsShift < t1))
        return A.ioore(xDigits, digitsShift);
      carry = B.JSInt_methods.$shr(xDigits[digitsShift], bitShift);
      last = xUsed - digitsShift - 1;
      for (t2 = resultDigits.$flags | 0, i = 0; i < last; ++i) {
        t3 = i + digitsShift + 1;
        if (!(t3 < t1))
          return A.ioore(xDigits, t3);
        digit = xDigits[t3];
        t3 = B.JSInt_methods.$shl((digit & bitMask) >>> 0, carryBitShift);
        t2 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(i < resultDigits.length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = (t3 | carry) >>> 0;
        carry = B.JSInt_methods.$shr(digit, bitShift);
      }
      t2 & 2 && A.throwUnsupportedOperation(resultDigits);
      if (!(last >= 0 && last < resultDigits.length))
        return A.ioore(resultDigits, last);
      resultDigits[last] = carry;
    },
    _BigIntImpl__compareDigits(digits, used, otherDigits, otherUsed) {
      var i, t1, t2, t3,
        result = used - otherUsed;
      if (result === 0)
        for (i = used - 1, t1 = digits.length, t2 = otherDigits.length; i >= 0; --i) {
          if (!(i < t1))
            return A.ioore(digits, i);
          t3 = digits[i];
          if (!(i < t2))
            return A.ioore(otherDigits, i);
          result = t3 - otherDigits[i];
          if (result !== 0)
            return result;
        }
      return result;
    },
    _BigIntImpl__absAdd(digits, used, otherDigits, otherUsed, resultDigits) {
      var t1, t2, t3, carry, i, t4;
      A.assertHelper(used >= otherUsed && otherUsed > 0);
      for (t1 = digits.length, t2 = otherDigits.length, t3 = resultDigits.$flags | 0, carry = 0, i = 0; i < otherUsed; ++i) {
        if (!(i < t1))
          return A.ioore(digits, i);
        t4 = digits[i];
        if (!(i < t2))
          return A.ioore(otherDigits, i);
        carry += t4 + otherDigits[i];
        t3 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(i < resultDigits.length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = carry & 65535;
        carry = B.JSInt_methods._shrOtherPositive$1(carry, 16);
      }
      for (i = otherUsed; i < used; ++i) {
        if (!(i >= 0 && i < t1))
          return A.ioore(digits, i);
        carry += digits[i];
        t3 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(i < resultDigits.length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = carry & 65535;
        carry = B.JSInt_methods._shrOtherPositive$1(carry, 16);
      }
      t3 & 2 && A.throwUnsupportedOperation(resultDigits);
      if (!(used >= 0 && used < resultDigits.length))
        return A.ioore(resultDigits, used);
      resultDigits[used] = carry;
    },
    _BigIntImpl__absSub(digits, used, otherDigits, otherUsed, resultDigits) {
      var t1, t2, t3, carry, i, t4;
      A.assertHelper(used >= otherUsed && otherUsed > 0);
      for (t1 = digits.length, t2 = otherDigits.length, t3 = resultDigits.$flags | 0, carry = 0, i = 0; i < otherUsed; ++i) {
        if (!(i < t1))
          return A.ioore(digits, i);
        t4 = digits[i];
        if (!(i < t2))
          return A.ioore(otherDigits, i);
        carry += t4 - otherDigits[i];
        t3 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(i < resultDigits.length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = carry & 65535;
        carry = 0 - (B.JSInt_methods._shrOtherPositive$1(carry, 16) & 1);
      }
      for (i = otherUsed; i < used; ++i) {
        if (!(i >= 0 && i < t1))
          return A.ioore(digits, i);
        carry += digits[i];
        t3 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(i < resultDigits.length))
          return A.ioore(resultDigits, i);
        resultDigits[i] = carry & 65535;
        carry = 0 - (B.JSInt_methods._shrOtherPositive$1(carry, 16) & 1);
      }
    },
    _BigIntImpl__mulAdd(x, multiplicandDigits, i, accumulatorDigits, j, n) {
      var t1, t2, t3, c, i0, t4, combined, j0, l;
      if (x === 0)
        return;
      for (t1 = multiplicandDigits.length, t2 = accumulatorDigits.length, t3 = accumulatorDigits.$flags | 0, c = 0; --n, n >= 0; j = j0, i = i0) {
        i0 = i + 1;
        if (!(i < t1))
          return A.ioore(multiplicandDigits, i);
        t4 = multiplicandDigits[i];
        if (!(j >= 0 && j < t2))
          return A.ioore(accumulatorDigits, j);
        combined = x * t4 + accumulatorDigits[j] + c;
        j0 = j + 1;
        t3 & 2 && A.throwUnsupportedOperation(accumulatorDigits);
        accumulatorDigits[j] = combined & 65535;
        c = B.JSInt_methods._tdivFast$1(combined, 65536);
      }
      for (; c !== 0; j = j0) {
        if (!(j >= 0 && j < t2))
          return A.ioore(accumulatorDigits, j);
        l = accumulatorDigits[j] + c;
        j0 = j + 1;
        t3 & 2 && A.throwUnsupportedOperation(accumulatorDigits);
        accumulatorDigits[j] = l & 65535;
        c = B.JSInt_methods._tdivFast$1(l, 65536);
      }
    },
    _BigIntImpl__estimateQuotientDigit(topDigitDivisor, digits, i) {
      var t2, t3, quotientDigit,
        t1 = digits.length;
      if (!(i >= 0 && i < t1))
        return A.ioore(digits, i);
      t2 = digits[i];
      if (t2 === topDigitDivisor)
        return 65535;
      t3 = i - 1;
      if (!(t3 >= 0 && t3 < t1))
        return A.ioore(digits, t3);
      quotientDigit = B.JSInt_methods.$tdiv((t2 << 16 | digits[t3]) >>> 0, topDigitDivisor);
      if (quotientDigit > 65535)
        return 65535;
      return quotientDigit;
    },
    Expando__badExpandoKey(object) {
      throw A.wrapException(A.ArgumentError$value(object, "object", "Expandos are not allowed on strings, numbers, bools, records or null"));
    },
    int_parse(source, radix) {
      var value = A.Primitives_parseInt(source, radix);
      if (value != null)
        return value;
      throw A.wrapException(A.FormatException$(source, null, null));
    },
    Error__throw(error, stackTrace) {
      error = A.initializeExceptionWrapper(error, new Error());
      if (error == null)
        error = A._asObject(error);
      error.stack = stackTrace.toString$0(0);
      throw error;
    },
    List_List$filled($length, fill, growable, $E) {
      var i,
        result = growable ? J.JSArray_JSArray$growable($length, $E) : J.JSArray_JSArray$fixed($length, $E);
      if ($length !== 0 && fill != null)
        for (i = 0; i < result.length; ++i)
          result[i] = fill;
      return result;
    },
    List_List$from(elements, growable, $E) {
      var t1,
        list = A._setArrayType([], $E._eval$1("JSArray<0>"));
      for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
        B.JSArray_methods.add$1(list, $E._as(t1.get$current()));
      list.$flags = 1;
      return list;
    },
    List_List$_of(elements, $E) {
      var list, t1;
      if (Array.isArray(elements))
        return A._setArrayType(elements.slice(0), $E._eval$1("JSArray<0>"));
      list = A._setArrayType([], $E._eval$1("JSArray<0>"));
      for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
        B.JSArray_methods.add$1(list, t1.get$current());
      return list;
    },
    List_List$unmodifiable(elements, $E) {
      var result = A.List_List$from(elements, false, $E);
      result.$flags = 3;
      return result;
    },
    String_String$fromCharCodes(charCodes, start, end) {
      var t1, t2, maxLength, array, len;
      A.RangeError_checkNotNegative(start, "start");
      t1 = end == null;
      t2 = !t1;
      if (t2) {
        maxLength = end - start;
        if (maxLength < 0)
          throw A.wrapException(A.RangeError$range(end, start, null, "end", null));
        if (maxLength === 0)
          return "";
      }
      if (Array.isArray(charCodes)) {
        array = charCodes;
        len = array.length;
        if (t1)
          end = len;
        return A.Primitives_stringFromCharCodes(start > 0 || end < len ? array.slice(start, end) : array);
      }
      if (type$.NativeUint8List._is(charCodes))
        return A.String__stringFromUint8List(charCodes, start, end);
      if (t2)
        charCodes = J.take$1$ax(charCodes, end);
      if (start > 0)
        charCodes = J.skip$1$ax(charCodes, start);
      t1 = A.List_List$_of(charCodes, type$.int);
      return A.Primitives_stringFromCharCodes(t1);
    },
    String_String$fromCharCode(charCode) {
      return A.Primitives_stringFromCharCode(charCode);
    },
    String__stringFromUint8List(charCodes, start, endOrNull) {
      var len = charCodes.length;
      if (start >= len)
        return "";
      return A.Primitives_stringFromNativeUint8List(charCodes, start, endOrNull == null || endOrNull > len ? len : endOrNull);
    },
    RegExp_RegExp(source, caseSensitive, dotAll, multiLine, unicode) {
      return new A.JSSyntaxRegExp(source, A.JSSyntaxRegExp_makeNative(source, multiLine, caseSensitive, unicode, dotAll, ""));
    },
    StringBuffer__writeAll(string, objects, separator) {
      var iterator = J.get$iterator$ax(objects);
      if (!iterator.moveNext$0())
        return string;
      if (separator.length === 0) {
        do
          string += A.S(iterator.get$current());
        while (iterator.moveNext$0());
      } else {
        string += A.S(iterator.get$current());
        while (iterator.moveNext$0())
          string = string + separator + A.S(iterator.get$current());
      }
      return string;
    },
    Uri_base() {
      var cachedUri, uri,
        current = A.Primitives_currentUri();
      if (current == null)
        throw A.wrapException(A.UnsupportedError$("'Uri.base' is not supported"));
      cachedUri = $.Uri__cachedBaseUri;
      if (cachedUri != null && current === $.Uri__cachedBaseString)
        return cachedUri;
      uri = A.Uri_parse(current);
      $.Uri__cachedBaseUri = uri;
      $.Uri__cachedBaseString = current;
      return uri;
    },
    _Uri__uriEncode(canonicalMask, text, encoding, spaceToPlus) {
      var t1, bytes, i, t2, byte,
        _s16_ = "0123456789ABCDEF";
      if (encoding === B.C_Utf8Codec) {
        t1 = $.$get$_Uri__needsNoEncoding();
        t1 = t1._nativeRegExp.test(text);
      } else
        t1 = false;
      if (t1)
        return text;
      bytes = B.C_Utf8Encoder.convert$1(text);
      for (t1 = bytes.length, i = 0, t2 = ""; i < t1; ++i) {
        byte = bytes[i];
        if (byte < 128 && (string$.x00_____.charCodeAt(byte) & canonicalMask) !== 0)
          t2 += A.Primitives_stringFromCharCode(byte);
        else
          t2 = spaceToPlus && byte === 32 ? t2 + "+" : t2 + "%" + _s16_[byte >>> 4 & 15] + _s16_[byte & 15];
      }
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    },
    StackTrace_current() {
      return A.getTraceFromException(new Error());
    },
    DateTime__validate(millisecondsSinceEpoch, microsecond, isUtc) {
      var _s11_ = "microsecond";
      if (microsecond > 999)
        throw A.wrapException(A.RangeError$range(microsecond, 0, 999, _s11_, null));
      if (millisecondsSinceEpoch < -864e13 || millisecondsSinceEpoch > 864e13)
        throw A.wrapException(A.RangeError$range(millisecondsSinceEpoch, -864e13, 864e13, "millisecondsSinceEpoch", null));
      if (millisecondsSinceEpoch === 864e13 && microsecond !== 0)
        throw A.wrapException(A.ArgumentError$value(microsecond, _s11_, "Time including microseconds is outside valid range"));
      A.checkNotNullable(isUtc, "isUtc", type$.bool);
      return millisecondsSinceEpoch;
    },
    DateTime__fourDigits(n) {
      var absN = Math.abs(n),
        sign = n < 0 ? "-" : "";
      if (absN >= 1000)
        return "" + n;
      if (absN >= 100)
        return sign + "0" + absN;
      if (absN >= 10)
        return sign + "00" + absN;
      return sign + "000" + absN;
    },
    DateTime__threeDigits(n) {
      if (n >= 100)
        return "" + n;
      if (n >= 10)
        return "0" + n;
      return "00" + n;
    },
    DateTime__twoDigits(n) {
      if (n >= 10)
        return "" + n;
      return "0" + n;
    },
    Duration$(microseconds, milliseconds) {
      return new A.Duration(microseconds + 1000 * milliseconds);
    },
    EnumByName_byName(_this, $name, $T) {
      var t1, _i, value;
      for (t1 = _this.length, _i = 0; _i < t1; ++_i) {
        value = _this[_i];
        if (value._name === $name)
          return value;
      }
      throw A.wrapException(A.ArgumentError$value($name, "name", "No enum value with that name"));
    },
    EnumByName_asNameMap(_this, $T) {
      var _i, value,
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, $T);
      for (_i = 0; _i < 2; ++_i) {
        value = _this[_i];
        t1.$indexSet(0, value._name, value);
      }
      return t1;
    },
    Error_safeToString(object) {
      if (typeof object == "number" || A._isBool(object) || object == null)
        return J.toString$0$(object);
      if (typeof object == "string")
        return JSON.stringify(object);
      return A.Primitives_safeToString(object);
    },
    Error_throwWithStackTrace(error, stackTrace) {
      A.checkNotNullable(error, "error", type$.Object);
      A.checkNotNullable(stackTrace, "stackTrace", type$.StackTrace);
      A.Error__throw(error, stackTrace);
    },
    AssertionError$(message) {
      return new A.AssertionError(message);
    },
    ArgumentError$(message, $name) {
      return new A.ArgumentError(false, null, $name, message);
    },
    ArgumentError$value(value, $name, message) {
      return new A.ArgumentError(true, value, $name, message);
    },
    ArgumentError_checkNotNull(argument, $name, $T) {
      return argument;
    },
    RangeError$value(value, $name) {
      return new A.RangeError(null, null, true, value, $name, "Value not in range");
    },
    RangeError$range(invalidValue, minValue, maxValue, $name, message) {
      return new A.RangeError(minValue, maxValue, true, invalidValue, $name, "Invalid value");
    },
    RangeError_checkValueInInterval(value, minValue, maxValue, $name) {
      if (value < minValue || value > maxValue)
        throw A.wrapException(A.RangeError$range(value, minValue, maxValue, $name, null));
      return value;
    },
    RangeError_checkValidIndex(index, indexable, $name, $length) {
      if (0 > index || index >= $length)
        A.throwExpression(A.IndexError$withLength(index, $length, indexable, null, $name));
      return index;
    },
    RangeError_checkValidRange(start, end, $length) {
      if (0 > start || start > $length)
        throw A.wrapException(A.RangeError$range(start, 0, $length, "start", null));
      if (end != null) {
        if (start > end || end > $length)
          throw A.wrapException(A.RangeError$range(end, start, $length, "end", null));
        return end;
      }
      return $length;
    },
    RangeError_checkNotNegative(value, $name) {
      if (value < 0)
        throw A.wrapException(A.RangeError$range(value, 0, null, $name, null));
      return value;
    },
    IndexError$(invalidValue, indexable) {
      var t1 = indexable._typed_buffer$_length;
      return new A.IndexError(t1, true, invalidValue, null, "Index out of range");
    },
    IndexError$withLength(invalidValue, $length, indexable, message, $name) {
      return new A.IndexError($length, true, invalidValue, $name, "Index out of range");
    },
    UnsupportedError$(message) {
      return new A.UnsupportedError(message);
    },
    UnimplementedError$(message) {
      return new A.UnimplementedError(message);
    },
    StateError$(message) {
      return new A.StateError(message);
    },
    ConcurrentModificationError$(modifiedObject) {
      return new A.ConcurrentModificationError(modifiedObject);
    },
    Exception_Exception(message) {
      return new A._Exception(message);
    },
    FormatException$(message, source, offset) {
      return new A.FormatException(message, source, offset);
    },
    Iterable_iterableToShortString(iterable, leftDelimiter, rightDelimiter) {
      var parts, t1;
      if (A.isToStringVisiting(iterable)) {
        if (leftDelimiter === "(" && rightDelimiter === ")")
          return "(...)";
        return leftDelimiter + "..." + rightDelimiter;
      }
      parts = A._setArrayType([], type$.JSArray_String);
      B.JSArray_methods.add$1($.toStringVisiting, iterable);
      try {
        A._iterablePartsToStrings(iterable, parts);
      } finally {
        A.assertHelper(B.JSArray_methods.get$last($.toStringVisiting) === iterable);
        if (0 >= $.toStringVisiting.length)
          return A.ioore($.toStringVisiting, -1);
        $.toStringVisiting.pop();
      }
      t1 = A.StringBuffer__writeAll(leftDelimiter, type$.Iterable_dynamic._as(parts), ", ") + rightDelimiter;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    Iterable_iterableToFullString(iterable, leftDelimiter, rightDelimiter) {
      var buffer, t1;
      if (A.isToStringVisiting(iterable))
        return leftDelimiter + "..." + rightDelimiter;
      buffer = new A.StringBuffer(leftDelimiter);
      B.JSArray_methods.add$1($.toStringVisiting, iterable);
      try {
        t1 = buffer;
        t1._contents = A.StringBuffer__writeAll(t1._contents, iterable, ", ");
      } finally {
        A.assertHelper(B.JSArray_methods.get$last($.toStringVisiting) === iterable);
        if (0 >= $.toStringVisiting.length)
          return A.ioore($.toStringVisiting, -1);
        $.toStringVisiting.pop();
      }
      buffer._contents += rightDelimiter;
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _iterablePartsToStrings(iterable, parts) {
      var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision,
        it = iterable.get$iterator(iterable),
        $length = 0, count = 0;
      for (;;) {
        if (!($length < 80 || count < 3))
          break;
        if (!it.moveNext$0())
          return;
        next = A.S(it.get$current());
        B.JSArray_methods.add$1(parts, next);
        $length += next.length + 2;
        ++count;
      }
      if (!it.moveNext$0()) {
        if (count <= 5)
          return;
        if (0 >= parts.length)
          return A.ioore(parts, -1);
        ultimateString = parts.pop();
        if (0 >= parts.length)
          return A.ioore(parts, -1);
        penultimateString = parts.pop();
      } else {
        penultimate = it.get$current();
        ++count;
        if (!it.moveNext$0()) {
          if (count <= 4) {
            B.JSArray_methods.add$1(parts, A.S(penultimate));
            return;
          }
          ultimateString = A.S(penultimate);
          if (0 >= parts.length)
            return A.ioore(parts, -1);
          penultimateString = parts.pop();
          $length += ultimateString.length + 2;
        } else {
          ultimate = it.get$current();
          ++count;
          A.assertHelper(count < 100);
          for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
            ultimate0 = it.get$current();
            ++count;
            if (count > 100) {
              for (;;) {
                if (!($length > 75 && count > 3))
                  break;
                if (0 >= parts.length)
                  return A.ioore(parts, -1);
                $length -= parts.pop().length + 2;
                --count;
              }
              B.JSArray_methods.add$1(parts, "...");
              return;
            }
          }
          penultimateString = A.S(penultimate);
          ultimateString = A.S(ultimate);
          $length += ultimateString.length + penultimateString.length + 4;
        }
      }
      if (count > parts.length + 2) {
        $length += 5;
        elision = "...";
      } else
        elision = null;
      for (;;) {
        if (!($length > 80 && parts.length > 3))
          break;
        if (0 >= parts.length)
          return A.ioore(parts, -1);
        $length -= parts.pop().length + 2;
        if (elision == null) {
          $length += 5;
          elision = "...";
        }
      }
      if (elision != null)
        B.JSArray_methods.add$1(parts, elision);
      B.JSArray_methods.add$1(parts, penultimateString);
      B.JSArray_methods.add$1(parts, ultimateString);
    },
    Object_hash(object1, object2, object3, object4) {
      var t1;
      if (B.C_SentinelValue === object3) {
        t1 = J.get$hashCode$(object1);
        object2 = J.get$hashCode$(object2);
        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2));
      }
      if (B.C_SentinelValue === object4) {
        t1 = J.get$hashCode$(object1);
        object2 = J.get$hashCode$(object2);
        object3 = J.get$hashCode$(object3);
        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2), object3));
      }
      t1 = J.get$hashCode$(object1);
      object2 = J.get$hashCode$(object2);
      object3 = J.get$hashCode$(object3);
      object4 = J.get$hashCode$(object4);
      object4 = A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2), object3), object4));
      return object4;
    },
    print(object) {
      var line = A.S(object),
        toZone = $.printToZone;
      if (toZone == null)
        A.printString(line);
      else
        toZone.call$1(line);
    },
    Uri_Uri$dataFromString($content) {
      var t1, _null = null,
        buffer = new A.StringBuffer(""),
        indices = A._setArrayType([-1], type$.JSArray_int);
      A.UriData__writeUri(_null, _null, _null, buffer, indices);
      B.JSArray_methods.add$1(indices, buffer._contents.length);
      buffer._contents += ",";
      A.UriData__uriEncodeBytes(256, B.C_AsciiCodec.encode$1($content), buffer);
      t1 = buffer._contents;
      return new A.UriData(t1.charCodeAt(0) == 0 ? t1 : t1, indices, _null).get$uri();
    },
    Uri_parse(uri) {
      var delta, indices, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, isSimple, scheme, t1, t2, schemeAuth, queryStart0, pathStart0, port, userInfoStart, userInfo, host, portNumber, path, query, _null = null,
        end = uri.length;
      if (end >= 5) {
        if (4 >= end)
          return A.ioore(uri, 4);
        delta = ((uri.charCodeAt(4) ^ 58) * 3 | uri.charCodeAt(0) ^ 100 | uri.charCodeAt(1) ^ 97 | uri.charCodeAt(2) ^ 116 | uri.charCodeAt(3) ^ 97) >>> 0;
        if (delta === 0)
          return A.UriData__parse(end < end ? B.JSString_methods.substring$2(uri, 0, end) : uri, 5, _null).get$uri();
        else if (delta === 32)
          return A.UriData__parse(B.JSString_methods.substring$2(uri, 5, end), 0, _null).get$uri();
      }
      indices = A.List_List$filled(8, 0, false, type$.int);
      B.JSArray_methods.$indexSet(indices, 0, 0);
      B.JSArray_methods.$indexSet(indices, 1, -1);
      B.JSArray_methods.$indexSet(indices, 2, -1);
      B.JSArray_methods.$indexSet(indices, 7, -1);
      B.JSArray_methods.$indexSet(indices, 3, 0);
      B.JSArray_methods.$indexSet(indices, 4, 0);
      B.JSArray_methods.$indexSet(indices, 5, end);
      B.JSArray_methods.$indexSet(indices, 6, end);
      if (A._scan(uri, 0, end, 0, indices) >= 14)
        B.JSArray_methods.$indexSet(indices, 7, end);
      schemeEnd = indices[1];
      if (schemeEnd >= 0)
        if (A._scan(uri, 0, schemeEnd, 20, indices) === 20)
          indices[7] = schemeEnd;
      hostStart = indices[2] + 1;
      portStart = indices[3];
      pathStart = indices[4];
      queryStart = indices[5];
      fragmentStart = indices[6];
      if (fragmentStart < queryStart)
        queryStart = fragmentStart;
      if (pathStart < hostStart)
        pathStart = queryStart;
      else if (pathStart <= schemeEnd)
        pathStart = schemeEnd + 1;
      if (portStart < hostStart)
        portStart = pathStart;
      A.assertHelper(hostStart === 0 || schemeEnd <= hostStart);
      A.assertHelper(hostStart <= portStart);
      A.assertHelper(schemeEnd <= pathStart);
      A.assertHelper(portStart <= pathStart);
      A.assertHelper(pathStart <= queryStart);
      A.assertHelper(queryStart <= fragmentStart);
      isSimple = indices[7] < 0;
      scheme = _null;
      if (isSimple) {
        isSimple = false;
        if (!(hostStart > schemeEnd + 3)) {
          t1 = portStart > 0;
          if (!(t1 && portStart + 1 === pathStart)) {
            if (!B.JSString_methods.startsWith$2(uri, "\\", pathStart))
              if (hostStart > 0)
                t2 = B.JSString_methods.startsWith$2(uri, "\\", hostStart - 1) || B.JSString_methods.startsWith$2(uri, "\\", hostStart - 2);
              else
                t2 = false;
            else
              t2 = true;
            if (!t2) {
              if (!(queryStart < end && queryStart === pathStart + 2 && B.JSString_methods.startsWith$2(uri, "..", pathStart)))
                t2 = queryStart > pathStart + 2 && B.JSString_methods.startsWith$2(uri, "/..", queryStart - 3);
              else
                t2 = true;
              if (!t2)
                if (schemeEnd === 4) {
                  if (B.JSString_methods.startsWith$2(uri, "file", 0)) {
                    if (hostStart <= 0) {
                      if (!B.JSString_methods.startsWith$2(uri, "/", pathStart)) {
                        schemeAuth = "file:///";
                        delta = 3;
                      } else {
                        schemeAuth = "file://";
                        delta = 2;
                      }
                      uri = schemeAuth + B.JSString_methods.substring$2(uri, pathStart, end);
                      queryStart += delta;
                      fragmentStart += delta;
                      end = uri.length;
                      hostStart = 7;
                      portStart = 7;
                      pathStart = 7;
                    } else if (pathStart === queryStart) {
                      ++fragmentStart;
                      queryStart0 = queryStart + 1;
                      uri = B.JSString_methods.replaceRange$3(uri, pathStart, queryStart, "/");
                      ++end;
                      queryStart = queryStart0;
                    }
                    scheme = "file";
                  } else if (B.JSString_methods.startsWith$2(uri, "http", 0)) {
                    if (t1 && portStart + 3 === pathStart && B.JSString_methods.startsWith$2(uri, "80", portStart + 1)) {
                      fragmentStart -= 3;
                      pathStart0 = pathStart - 3;
                      queryStart -= 3;
                      uri = B.JSString_methods.replaceRange$3(uri, portStart, pathStart, "");
                      end -= 3;
                      pathStart = pathStart0;
                    }
                    scheme = "http";
                  }
                } else if (schemeEnd === 5 && B.JSString_methods.startsWith$2(uri, "https", 0)) {
                  if (t1 && portStart + 4 === pathStart && B.JSString_methods.startsWith$2(uri, "443", portStart + 1)) {
                    fragmentStart -= 4;
                    pathStart0 = pathStart - 4;
                    queryStart -= 4;
                    uri = B.JSString_methods.replaceRange$3(uri, portStart, pathStart, "");
                    end -= 3;
                    pathStart = pathStart0;
                  }
                  scheme = "https";
                }
              isSimple = !t2;
            }
          }
        }
      }
      if (isSimple)
        return new A._SimpleUri(end < uri.length ? B.JSString_methods.substring$2(uri, 0, end) : uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
      if (scheme == null)
        if (schemeEnd > 0)
          scheme = A._Uri__makeScheme(uri, 0, schemeEnd);
        else {
          if (schemeEnd === 0)
            A._Uri__fail(uri, 0, "Invalid empty scheme");
          scheme = "";
        }
      port = _null;
      if (hostStart > 0) {
        userInfoStart = schemeEnd + 3;
        userInfo = userInfoStart < hostStart ? A._Uri__makeUserInfo(uri, userInfoStart, hostStart - 1) : "";
        host = A._Uri__makeHost(uri, hostStart, portStart, false);
        t1 = portStart + 1;
        if (t1 < pathStart) {
          portNumber = A.Primitives_parseInt(B.JSString_methods.substring$2(uri, t1, pathStart), _null);
          port = A._Uri__makePort(portNumber == null ? A.throwExpression(A.FormatException$("Invalid port", uri, t1)) : portNumber, scheme);
        }
      } else {
        host = _null;
        userInfo = "";
      }
      path = A._Uri__makePath(uri, pathStart, queryStart, _null, scheme, host != null);
      query = queryStart < fragmentStart ? A._Uri__makeQuery(uri, queryStart + 1, fragmentStart, _null) : _null;
      return A._Uri$_internal(scheme, userInfo, host, port, path, query, fragmentStart < end ? A._Uri__makeFragment(uri, fragmentStart + 1, end) : _null);
    },
    Uri_decodeComponent(encodedComponent) {
      A._asString(encodedComponent);
      return A._Uri__uriDecode(encodedComponent, 0, encodedComponent.length, B.C_Utf8Codec, false);
    },
    Uri__ipv4FormatError(msg, source, position) {
      throw A.wrapException(A.FormatException$("Illegal IPv4 address, " + msg, source, position));
    },
    Uri__parseIPv4Address(host, start, end, target, targetOffset) {
      var t1, octetStart, cursor, octetIndex, octetValue, char, digit, octetIndex0, t2,
        _s17_ = "invalid character";
      A.assertHelper(16 >= targetOffset + 4);
      for (t1 = host.length, octetStart = start, cursor = octetStart, octetIndex = 0, octetValue = 0;;) {
        if (cursor >= end)
          char = 0;
        else {
          if (!(cursor >= 0 && cursor < t1))
            return A.ioore(host, cursor);
          char = host.charCodeAt(cursor);
        }
        digit = char ^ 48;
        if (digit <= 9) {
          if (octetValue !== 0 || cursor === octetStart) {
            octetValue = octetValue * 10 + digit;
            if (octetValue <= 255) {
              ++cursor;
              continue;
            }
            A.Uri__ipv4FormatError("each part must be in the range 0..255", host, octetStart);
          }
          A.Uri__ipv4FormatError("parts must not have leading zeros", host, octetStart);
        }
        if (cursor === octetStart) {
          if (cursor === end)
            break;
          A.Uri__ipv4FormatError(_s17_, host, cursor);
        }
        octetIndex0 = octetIndex + 1;
        t2 = targetOffset + octetIndex;
        target.$flags & 2 && A.throwUnsupportedOperation(target);
        if (!(t2 < 16))
          return A.ioore(target, t2);
        target[t2] = octetValue;
        if (char === 46) {
          if (octetIndex0 < 4) {
            ++cursor;
            octetIndex = octetIndex0;
            octetStart = cursor;
            octetValue = 0;
            continue;
          }
          break;
        }
        if (cursor === end) {
          if (octetIndex0 === 4)
            return;
          break;
        }
        A.Uri__ipv4FormatError(_s17_, host, cursor);
        octetIndex = octetIndex0;
      }
      A.Uri__ipv4FormatError("IPv4 address should contain exactly 4 parts", host, cursor);
    },
    Uri__validateIPvAddress(host, start, end) {
      var error;
      A.assertHelper(0 <= start && start <= end && end <= host.length);
      if (start === end)
        throw A.wrapException(A.FormatException$("Empty IP address", host, start));
      if (!(start >= 0 && start < host.length))
        return A.ioore(host, start);
      if (host.charCodeAt(start) === 118) {
        error = A.Uri__validateIPvFutureAddress(host, start, end);
        if (error != null)
          throw A.wrapException(error);
        return false;
      }
      A.Uri_parseIPv6Address(host, start, end);
      return true;
    },
    Uri__validateIPvFutureAddress(host, start, end) {
      var t1, cursor, cursor0, char, ucChar,
        _s38_ = "Missing hex-digit in IPvFuture address",
        _s128_ = string$.x00_____;
      A.assertHelper(B.JSString_methods.startsWith$2(host, "v", start));
      ++start;
      for (t1 = host.length, cursor = start;; cursor = cursor0) {
        if (cursor < end) {
          cursor0 = cursor + 1;
          if (!(cursor >= 0 && cursor < t1))
            return A.ioore(host, cursor);
          char = host.charCodeAt(cursor);
          if ((char ^ 48) <= 9)
            continue;
          ucChar = char | 32;
          if (ucChar >= 97 && ucChar <= 102)
            continue;
          if (char === 46) {
            if (cursor0 - 1 === start)
              return new A.FormatException(_s38_, host, cursor0);
            cursor = cursor0;
            break;
          }
          return new A.FormatException("Unexpected character", host, cursor0 - 1);
        }
        if (cursor - 1 === start)
          return new A.FormatException(_s38_, host, cursor);
        return new A.FormatException("Missing '.' in IPvFuture address", host, cursor);
      }
      if (cursor === end)
        return new A.FormatException("Missing address in IPvFuture address, host, cursor", null, null);
      for (;;) {
        if (!(cursor >= 0 && cursor < t1))
          return A.ioore(host, cursor);
        char = host.charCodeAt(cursor);
        if (!(char < 128))
          return A.ioore(_s128_, char);
        if ((_s128_.charCodeAt(char) & 16) !== 0) {
          ++cursor;
          if (cursor < end)
            continue;
          return null;
        }
        return new A.FormatException("Invalid IPvFuture address character", host, cursor);
      }
    },
    Uri_parseIPv6Address(host, start, end) {
      var result, t1, wildcardAt, partCount, t2, cursor, partStart, hexValue, decValue, char, _0_0, decValue0, hexDigit, _1_0, t3, partCount0, partAfterWildcard, partsAfterWildcard, positionAfterWildcard, newPositionAfterWildcard,
        _s39_ = "an address must contain at most 8 parts",
        error = new A.Uri_parseIPv6Address_error(host);
      if (end - start < 2)
        error.call$2("address is too short", null);
      result = new Uint8Array(16);
      t1 = host.length;
      if (!(start >= 0 && start < t1))
        return A.ioore(host, start);
      wildcardAt = -1;
      partCount = 0;
      if (host.charCodeAt(start) === 58) {
        t2 = start + 1;
        if (!(t2 < t1))
          return A.ioore(host, t2);
        if (host.charCodeAt(t2) === 58) {
          cursor = start + 2;
          partStart = cursor;
          wildcardAt = 0;
          partCount = 1;
        } else {
          error.call$2("invalid start colon", start);
          cursor = start;
          partStart = cursor;
        }
      } else {
        cursor = start;
        partStart = cursor;
      }
      for (hexValue = 0, decValue = true;;) {
        if (cursor >= end)
          char = 0;
        else {
          if (!(cursor < t1))
            return A.ioore(host, cursor);
          char = host.charCodeAt(cursor);
        }
        $label0$0: {
          _0_0 = char ^ 48;
          decValue0 = false;
          if (_0_0 <= 9)
            hexDigit = _0_0;
          else {
            _1_0 = char | 32;
            if (_1_0 >= 97 && _1_0 <= 102)
              hexDigit = _1_0 - 87;
            else
              break $label0$0;
            decValue = decValue0;
          }
          if (cursor < partStart + 4) {
            hexValue = hexValue * 16 + hexDigit;
            ++cursor;
            continue;
          }
          error.call$2("an IPv6 part can contain a maximum of 4 hex digits", partStart);
        }
        if (cursor > partStart) {
          if (char === 46) {
            if (decValue) {
              if (partCount <= 6) {
                A.Uri__parseIPv4Address(host, partStart, end, result, partCount * 2);
                partCount += 2;
                cursor = end;
                break;
              }
              error.call$2(_s39_, partStart);
            }
            break;
          }
          t2 = partCount * 2;
          t3 = B.JSInt_methods._shrOtherPositive$1(hexValue, 8);
          if (!(t2 < 16))
            return A.ioore(result, t2);
          result[t2] = t3;
          ++t2;
          if (!(t2 < 16))
            return A.ioore(result, t2);
          result[t2] = hexValue & 255;
          ++partCount;
          if (char === 58) {
            if (partCount < 8) {
              ++cursor;
              partStart = cursor;
              hexValue = 0;
              decValue = true;
              continue;
            }
            error.call$2(_s39_, cursor);
          }
          break;
        }
        if (char === 58) {
          if (wildcardAt < 0) {
            partCount0 = partCount + 1;
            ++cursor;
            wildcardAt = partCount;
            partCount = partCount0;
            partStart = cursor;
            continue;
          }
          error.call$2("only one wildcard `::` is allowed", cursor);
        }
        if (wildcardAt !== partCount - 1)
          error.call$2("missing part", cursor);
        break;
      }
      if (cursor < end)
        error.call$2("invalid character", cursor);
      if (partCount < 8) {
        if (wildcardAt < 0)
          error.call$2("an address without a wildcard must contain exactly 8 parts", end);
        partAfterWildcard = wildcardAt + 1;
        partsAfterWildcard = partCount - partAfterWildcard;
        if (partsAfterWildcard > 0) {
          positionAfterWildcard = partAfterWildcard * 2;
          newPositionAfterWildcard = 16 - partsAfterWildcard * 2;
          B.NativeUint8List_methods.setRange$4(result, newPositionAfterWildcard, 16, result, positionAfterWildcard);
          B.NativeUint8List_methods.fillRange$3(result, positionAfterWildcard, newPositionAfterWildcard, 0);
        }
      }
      return result;
    },
    _Uri$_internal(scheme, _userInfo, _host, _port, path, _query, _fragment) {
      return new A._Uri(scheme, _userInfo, _host, _port, path, _query, _fragment);
    },
    _Uri__Uri(host, path, pathSegments, scheme) {
      var userInfo, query, fragment, port, isFile, t1, hasAuthority, t2, _null = null;
      scheme = scheme == null ? "" : A._Uri__makeScheme(scheme, 0, scheme.length);
      userInfo = A._Uri__makeUserInfo(_null, 0, 0);
      host = A._Uri__makeHost(host, 0, host == null ? 0 : host.length, false);
      query = A._Uri__makeQuery(_null, 0, 0, _null);
      fragment = A._Uri__makeFragment(_null, 0, 0);
      port = A._Uri__makePort(_null, scheme);
      isFile = scheme === "file";
      if (host == null)
        t1 = userInfo.length !== 0 || port != null || isFile;
      else
        t1 = false;
      if (t1)
        host = "";
      t1 = host == null;
      hasAuthority = !t1;
      path = A._Uri__makePath(path, 0, path == null ? 0 : path.length, pathSegments, scheme, hasAuthority);
      t2 = scheme.length === 0;
      if (t2 && t1 && !B.JSString_methods.startsWith$1(path, "/"))
        path = A._Uri__normalizeRelativePath(path, !t2 || hasAuthority);
      else
        path = A._Uri__removeDotSegments(path);
      return A._Uri$_internal(scheme, userInfo, t1 && B.JSString_methods.startsWith$1(path, "//") ? "" : host, port, path, query, fragment);
    },
    _Uri__defaultPort(scheme) {
      if (scheme === "http")
        return 80;
      if (scheme === "https")
        return 443;
      return 0;
    },
    _Uri__fail(uri, index, message) {
      throw A.wrapException(A.FormatException$(message, uri, index));
    },
    _Uri__Uri$file(path, windows) {
      return windows ? A._Uri__makeWindowsFileUrl(path, false) : A._Uri__makeFileUri(path, false);
    },
    _Uri__checkNonWindowsPathReservedCharacters(segments, argumentError) {
      var t1, _i, segment;
      for (t1 = segments.length, _i = 0; _i < t1; ++_i) {
        segment = segments[_i];
        if (B.JSString_methods.contains$1(segment, "/")) {
          t1 = A.UnsupportedError$("Illegal path character " + segment);
          throw A.wrapException(t1);
        }
      }
    },
    _Uri__checkWindowsPathReservedCharacters(segments, argumentError, firstSegment) {
      var t1, t2, t3;
      for (t1 = A.SubListIterable$(segments, firstSegment, null, A._arrayInstanceType(segments)._precomputed1), t2 = t1.$ti, t1 = new A.ListIterator(t1, t1.get$length(0), t2._eval$1("ListIterator<ListIterable.E>")), t2 = t2._eval$1("ListIterable.E"); t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        if (B.JSString_methods.contains$1(t3, A.RegExp_RegExp('["*/:<>?\\\\|]', true, false, false, false)))
          if (argumentError)
            throw A.wrapException(A.ArgumentError$("Illegal character in path", null));
          else
            throw A.wrapException(A.UnsupportedError$("Illegal character in path: " + t3));
      }
    },
    _Uri__checkWindowsDriveLetter(charCode, argumentError) {
      var t1,
        _s21_ = "Illegal drive letter ";
      if (!(65 <= charCode && charCode <= 90))
        t1 = 97 <= charCode && charCode <= 122;
      else
        t1 = true;
      if (t1)
        return;
      if (argumentError)
        throw A.wrapException(A.ArgumentError$(_s21_ + A.String_String$fromCharCode(charCode), null));
      else
        throw A.wrapException(A.UnsupportedError$(_s21_ + A.String_String$fromCharCode(charCode)));
    },
    _Uri__makeFileUri(path, slashTerminated) {
      var _null = null,
        segments = A._setArrayType(path.split("/"), type$.JSArray_String);
      if (B.JSString_methods.startsWith$1(path, "/"))
        return A._Uri__Uri(_null, _null, segments, "file");
      else
        return A._Uri__Uri(_null, _null, segments, _null);
    },
    _Uri__makeWindowsFileUrl(path, slashTerminated) {
      var t1, t2, pathSegments, pathStart, hostPart, _s1_ = "\\", _null = null, _s4_ = "file";
      if (B.JSString_methods.startsWith$1(path, "\\\\?\\"))
        if (B.JSString_methods.startsWith$2(path, "UNC\\", 4))
          path = B.JSString_methods.replaceRange$3(path, 0, 7, _s1_);
        else {
          path = B.JSString_methods.substring$1(path, 4);
          t1 = path.length;
          t2 = true;
          if (t1 >= 3) {
            if (1 >= t1)
              return A.ioore(path, 1);
            if (path.charCodeAt(1) === 58) {
              if (2 >= t1)
                return A.ioore(path, 2);
              t1 = path.charCodeAt(2) !== 92;
            } else
              t1 = t2;
          } else
            t1 = t2;
          if (t1)
            throw A.wrapException(A.ArgumentError$value(path, "path", "Windows paths with \\\\?\\ prefix must be absolute"));
        }
      else
        path = A.stringReplaceAllUnchecked(path, "/", _s1_);
      t1 = path.length;
      if (t1 > 1 && path.charCodeAt(1) === 58) {
        if (0 >= t1)
          return A.ioore(path, 0);
        A._Uri__checkWindowsDriveLetter(path.charCodeAt(0), true);
        if (t1 !== 2) {
          if (2 >= t1)
            return A.ioore(path, 2);
          t1 = path.charCodeAt(2) !== 92;
        } else
          t1 = true;
        if (t1)
          throw A.wrapException(A.ArgumentError$value(path, "path", "Windows paths with drive letter must be absolute"));
        pathSegments = A._setArrayType(path.split(_s1_), type$.JSArray_String);
        A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 1);
        return A._Uri__Uri(_null, _null, pathSegments, _s4_);
      }
      if (B.JSString_methods.startsWith$1(path, _s1_))
        if (B.JSString_methods.startsWith$2(path, _s1_, 1)) {
          pathStart = B.JSString_methods.indexOf$2(path, _s1_, 2);
          t1 = pathStart < 0;
          hostPart = t1 ? B.JSString_methods.substring$1(path, 2) : B.JSString_methods.substring$2(path, 2, pathStart);
          pathSegments = A._setArrayType((t1 ? "" : B.JSString_methods.substring$1(path, pathStart + 1)).split(_s1_), type$.JSArray_String);
          A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
          return A._Uri__Uri(hostPart, _null, pathSegments, _s4_);
        } else {
          pathSegments = A._setArrayType(path.split(_s1_), type$.JSArray_String);
          A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
          return A._Uri__Uri(_null, _null, pathSegments, _s4_);
        }
      else {
        pathSegments = A._setArrayType(path.split(_s1_), type$.JSArray_String);
        A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
        return A._Uri__Uri(_null, _null, pathSegments, _null);
      }
    },
    _Uri__makePort(port, scheme) {
      if (port != null && port === A._Uri__defaultPort(scheme))
        return null;
      return port;
    },
    _Uri__makeHost(host, start, end, strictIPv6) {
      var t1, t2, t3, zoneID, index, zoneIDstart, isIPv6, hostChars, i;
      if (host == null)
        return null;
      if (start === end)
        return "";
      t1 = host.length;
      if (!(start >= 0 && start < t1))
        return A.ioore(host, start);
      if (host.charCodeAt(start) === 91) {
        t2 = end - 1;
        if (!(t2 >= 0 && t2 < t1))
          return A.ioore(host, t2);
        if (host.charCodeAt(t2) !== 93)
          A._Uri__fail(host, start, "Missing end `]` to match `[` in host");
        t3 = start + 1;
        if (!(t3 < t1))
          return A.ioore(host, t3);
        zoneID = "";
        if (host.charCodeAt(t3) !== 118) {
          index = A._Uri__checkZoneID(host, t3, t2);
          if (index < t2) {
            zoneIDstart = index + 1;
            zoneID = A._Uri__normalizeZoneID(host, B.JSString_methods.startsWith$2(host, "25", zoneIDstart) ? index + 3 : zoneIDstart, t2, "%25");
          }
        } else
          index = t2;
        isIPv6 = A.Uri__validateIPvAddress(host, t3, index);
        hostChars = B.JSString_methods.substring$2(host, t3, index);
        return "[" + (isIPv6 ? hostChars.toLowerCase() : hostChars) + zoneID + "]";
      }
      for (i = start; i < end; ++i) {
        if (!(i < t1))
          return A.ioore(host, i);
        if (host.charCodeAt(i) === 58) {
          index = B.JSString_methods.indexOf$2(host, "%", start);
          index = index >= start && index < end ? index : end;
          if (index < end) {
            zoneIDstart = index + 1;
            zoneID = A._Uri__normalizeZoneID(host, B.JSString_methods.startsWith$2(host, "25", zoneIDstart) ? index + 3 : zoneIDstart, end, "%25");
          } else
            zoneID = "";
          A.Uri_parseIPv6Address(host, start, index);
          return "[" + B.JSString_methods.substring$2(host, start, index) + zoneID + "]";
        }
      }
      return A._Uri__normalizeRegName(host, start, end);
    },
    _Uri__checkZoneID(host, start, end) {
      var index = B.JSString_methods.indexOf$2(host, "%", start);
      return index >= start && index < end ? index : end;
    },
    _Uri__normalizeZoneID(host, start, end, prefix) {
      var t1, index, sectionStart, isNormalized, char, replacement, t2, t3, sourceLength, tail, slice,
        buffer = prefix !== "" ? new A.StringBuffer(prefix) : null;
      for (t1 = host.length, index = start, sectionStart = index, isNormalized = true; index < end;) {
        if (!(index >= 0 && index < t1))
          return A.ioore(host, index);
        char = host.charCodeAt(index);
        if (char === 37) {
          replacement = A._Uri__normalizeEscape(host, index, true);
          t2 = replacement == null;
          if (t2 && isNormalized) {
            index += 3;
            continue;
          }
          if (buffer == null)
            buffer = new A.StringBuffer("");
          t3 = buffer._contents += B.JSString_methods.substring$2(host, sectionStart, index);
          if (t2)
            replacement = B.JSString_methods.substring$2(host, index, index + 3);
          else if (replacement === "%")
            A._Uri__fail(host, index, "ZoneID should not contain % anymore");
          buffer._contents = t3 + replacement;
          index += 3;
          sectionStart = index;
          isNormalized = true;
        } else if (char < 127 && (string$.x00_____.charCodeAt(char) & 1) !== 0) {
          if (isNormalized && 65 <= char && 90 >= char) {
            if (buffer == null)
              buffer = new A.StringBuffer("");
            if (sectionStart < index) {
              buffer._contents += B.JSString_methods.substring$2(host, sectionStart, index);
              sectionStart = index;
            }
            isNormalized = false;
          }
          ++index;
        } else {
          sourceLength = 1;
          if ((char & 64512) === 55296 && index + 1 < end) {
            t2 = index + 1;
            if (!(t2 < t1))
              return A.ioore(host, t2);
            tail = host.charCodeAt(t2);
            if ((tail & 64512) === 56320) {
              char = 65536 + ((char & 1023) << 10) + (tail & 1023);
              sourceLength = 2;
            }
          }
          slice = B.JSString_methods.substring$2(host, sectionStart, index);
          if (buffer == null) {
            buffer = new A.StringBuffer("");
            t2 = buffer;
          } else
            t2 = buffer;
          t2._contents += slice;
          t3 = A._Uri__escapeChar(char);
          t2._contents += t3;
          index += sourceLength;
          sectionStart = index;
        }
      }
      if (buffer == null)
        return B.JSString_methods.substring$2(host, start, end);
      if (sectionStart < end) {
        slice = B.JSString_methods.substring$2(host, sectionStart, end);
        buffer._contents += slice;
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Uri__normalizeRegName(host, start, end) {
      var t1, index, sectionStart, buffer, isNormalized, char, replacement, t2, slice, t3, sourceLength, tail,
        _s128_ = string$.x00_____;
      for (t1 = host.length, index = start, sectionStart = index, buffer = null, isNormalized = true; index < end;) {
        if (!(index >= 0 && index < t1))
          return A.ioore(host, index);
        char = host.charCodeAt(index);
        if (char === 37) {
          replacement = A._Uri__normalizeEscape(host, index, true);
          t2 = replacement == null;
          if (t2 && isNormalized) {
            index += 3;
            continue;
          }
          if (buffer == null)
            buffer = new A.StringBuffer("");
          slice = B.JSString_methods.substring$2(host, sectionStart, index);
          if (!isNormalized)
            slice = slice.toLowerCase();
          t3 = buffer._contents += slice;
          sourceLength = 3;
          if (t2)
            replacement = B.JSString_methods.substring$2(host, index, index + 3);
          else if (replacement === "%") {
            replacement = "%25";
            sourceLength = 1;
          }
          buffer._contents = t3 + replacement;
          index += sourceLength;
          sectionStart = index;
          isNormalized = true;
        } else if (char < 127 && (_s128_.charCodeAt(char) & 32) !== 0) {
          if (isNormalized && 65 <= char && 90 >= char) {
            if (buffer == null)
              buffer = new A.StringBuffer("");
            if (sectionStart < index) {
              buffer._contents += B.JSString_methods.substring$2(host, sectionStart, index);
              sectionStart = index;
            }
            isNormalized = false;
          }
          ++index;
        } else if (char <= 93 && (_s128_.charCodeAt(char) & 1024) !== 0)
          A._Uri__fail(host, index, "Invalid character");
        else {
          sourceLength = 1;
          if ((char & 64512) === 55296 && index + 1 < end) {
            t2 = index + 1;
            if (!(t2 < t1))
              return A.ioore(host, t2);
            tail = host.charCodeAt(t2);
            if ((tail & 64512) === 56320) {
              char = 65536 + ((char & 1023) << 10) + (tail & 1023);
              sourceLength = 2;
            }
          }
          slice = B.JSString_methods.substring$2(host, sectionStart, index);
          if (!isNormalized)
            slice = slice.toLowerCase();
          if (buffer == null) {
            buffer = new A.StringBuffer("");
            t2 = buffer;
          } else
            t2 = buffer;
          t2._contents += slice;
          t3 = A._Uri__escapeChar(char);
          t2._contents += t3;
          index += sourceLength;
          sectionStart = index;
        }
      }
      if (buffer == null)
        return B.JSString_methods.substring$2(host, start, end);
      if (sectionStart < end) {
        slice = B.JSString_methods.substring$2(host, sectionStart, end);
        if (!isNormalized)
          slice = slice.toLowerCase();
        buffer._contents += slice;
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Uri__makeScheme(scheme, start, end) {
      var t1, i, containsUpperCase, codeUnit;
      if (start === end)
        return "";
      t1 = scheme.length;
      if (!(start < t1))
        return A.ioore(scheme, start);
      if (!A._Uri__isAlphabeticCharacter(scheme.charCodeAt(start)))
        A._Uri__fail(scheme, start, "Scheme not starting with alphabetic character");
      for (i = start, containsUpperCase = false; i < end; ++i) {
        if (!(i < t1))
          return A.ioore(scheme, i);
        codeUnit = scheme.charCodeAt(i);
        if (!(codeUnit < 128 && (string$.x00_____.charCodeAt(codeUnit) & 8) !== 0))
          A._Uri__fail(scheme, i, "Illegal scheme character");
        if (65 <= codeUnit && codeUnit <= 90)
          containsUpperCase = true;
      }
      scheme = B.JSString_methods.substring$2(scheme, start, end);
      return A._Uri__canonicalizeScheme(containsUpperCase ? scheme.toLowerCase() : scheme);
    },
    _Uri__canonicalizeScheme(scheme) {
      if (scheme === "http")
        return "http";
      if (scheme === "file")
        return "file";
      if (scheme === "https")
        return "https";
      if (scheme === "package")
        return "package";
      return scheme;
    },
    _Uri__makeUserInfo(userInfo, start, end) {
      if (userInfo == null)
        return "";
      return A._Uri__normalizeOrSubstring(userInfo, start, end, 16, false, false);
    },
    _Uri__makePath(path, start, end, pathSegments, scheme, hasAuthority) {
      var t1, result,
        isFile = scheme === "file",
        ensureLeadingSlash = isFile || hasAuthority;
      if (path == null) {
        if (pathSegments == null)
          return isFile ? "/" : "";
        t1 = A._arrayInstanceType(pathSegments);
        result = new A.MappedListIterable(pathSegments, t1._eval$1("String(1)")._as(new A._Uri__makePath_closure()), t1._eval$1("MappedListIterable<1,String>")).join$1(0, "/");
      } else if (pathSegments != null)
        throw A.wrapException(A.ArgumentError$("Both path and pathSegments specified", null));
      else
        result = A._Uri__normalizeOrSubstring(path, start, end, 128, true, true);
      if (result.length === 0) {
        if (isFile)
          return "/";
      } else if (ensureLeadingSlash && !B.JSString_methods.startsWith$1(result, "/"))
        result = "/" + result;
      return A._Uri__normalizePath(result, scheme, hasAuthority);
    },
    _Uri__normalizePath(path, scheme, hasAuthority) {
      var t1 = scheme.length === 0;
      if (t1 && !hasAuthority && !B.JSString_methods.startsWith$1(path, "/") && !B.JSString_methods.startsWith$1(path, "\\"))
        return A._Uri__normalizeRelativePath(path, !t1 || hasAuthority);
      return A._Uri__removeDotSegments(path);
    },
    _Uri__makeQuery(query, start, end, queryParameters) {
      if (query != null)
        return A._Uri__normalizeOrSubstring(query, start, end, 256, true, false);
      return null;
    },
    _Uri__makeFragment(fragment, start, end) {
      if (fragment == null)
        return null;
      return A._Uri__normalizeOrSubstring(fragment, start, end, 256, true, false);
    },
    _Uri__normalizeEscape(source, index, lowerCase) {
      var t2, t3, firstDigit, secondDigit, firstDigitValue, secondDigitValue, value,
        _s128_ = string$.x00_____,
        t1 = source.length;
      if (!(index >= 0 && index < t1))
        return A.ioore(source, index);
      A.assertHelper(source.charCodeAt(index) === 37);
      t2 = index + 2;
      if (t2 >= t1)
        return "%";
      t3 = index + 1;
      if (!(t3 < t1))
        return A.ioore(source, t3);
      firstDigit = source.charCodeAt(t3);
      secondDigit = source.charCodeAt(t2);
      firstDigitValue = A.hexDigitValue(firstDigit);
      secondDigitValue = A.hexDigitValue(secondDigit);
      if (firstDigitValue < 0 || secondDigitValue < 0)
        return "%";
      value = firstDigitValue * 16 + secondDigitValue;
      if (value < 127) {
        if (!(value >= 0))
          return A.ioore(_s128_, value);
        t1 = (_s128_.charCodeAt(value) & 1) !== 0;
      } else
        t1 = false;
      if (t1)
        return A.Primitives_stringFromCharCode(lowerCase && 65 <= value && 90 >= value ? (value | 32) >>> 0 : value);
      if (firstDigit >= 97 || secondDigit >= 97)
        return B.JSString_methods.substring$2(source, index, index + 3).toUpperCase();
      return null;
    },
    _Uri__escapeChar(char) {
      var codeUnits, t1, flag, encodedBytes, index, byte, t2, t3,
        _s16_ = "0123456789ABCDEF";
      A.assertHelper(char <= 1114111);
      if (char <= 127) {
        codeUnits = new Uint8Array(3);
        codeUnits[0] = 37;
        t1 = char >>> 4;
        if (!(t1 < 16))
          return A.ioore(_s16_, t1);
        codeUnits[1] = _s16_.charCodeAt(t1);
        codeUnits[2] = _s16_.charCodeAt(char & 15);
      } else {
        if (char > 2047)
          if (char > 65535) {
            flag = 240;
            encodedBytes = 4;
          } else {
            flag = 224;
            encodedBytes = 3;
          }
        else {
          flag = 192;
          encodedBytes = 2;
        }
        t1 = 3 * encodedBytes;
        codeUnits = new Uint8Array(t1);
        for (index = 0; --encodedBytes, encodedBytes >= 0; flag = 128) {
          byte = B.JSInt_methods._shrReceiverPositive$1(char, 6 * encodedBytes) & 63 | flag;
          if (!(index < t1))
            return A.ioore(codeUnits, index);
          codeUnits[index] = 37;
          t2 = index + 1;
          t3 = byte >>> 4;
          if (!(t3 < 16))
            return A.ioore(_s16_, t3);
          if (!(t2 < t1))
            return A.ioore(codeUnits, t2);
          codeUnits[t2] = _s16_.charCodeAt(t3);
          t3 = index + 2;
          if (!(t3 < t1))
            return A.ioore(codeUnits, t3);
          codeUnits[t3] = _s16_.charCodeAt(byte & 15);
          index += 3;
        }
      }
      return A.String_String$fromCharCodes(codeUnits, 0, null);
    },
    _Uri__normalizeOrSubstring(component, start, end, charMask, escapeDelimiters, replaceBackslash) {
      var t1 = A._Uri__normalize(component, start, end, charMask, escapeDelimiters, replaceBackslash);
      return t1 == null ? B.JSString_methods.substring$2(component, start, end) : t1;
    },
    _Uri__normalize(component, start, end, charMask, escapeDelimiters, replaceBackslash) {
      var t1, t2, index, sectionStart, buffer, char, sourceLength, replacement, t3, tail, _null = null,
        _s128_ = string$.x00_____;
      for (t1 = !escapeDelimiters, t2 = component.length, index = start, sectionStart = index, buffer = _null; index < end;) {
        if (!(index >= 0 && index < t2))
          return A.ioore(component, index);
        char = component.charCodeAt(index);
        if (char < 127 && (_s128_.charCodeAt(char) & charMask) !== 0)
          ++index;
        else {
          sourceLength = 1;
          if (char === 37) {
            replacement = A._Uri__normalizeEscape(component, index, false);
            if (replacement == null) {
              index += 3;
              continue;
            }
            if ("%" === replacement)
              replacement = "%25";
            else
              sourceLength = 3;
          } else if (char === 92 && replaceBackslash)
            replacement = "/";
          else if (t1 && char <= 93 && (_s128_.charCodeAt(char) & 1024) !== 0) {
            A._Uri__fail(component, index, "Invalid character");
            sourceLength = _null;
            replacement = sourceLength;
          } else {
            if ((char & 64512) === 55296) {
              t3 = index + 1;
              if (t3 < end) {
                if (!(t3 < t2))
                  return A.ioore(component, t3);
                tail = component.charCodeAt(t3);
                if ((tail & 64512) === 56320) {
                  char = 65536 + ((char & 1023) << 10) + (tail & 1023);
                  sourceLength = 2;
                }
              }
            }
            replacement = A._Uri__escapeChar(char);
          }
          if (buffer == null) {
            buffer = new A.StringBuffer("");
            t3 = buffer;
          } else
            t3 = buffer;
          t3._contents = (t3._contents += B.JSString_methods.substring$2(component, sectionStart, index)) + replacement;
          if (typeof sourceLength !== "number")
            return A.iae(sourceLength);
          index += sourceLength;
          sectionStart = index;
        }
      }
      if (buffer == null)
        return _null;
      if (sectionStart < end) {
        t1 = B.JSString_methods.substring$2(component, sectionStart, end);
        buffer._contents += t1;
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Uri__mayContainDotSegments(path) {
      if (B.JSString_methods.startsWith$1(path, "."))
        return true;
      return B.JSString_methods.indexOf$1(path, "/.") !== -1;
    },
    _Uri__removeDotSegments(path) {
      var output, t1, t2, appendSlash, _i, segment, t3;
      if (!A._Uri__mayContainDotSegments(path))
        return path;
      A.assertHelper(path.length !== 0);
      output = A._setArrayType([], type$.JSArray_String);
      for (t1 = path.split("/"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {
        segment = t1[_i];
        if (segment === "..") {
          t3 = output.length;
          if (t3 !== 0) {
            if (0 >= t3)
              return A.ioore(output, -1);
            output.pop();
            if (output.length === 0)
              B.JSArray_methods.add$1(output, "");
          }
          appendSlash = true;
        } else {
          appendSlash = "." === segment;
          if (!appendSlash)
            B.JSArray_methods.add$1(output, segment);
        }
      }
      if (appendSlash)
        B.JSArray_methods.add$1(output, "");
      return B.JSArray_methods.join$1(output, "/");
    },
    _Uri__normalizeRelativePath(path, allowScheme) {
      var output, t1, t2, appendSlash, _i, segment;
      A.assertHelper(!B.JSString_methods.startsWith$1(path, "/"));
      if (!A._Uri__mayContainDotSegments(path))
        return !allowScheme ? A._Uri__escapeScheme(path) : path;
      A.assertHelper(path.length !== 0);
      output = A._setArrayType([], type$.JSArray_String);
      for (t1 = path.split("/"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {
        segment = t1[_i];
        if (".." === segment) {
          if (output.length !== 0 && B.JSArray_methods.get$last(output) !== "..") {
            if (0 >= output.length)
              return A.ioore(output, -1);
            output.pop();
          } else
            B.JSArray_methods.add$1(output, "..");
          appendSlash = true;
        } else {
          appendSlash = "." === segment;
          if (!appendSlash)
            B.JSArray_methods.add$1(output, segment.length === 0 && output.length === 0 ? "./" : segment);
        }
      }
      if (output.length === 0)
        return "./";
      A.assertHelper(B.JSArray_methods.get$first(output).length !== 0);
      if (appendSlash)
        B.JSArray_methods.add$1(output, "");
      if (!allowScheme) {
        if (0 >= output.length)
          return A.ioore(output, 0);
        B.JSArray_methods.$indexSet(output, 0, A._Uri__escapeScheme(output[0]));
      }
      return B.JSArray_methods.join$1(output, "/");
    },
    _Uri__escapeScheme(path) {
      var i, char, t2,
        _s128_ = string$.x00_____,
        t1 = path.length;
      if (t1 >= 2 && A._Uri__isAlphabeticCharacter(path.charCodeAt(0)))
        for (i = 1; i < t1; ++i) {
          char = path.charCodeAt(i);
          if (char === 58)
            return B.JSString_methods.substring$2(path, 0, i) + "%3A" + B.JSString_methods.substring$1(path, i + 1);
          if (char <= 127) {
            if (!(char < 128))
              return A.ioore(_s128_, char);
            t2 = (_s128_.charCodeAt(char) & 8) === 0;
          } else
            t2 = true;
          if (t2)
            break;
        }
      return path;
    },
    _Uri__packageNameEnd(uri, path) {
      if (uri.isScheme$1("package") && uri._host == null)
        return A._skipPackageNameChars(path, 0, path.length);
      return -1;
    },
    _Uri__hexCharPairToByte(s, pos) {
      var t1, byte, i, t2, charCode;
      for (t1 = s.length, byte = 0, i = 0; i < 2; ++i) {
        t2 = pos + i;
        if (!(t2 < t1))
          return A.ioore(s, t2);
        charCode = s.charCodeAt(t2);
        if (48 <= charCode && charCode <= 57)
          byte = byte * 16 + charCode - 48;
        else {
          charCode |= 32;
          if (97 <= charCode && charCode <= 102)
            byte = byte * 16 + charCode - 87;
          else
            throw A.wrapException(A.ArgumentError$("Invalid URL encoding", null));
        }
      }
      return byte;
    },
    _Uri__uriDecode(text, start, end, encoding, plusToSpace) {
      var t1, simple, i, codeUnit, t2, bytes;
      A.assertHelper(start <= end);
      t1 = text.length;
      A.assertHelper(end <= t1);
      i = start;
      for (;;) {
        if (!(i < end)) {
          simple = true;
          break;
        }
        if (!(i < t1))
          return A.ioore(text, i);
        codeUnit = text.charCodeAt(i);
        if (codeUnit <= 127)
          t2 = codeUnit === 37;
        else
          t2 = true;
        if (t2) {
          simple = false;
          break;
        }
        ++i;
      }
      if (simple)
        if (B.C_Utf8Codec === encoding)
          return B.JSString_methods.substring$2(text, start, end);
        else
          bytes = new A.CodeUnits(B.JSString_methods.substring$2(text, start, end));
      else {
        bytes = A._setArrayType([], type$.JSArray_int);
        for (i = start; i < end; ++i) {
          if (!(i < t1))
            return A.ioore(text, i);
          codeUnit = text.charCodeAt(i);
          if (codeUnit > 127)
            throw A.wrapException(A.ArgumentError$("Illegal percent encoding in URI", null));
          if (codeUnit === 37) {
            if (i + 3 > t1)
              throw A.wrapException(A.ArgumentError$("Truncated URI", null));
            B.JSArray_methods.add$1(bytes, A._Uri__hexCharPairToByte(text, i + 1));
            i += 2;
          } else
            B.JSArray_methods.add$1(bytes, codeUnit);
        }
      }
      return encoding.decode$1(bytes);
    },
    _Uri__isAlphabeticCharacter(codeUnit) {
      var lowerCase = codeUnit | 32;
      return 97 <= lowerCase && lowerCase <= 122;
    },
    UriData__writeUri(mimeType, charsetName, parameters, buffer, indices) {
      buffer._contents = buffer._contents;
    },
    UriData__parse(text, start, sourceUri) {
      var indices, t1, i, slashIndex, char, equalsIndex, lastSeparator, t2, data,
        _s17_ = "Invalid MIME type";
      A.assertHelper(start === 0 || start === 5);
      A.assertHelper(start === 5 === B.JSString_methods.startsWith$1(text, "data:"));
      indices = A._setArrayType([start - 1], type$.JSArray_int);
      for (t1 = text.length, i = start, slashIndex = -1, char = null; i < t1; ++i) {
        char = text.charCodeAt(i);
        if (char === 44 || char === 59)
          break;
        if (char === 47) {
          if (slashIndex < 0) {
            slashIndex = i;
            continue;
          }
          throw A.wrapException(A.FormatException$(_s17_, text, i));
        }
      }
      if (slashIndex < 0 && i > start)
        throw A.wrapException(A.FormatException$(_s17_, text, i));
      while (char !== 44) {
        B.JSArray_methods.add$1(indices, i);
        ++i;
        for (equalsIndex = -1; i < t1; ++i) {
          if (!(i >= 0))
            return A.ioore(text, i);
          char = text.charCodeAt(i);
          if (char === 61) {
            if (equalsIndex < 0)
              equalsIndex = i;
          } else if (char === 59 || char === 44)
            break;
        }
        if (equalsIndex >= 0)
          B.JSArray_methods.add$1(indices, equalsIndex);
        else {
          lastSeparator = B.JSArray_methods.get$last(indices);
          if (char !== 44 || i !== lastSeparator + 7 || !B.JSString_methods.startsWith$2(text, "base64", lastSeparator + 1))
            throw A.wrapException(A.FormatException$("Expecting '='", text, i));
          break;
        }
      }
      B.JSArray_methods.add$1(indices, i);
      t2 = i + 1;
      if ((indices.length & 1) === 1)
        text = B.C_Base64Codec.normalize$3(text, t2, t1);
      else {
        data = A._Uri__normalize(text, t2, t1, 256, true, false);
        if (data != null)
          text = B.JSString_methods.replaceRange$3(text, t2, t1, data);
      }
      return new A.UriData(text, indices, sourceUri);
    },
    UriData__uriEncodeBytes(canonicalMask, bytes, buffer) {
      var t1, byteOr, i, byte, t2,
        _s16_ = "0123456789ABCDEF";
      for (t1 = bytes.length, byteOr = 0, i = 0; i < t1; ++i) {
        byte = bytes[i];
        byteOr |= byte;
        if (byte < 128 && (string$.x00_____.charCodeAt(byte) & canonicalMask) !== 0) {
          t2 = A.Primitives_stringFromCharCode(byte);
          buffer._contents += t2;
        } else {
          t2 = A.Primitives_stringFromCharCode(37);
          buffer._contents += t2;
          t2 = byte >>> 4;
          if (!(t2 < 16))
            return A.ioore(_s16_, t2);
          t2 = A.Primitives_stringFromCharCode(_s16_.charCodeAt(t2));
          buffer._contents += t2;
          t2 = A.Primitives_stringFromCharCode(_s16_.charCodeAt(byte & 15));
          buffer._contents += t2;
        }
      }
      if ((byteOr & 4294967040) !== 0)
        for (i = 0; i < t1; ++i) {
          byte = bytes[i];
          if (byte > 255)
            throw A.wrapException(A.ArgumentError$value(byte, "non-byte value", null));
        }
    },
    _scan(uri, start, end, state, indices) {
      var i, char, t2, transition,
        _s2112_ = '\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe3\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0e\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\n\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\xeb\xeb\x8b\xeb\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x83\xeb\xeb\x8b\xeb\x8b\xeb\xcd\x8b\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x92\x83\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x8b\xeb\x8b\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xebD\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12D\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe8\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\x05\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x10\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\f\xec\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\xec\f\xec\f\xec\xcd\f\xec\f\f\f\f\f\f\f\f\f\xec\f\f\f\f\f\f\f\f\f\f\xec\f\xec\f\xec\f\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\r\xed\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\xed\r\xed\r\xed\xed\r\xed\r\r\r\r\r\r\r\r\r\xed\r\r\r\r\r\r\r\r\r\r\xed\r\xed\r\xed\r\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0f\xea\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe9\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x11\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xe9\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\t\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x13\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\xf5\x15\x15\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5',
        t1 = uri.length;
      A.assertHelper(end <= t1);
      for (i = start; i < end; ++i) {
        if (!(i < t1))
          return A.ioore(uri, i);
        char = uri.charCodeAt(i) ^ 96;
        if (char > 95)
          char = 31;
        t2 = state * 96 + char;
        if (!(t2 < 2112))
          return A.ioore(_s2112_, t2);
        transition = _s2112_.charCodeAt(t2);
        state = transition & 31;
        B.JSArray_methods.$indexSet(indices, transition >>> 5, i);
      }
      return state;
    },
    _SimpleUri__packageNameEnd(uri) {
      if (uri._schemeEnd === 7 && B.JSString_methods.startsWith$1(uri._uri, "package") && uri._hostStart <= 0)
        return A._skipPackageNameChars(uri._uri, uri._pathStart, uri._queryStart);
      return -1;
    },
    _skipPackageNameChars(source, start, end) {
      var t1, i, dots, char;
      for (t1 = source.length, i = start, dots = 0; i < end; ++i) {
        if (!(i >= 0 && i < t1))
          return A.ioore(source, i);
        char = source.charCodeAt(i);
        if (char === 47)
          return dots !== 0 ? i : -1;
        if (char === 37 || char === 58)
          return -1;
        dots |= char ^ 46;
      }
      return -1;
    },
    _caseInsensitiveCompareStart(prefix, string, start) {
      var t1, t2, result, i, t3, stringChar, delta, lowerChar;
      for (t1 = prefix.length, t2 = string.length, result = 0, i = 0; i < t1; ++i) {
        t3 = start + i;
        if (!(t3 < t2))
          return A.ioore(string, t3);
        stringChar = string.charCodeAt(t3);
        delta = prefix.charCodeAt(i) ^ stringChar;
        if (delta !== 0) {
          if (delta === 32) {
            lowerChar = stringChar | delta;
            if (97 <= lowerChar && lowerChar <= 122) {
              result = 32;
              continue;
            }
          }
          return -1;
        }
      }
      return result;
    },
    _BigIntImpl: function _BigIntImpl(t0, t1, t2) {
      this._isNegative = t0;
      this._digits = t1;
      this._used = t2;
    },
    _BigIntImpl_hashCode_combine: function _BigIntImpl_hashCode_combine() {
    },
    _BigIntImpl_hashCode_finish: function _BigIntImpl_hashCode_finish() {
    },
    _FinalizationRegistryWrapper: function _FinalizationRegistryWrapper(t0, t1) {
      this._registry = t0;
      this.$ti = t1;
    },
    DateTime: function DateTime(t0, t1, t2) {
      this._core$_value = t0;
      this._microsecond = t1;
      this.isUtc = t2;
    },
    Duration: function Duration(t0) {
      this._duration = t0;
    },
    _Enum: function _Enum() {
    },
    Error: function Error() {
    },
    AssertionError: function AssertionError(t0) {
      this.message = t0;
    },
    TypeError: function TypeError() {
    },
    ArgumentError: function ArgumentError(t0, t1, t2, t3) {
      var _ = this;
      _._hasValue = t0;
      _.invalidValue = t1;
      _.name = t2;
      _.message = t3;
    },
    RangeError: function RangeError(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.start = t0;
      _.end = t1;
      _._hasValue = t2;
      _.invalidValue = t3;
      _.name = t4;
      _.message = t5;
    },
    IndexError: function IndexError(t0, t1, t2, t3, t4) {
      var _ = this;
      _.length = t0;
      _._hasValue = t1;
      _.invalidValue = t2;
      _.name = t3;
      _.message = t4;
    },
    UnsupportedError: function UnsupportedError(t0) {
      this.message = t0;
    },
    UnimplementedError: function UnimplementedError(t0) {
      this.message = t0;
    },
    StateError: function StateError(t0) {
      this.message = t0;
    },
    ConcurrentModificationError: function ConcurrentModificationError(t0) {
      this.modifiedObject = t0;
    },
    OutOfMemoryError: function OutOfMemoryError() {
    },
    StackOverflowError: function StackOverflowError() {
    },
    _Exception: function _Exception(t0) {
      this.message = t0;
    },
    FormatException: function FormatException(t0, t1, t2) {
      this.message = t0;
      this.source = t1;
      this.offset = t2;
    },
    IntegerDivisionByZeroException: function IntegerDivisionByZeroException() {
    },
    Iterable: function Iterable() {
    },
    MapEntry: function MapEntry(t0, t1, t2) {
      this.key = t0;
      this.value = t1;
      this.$ti = t2;
    },
    Null: function Null() {
    },
    Object: function Object() {
    },
    _StringStackTrace: function _StringStackTrace(t0) {
      this._stackTrace = t0;
    },
    StringBuffer: function StringBuffer(t0) {
      this._contents = t0;
    },
    Uri_parseIPv6Address_error: function Uri_parseIPv6Address_error(t0) {
      this.host = t0;
    },
    _Uri: function _Uri(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.scheme = t0;
      _._userInfo = t1;
      _._host = t2;
      _._port = t3;
      _.path = t4;
      _._query = t5;
      _._fragment = t6;
      _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = $;
    },
    _Uri__makePath_closure: function _Uri__makePath_closure() {
    },
    UriData: function UriData(t0, t1, t2) {
      this._text = t0;
      this._separatorIndices = t1;
      this._uriCache = t2;
    },
    _SimpleUri: function _SimpleUri(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _._uri = t0;
      _._schemeEnd = t1;
      _._hostStart = t2;
      _._portStart = t3;
      _._pathStart = t4;
      _._queryStart = t5;
      _._fragmentStart = t6;
      _._schemeCache = t7;
      _._hashCodeCache = null;
    },
    _DataUri: function _DataUri(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.scheme = t0;
      _._userInfo = t1;
      _._host = t2;
      _._port = t3;
      _.path = t4;
      _._query = t5;
      _._fragment = t6;
      _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = $;
    },
    Expando: function Expando(t0, t1) {
      this._jsWeakMap = t0;
      this.$ti = t1;
    },
    ListToJSArray_get_toJS(_this, $T) {
      return _this;
    },
    JSAnyUtilityExtension_instanceOfString(_this, constructorName) {
      var parts, $constructor, t1, _i, t2;
      if (constructorName.length === 0)
        return false;
      parts = constructorName.split(".");
      $constructor = init.G;
      for (t1 = parts.length, _i = 0; _i < t1; ++_i, $constructor = t2) {
        t2 = $constructor[parts[_i]];
        A._asJSObjectQ(t2);
        if (t2 == null)
          return false;
      }
      return _this instanceof type$.JavaScriptFunction._as($constructor);
    },
    NullRejectionException: function NullRejectionException(t0) {
      this.isUndefined = t0;
    },
    _functionToJS1(f) {
      var result;
      if (typeof f == "function")
        throw A.wrapException(A.ArgumentError$("Attempting to rewrap a JS function.", null));
      result = function(_call, f) {
        return function(arg1) {
          return _call(f, arg1, arguments.length);
        };
      }(A._callDartFunctionFast1, f);
      result[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
      return result;
    },
    _functionToJS2(f) {
      var result;
      if (typeof f == "function")
        throw A.wrapException(A.ArgumentError$("Attempting to rewrap a JS function.", null));
      result = function(_call, f) {
        return function(arg1, arg2) {
          return _call(f, arg1, arg2, arguments.length);
        };
      }(A._callDartFunctionFast2, f);
      result[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
      return result;
    },
    _functionToJS3(f) {
      var result;
      if (typeof f == "function")
        throw A.wrapException(A.ArgumentError$("Attempting to rewrap a JS function.", null));
      result = function(_call, f) {
        return function(arg1, arg2, arg3) {
          return _call(f, arg1, arg2, arg3, arguments.length);
        };
      }(A._callDartFunctionFast3, f);
      result[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
      return result;
    },
    _functionToJS4(f) {
      var result;
      if (typeof f == "function")
        throw A.wrapException(A.ArgumentError$("Attempting to rewrap a JS function.", null));
      result = function(_call, f) {
        return function(arg1, arg2, arg3, arg4) {
          return _call(f, arg1, arg2, arg3, arg4, arguments.length);
        };
      }(A._callDartFunctionFast4, f);
      result[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
      return result;
    },
    _functionToJS5(f) {
      var result;
      if (typeof f == "function")
        throw A.wrapException(A.ArgumentError$("Attempting to rewrap a JS function.", null));
      result = function(_call, f) {
        return function(arg1, arg2, arg3, arg4, arg5) {
          return _call(f, arg1, arg2, arg3, arg4, arg5, arguments.length);
        };
      }(A._callDartFunctionFast5, f);
      result[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
      return result;
    },
    _callDartFunctionFast1(callback, arg1, $length) {
      type$.Function._as(callback);
      if (A._asInt($length) >= 1)
        return callback.call$1(arg1);
      return callback.call$0();
    },
    _callDartFunctionFast2(callback, arg1, arg2, $length) {
      type$.Function._as(callback);
      A._asInt($length);
      if ($length >= 2)
        return callback.call$2(arg1, arg2);
      if ($length === 1)
        return callback.call$1(arg1);
      return callback.call$0();
    },
    _callDartFunctionFast3(callback, arg1, arg2, arg3, $length) {
      type$.Function._as(callback);
      A._asInt($length);
      if ($length >= 3)
        return callback.call$3(arg1, arg2, arg3);
      if ($length === 2)
        return callback.call$2(arg1, arg2);
      if ($length === 1)
        return callback.call$1(arg1);
      return callback.call$0();
    },
    _callDartFunctionFast4(callback, arg1, arg2, arg3, arg4, $length) {
      type$.Function._as(callback);
      A._asInt($length);
      if ($length >= 4)
        return callback.call$4(arg1, arg2, arg3, arg4);
      if ($length === 3)
        return callback.call$3(arg1, arg2, arg3);
      if ($length === 2)
        return callback.call$2(arg1, arg2);
      if ($length === 1)
        return callback.call$1(arg1);
      return callback.call$0();
    },
    _callDartFunctionFast5(callback, arg1, arg2, arg3, arg4, arg5, $length) {
      type$.Function._as(callback);
      A._asInt($length);
      if ($length >= 5)
        return callback.call$5(arg1, arg2, arg3, arg4, arg5);
      if ($length === 4)
        return callback.call$4(arg1, arg2, arg3, arg4);
      if ($length === 3)
        return callback.call$3(arg1, arg2, arg3);
      if ($length === 2)
        return callback.call$2(arg1, arg2);
      if ($length === 1)
        return callback.call$1(arg1);
      return callback.call$0();
    },
    _noJsifyRequired(o) {
      return o == null || A._isBool(o) || typeof o == "number" || typeof o == "string" || type$.Int8List._is(o) || type$.Uint8List._is(o) || type$.Uint8ClampedList._is(o) || type$.Int16List._is(o) || type$.Uint16List._is(o) || type$.Int32List._is(o) || type$.Uint32List._is(o) || type$.Float32List._is(o) || type$.Float64List._is(o) || type$.ByteBuffer._is(o) || type$.ByteData._is(o);
    },
    jsify(object) {
      if (A._noJsifyRequired(object))
        return object;
      return new A.jsify__convert(new A._IdentityHashMap(type$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call$1(object);
    },
    callMethod(o, method, args, $T) {
      A.assertInteropArgs(args);
      return $T._as(o[method].apply(o, args));
    },
    callConstructor(constr, $arguments, $T) {
      var args, factoryFunction;
      if ($arguments == null)
        return $T._as(new constr());
      else
        A.assertInteropArgs($arguments);
      if ($arguments instanceof Array)
        switch ($arguments.length) {
          case 0:
            return $T._as(new constr());
          case 1:
            return $T._as(new constr($arguments[0]));
          case 2:
            return $T._as(new constr($arguments[0], $arguments[1]));
          case 3:
            return $T._as(new constr($arguments[0], $arguments[1], $arguments[2]));
          case 4:
            return $T._as(new constr($arguments[0], $arguments[1], $arguments[2], $arguments[3]));
        }
      args = [null];
      B.JSArray_methods.addAll$1(args, $arguments);
      factoryFunction = constr.bind.apply(constr, args);
      String(factoryFunction);
      return $T._as(new factoryFunction());
    },
    promiseToFuture(jsPromise, $T) {
      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
        completer = new A._AsyncCompleter(t1, $T._eval$1("_AsyncCompleter<0>"));
      jsPromise.then(A.convertDartClosureToJS(new A.promiseToFuture_closure(completer, $T), 1), A.convertDartClosureToJS(new A.promiseToFuture_closure0(completer), 1));
      return t1;
    },
    _noDartifyRequired(o) {
      return o == null || typeof o === "boolean" || typeof o === "number" || typeof o === "string" || o instanceof Int8Array || o instanceof Uint8Array || o instanceof Uint8ClampedArray || o instanceof Int16Array || o instanceof Uint16Array || o instanceof Int32Array || o instanceof Uint32Array || o instanceof Float32Array || o instanceof Float64Array || o instanceof ArrayBuffer || o instanceof DataView;
    },
    dartify(o) {
      if (A._noDartifyRequired(o))
        return o;
      return new A.dartify_convert(new A._IdentityHashMap(type$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call$1(o);
    },
    jsify__convert: function jsify__convert(t0) {
      this._convertedObjects = t0;
    },
    promiseToFuture_closure: function promiseToFuture_closure(t0, t1) {
      this.completer = t0;
      this.T = t1;
    },
    promiseToFuture_closure0: function promiseToFuture_closure0(t0) {
      this.completer = t0;
    },
    dartify_convert: function dartify_convert(t0) {
      this._convertedObjects = t0;
    },
    max(a, b, $T) {
      A.checkTypeBound($T, type$.num, "T", "max");
      return Math.max($T._as(a), $T._as(b));
    },
    sqrt(x) {
      return Math.sqrt(x);
    },
    sin(radians) {
      return Math.sin(radians);
    },
    cos(radians) {
      return Math.cos(radians);
    },
    tan(radians) {
      return Math.tan(radians);
    },
    acos(x) {
      return Math.acos(x);
    },
    asin(x) {
      return Math.asin(x);
    },
    atan(x) {
      return Math.atan(x);
    },
    _JSSecureRandom: function _JSSecureRandom(t0) {
      this._math$_buffer = t0;
    },
    DelegatingStreamSink: function DelegatingStreamSink() {
    },
    DefaultEquality: function DefaultEquality(t0) {
      this.$ti = t0;
    },
    ListEquality: function ListEquality(t0) {
      this.$ti = t0;
    },
    NonGrowableListMixin: function NonGrowableListMixin() {
    },
    UnmodifiableMapMixin: function UnmodifiableMapMixin() {
    },
    DriftCommunication$(_channel, serialize) {
      var t1 = new A.DriftCommunication(_channel, serialize, A.LinkedHashMap_LinkedHashMap$_empty(type$.int, type$._PendingRequest), A.StreamController_StreamController(null, null, true, type$.Request), new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void));
      t1.DriftCommunication$3$debugLog$serialize(_channel, false, serialize);
      return t1;
    },
    DriftCommunication: function DriftCommunication(t0, t1, t2, t3, t4) {
      var _ = this;
      _._communication$_channel = t0;
      _._serialize = t1;
      _._currentRequestId = 0;
      _._pendingRequests = t2;
      _._incomingRequests = t3;
      _._startedClosingLocally = false;
      _._closeCompleter = t4;
    },
    DriftCommunication_closure: function DriftCommunication_closure(t0) {
      this.$this = t0;
    },
    DriftCommunication_setRequestHandler_closure: function DriftCommunication_setRequestHandler_closure(t0, t1) {
      this.$this = t0;
      this.handler = t1;
    },
    _PendingRequest: function _PendingRequest(t0, t1) {
      this.completer = t0;
      this.requestTrace = t1;
    },
    ConnectionClosedException: function ConnectionClosedException() {
    },
    DriftRemoteException: function DriftRemoteException(t0) {
      this.remoteCause = t0;
    },
    DriftProtocol: function DriftProtocol() {
    },
    DriftProtocol_decodePayload_readInt: function DriftProtocol_decodePayload_readInt(t0) {
      this._box_0 = t0;
    },
    DriftProtocol_decodePayload_readNullableInt: function DriftProtocol_decodePayload_readNullableInt(t0) {
      this._box_0 = t0;
    },
    Message: function Message() {
    },
    Request: function Request(t0, t1) {
      this.id = t0;
      this.payload = t1;
    },
    SuccessResponse: function SuccessResponse(t0, t1) {
      this.requestId = t0;
      this.response = t1;
    },
    PrimitiveResponsePayload: function PrimitiveResponsePayload(t0) {
      this.message = t0;
    },
    ErrorResponse: function ErrorResponse(t0, t1, t2) {
      this.requestId = t0;
      this.error = t1;
      this.stackTrace = t2;
    },
    CancelledResponse: function CancelledResponse(t0) {
      this.requestId = t0;
    },
    NoArgsRequest: function NoArgsRequest(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    StatementMethod: function StatementMethod(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    ExecuteQuery: function ExecuteQuery(t0, t1, t2, t3) {
      var _ = this;
      _.method = t0;
      _.sql = t1;
      _.args = t2;
      _.executorId = t3;
    },
    RequestCancellation: function RequestCancellation(t0) {
      this.originalRequestId = t0;
    },
    ExecuteBatchedStatement: function ExecuteBatchedStatement(t0, t1) {
      this.stmts = t0;
      this.executorId = t1;
    },
    NestedExecutorControl: function NestedExecutorControl(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    RunNestedExecutorControl: function RunNestedExecutorControl(t0, t1) {
      this.control = t0;
      this.executorId = t1;
    },
    EnsureOpen: function EnsureOpen(t0, t1) {
      this.schemaVersion = t0;
      this.executorId = t1;
    },
    ServerInfo: function ServerInfo(t0) {
      this.dialect = t0;
    },
    RunBeforeOpen: function RunBeforeOpen(t0, t1) {
      this.details = t0;
      this.createdExecutor = t1;
    },
    NotifyTablesUpdated: function NotifyTablesUpdated(t0) {
      this.updates = t0;
    },
    SelectResult: function SelectResult(t0) {
      this.rows = t0;
    },
    ServerImplementation$(connection, allowRemoteShutdown, closeExecutorWhenShutdown) {
      var _null = null,
        t1 = type$.int,
        t2 = A._setArrayType([], type$.JSArray_int);
      t1 = new A.ServerImplementation(connection, false, true, A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.QueryExecutor), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.CancellationToken_dynamic), t2, new A._SyncBroadcastStreamController(_null, _null, type$._SyncBroadcastStreamController_void), A.LinkedHashSet_LinkedHashSet$_empty(type$.DriftCommunication), new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), A.StreamController_StreamController(_null, _null, false, type$.NotifyTablesUpdated));
      t1.ServerImplementation$3(connection, false, true);
      return t1;
    },
    ServerImplementation: function ServerImplementation(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) {
      var _ = this;
      _.connection = t0;
      _.allowRemoteShutdown = t1;
      _.closeExecutorWhenShutdown = t2;
      _._managedExecutors = t3;
      _._knownSchemaVersion = _._currentExecutorId = 0;
      _._cancellableOperations = t4;
      _._executorBacklog = t5;
      _._backlogUpdated = t6;
      _._isShuttingDown = false;
      _._activeChannels = t7;
      _._done = t8;
      _._tableUpdateNotifications = t9;
    },
    ServerImplementation_closure: function ServerImplementation_closure(t0) {
      this.$this = t0;
    },
    ServerImplementation_serve_closure: function ServerImplementation_serve_closure(t0, t1) {
      this.$this = t0;
      this.comm = t1;
    },
    ServerImplementation_serve_closure0: function ServerImplementation_serve_closure0(t0, t1) {
      this.$this = t0;
      this.comm = t1;
    },
    ServerImplementation__handleRequest_closure: function ServerImplementation__handleRequest_closure(t0, t1) {
      this.$this = t0;
      this.payload = t1;
    },
    ServerImplementation__handleRequest_closure0: function ServerImplementation__handleRequest_closure0(t0, t1) {
      this.$this = t0;
      this.request = t1;
    },
    ServerImplementation__waitForTurn_idIsActive: function ServerImplementation__waitForTurn_idIsActive(t0, t1) {
      this.$this = t0;
      this.transactionId = t1;
    },
    ServerImplementation__waitForTurn_closure: function ServerImplementation__waitForTurn_closure(t0) {
      this.idIsActive = t0;
    },
    _ServerDbUser: function _ServerDbUser(t0, t1, t2) {
      this._server = t0;
      this.connection = t1;
      this.schemaVersion = t2;
    },
    WebProtocol: function WebProtocol(t0) {
      this._protocolVersion = t0;
    },
    WebProtocol_deserialize_decodeRequest: function WebProtocol_deserialize_decodeRequest(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    WebProtocol_deserialize_decodeSuccess: function WebProtocol_deserialize_decodeSuccess(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    WebProtocol__serializeRequest_closure: function WebProtocol__serializeRequest_closure() {
    },
    WebProtocol__deserializeRequest_readBatched: function WebProtocol__deserializeRequest_readBatched(t0, t1) {
      this.$this = t0;
      this.dartList = t1;
    },
    WebProtocol__deserializeRequest_readBatched_closure: function WebProtocol__deserializeRequest_readBatched_closure() {
    },
    WebProtocol__deserializeRequest_readBatched_closure0: function WebProtocol__deserializeRequest_readBatched_closure0() {
    },
    WebProtocol__deserializeRequest_closure: function WebProtocol__deserializeRequest_closure() {
    },
    WebProtocol__serializeSelectResult_closure: function WebProtocol__serializeSelectResult_closure() {
    },
    WebProtocol__deserializeResponse_closure: function WebProtocol__deserializeResponse_closure() {
    },
    UpdateKind: function UpdateKind(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    TableUpdate: function TableUpdate(t0, t1) {
      this.kind = t0;
      this.table = t1;
    },
    runCancellable(operation, $T) {
      var token, t2, t1 = {};
      t1.token = token;
      t1.token = null;
      token = new A.CancellationToken(new A._SyncCompleter(new A._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_SyncCompleter<0>")), A._setArrayType([], type$.JSArray_of_void_Function), $T._eval$1("CancellationToken<0>"));
      t1.token = token;
      t2 = type$.nullable_Object;
      A.runZoned(new A.runCancellable_closure(t1, operation, $T), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol_hNH, token], t2, t2), type$.void);
      return t1.token;
    },
    checkIfCancelled() {
      var token = $.Zone__current.$index(0, B.Symbol_hNH);
      if (token instanceof A.CancellationToken && token._cancellationRequested)
        throw A.wrapException(B.C_CancellationException);
    },
    runCancellable_closure: function runCancellable_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.operation = t1;
      this.T = t2;
    },
    CancellationToken: function CancellationToken(t0, t1, t2) {
      var _ = this;
      _._resultCompleter = t0;
      _._cancellationCallbacks = t1;
      _._cancellationRequested = false;
      _.$ti = t2;
    },
    CancellationException: function CancellationException() {
    },
    QueryExecutor: function QueryExecutor() {
    },
    BatchedStatements: function BatchedStatements(t0, t1) {
      this.statements = t0;
      this.$arguments = t1;
    },
    ArgumentsForBatchedStatement: function ArgumentsForBatchedStatement(t0, t1) {
      this.statementIndex = t0;
      this.$arguments = t1;
    },
    _defaultSavepoint(depth) {
      return "SAVEPOINT s" + A._asInt(depth);
    },
    _defaultRelease(depth) {
      return "RELEASE s" + A._asInt(depth);
    },
    _defaultRollbackToSavepoint(depth) {
      return "ROLLBACK TO s" + A._asInt(depth);
    },
    DatabaseDelegate: function DatabaseDelegate() {
    },
    QueryDelegate: function QueryDelegate() {
    },
    TransactionDelegate: function TransactionDelegate() {
    },
    NoTransactionDelegate: function NoTransactionDelegate() {
    },
    DbVersionDelegate: function DbVersionDelegate() {
    },
    NoVersionDelegate: function NoVersionDelegate() {
    },
    DynamicVersionDelegate: function DynamicVersionDelegate() {
    },
    _BaseExecutor: function _BaseExecutor() {
    },
    _BaseExecutor__synchronized_closure: function _BaseExecutor__synchronized_closure(t0, t1, t2) {
      this.abortIfCancelled = t0;
      this.action = t1;
      this.T = t2;
    },
    _BaseExecutor_runSelect_closure: function _BaseExecutor_runSelect_closure(t0, t1, t2) {
      this.$this = t0;
      this.statement = t1;
      this.args = t2;
    },
    _BaseExecutor_runDelete_closure: function _BaseExecutor_runDelete_closure(t0, t1, t2) {
      this.$this = t0;
      this.statement = t1;
      this.args = t2;
    },
    _BaseExecutor_runInsert_closure: function _BaseExecutor_runInsert_closure(t0, t1, t2) {
      this.$this = t0;
      this.statement = t1;
      this.args = t2;
    },
    _BaseExecutor_runCustom_closure: function _BaseExecutor_runCustom_closure(t0, t1, t2) {
      this.$this = t0;
      this.args = t1;
      this.statement = t2;
    },
    _BaseExecutor_runBatched_closure: function _BaseExecutor_runBatched_closure(t0, t1) {
      this.$this = t0;
      this.statements = t1;
    },
    _TransactionExecutor: function _TransactionExecutor() {
    },
    _StatementBasedTransactionExecutor: function _StatementBasedTransactionExecutor(t0, t1, t2, t3, t4, t5, t6, t7, t8) {
      var _ = this;
      _._engines$_delegate = t0;
      _._opened = null;
      _._engines$_done = t1;
      _._parent = t2;
      _.depth = t3;
      _._startCommand = t4;
      _._commitCommand = t5;
      _._rollbackCommand = t6;
      _._db = t7;
      _._lock = t8;
      _._waitingChildExecutors = 0;
      _._engines$_closed = _._ensureOpenCalled = false;
    },
    _StatementBasedTransactionExecutor_ensureOpen_closure: function _StatementBasedTransactionExecutor_ensureOpen_closure(t0) {
      this.$this = t0;
    },
    _StatementBasedTransactionExecutor_ensureOpen_closure0: function _StatementBasedTransactionExecutor_ensureOpen_closure0(t0) {
      this.parent = t0;
    },
    DelegatedDatabase: function DelegatedDatabase() {
    },
    DelegatedDatabase_ensureOpen_closure: function DelegatedDatabase_ensureOpen_closure(t0, t1) {
      this.$this = t0;
      this.user = t1;
    },
    DelegatedDatabase_close_closure: function DelegatedDatabase_close_closure(t0) {
      this.$this = t0;
    },
    _BeforeOpeningExecutor: function _BeforeOpeningExecutor(t0, t1) {
      var _ = this;
      _._base = t0;
      _._lock = t1;
      _._waitingChildExecutors = 0;
      _._engines$_closed = _._ensureOpenCalled = false;
    },
    _ExclusiveExecutor: function _ExclusiveExecutor(t0, t1, t2) {
      var _ = this;
      _._outer = t0;
      _._opened = null;
      _._completer = t1;
      _._lock = t2;
      _._waitingChildExecutors = 0;
      _._engines$_closed = _._ensureOpenCalled = false;
    },
    _ExclusiveExecutor_ensureOpen_closure: function _ExclusiveExecutor_ensureOpen_closure(t0, t1) {
      this.$this = t0;
      this.opened = t1;
    },
    QueryResult$(columnNames, rows) {
      var t2, _i, column,
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.int);
      for (t2 = columnNames.length, _i = 0; _i < columnNames.length; columnNames.length === t2 || (0, A.throwConcurrentModificationError)(columnNames), ++_i) {
        column = columnNames[_i];
        t1.$indexSet(0, column, B.JSArray_methods.lastIndexOf$1(columnNames, column));
      }
      return new A.QueryResult(columnNames, rows, t1);
    },
    QueryResult_QueryResult$fromRows(rows) {
      var keys, t1, t2, _i, row, t3, t4, _i0;
      if (rows.length === 0)
        return A.QueryResult$(B.List_empty0, B.List_empty2);
      keys = J.toList$0$ax(B.JSArray_methods.get$first(rows).get$keys());
      t1 = A._setArrayType([], type$.JSArray_List_dynamic);
      for (t2 = rows.length, _i = 0; _i < rows.length; rows.length === t2 || (0, A.throwConcurrentModificationError)(rows), ++_i) {
        row = rows[_i];
        t3 = [];
        for (t4 = keys.length, _i0 = 0; _i0 < keys.length; keys.length === t4 || (0, A.throwConcurrentModificationError)(keys), ++_i0)
          t3.push(row.$index(0, keys[_i0]));
        t1.push(t3);
      }
      return A.QueryResult$(keys, t1);
    },
    QueryResult: function QueryResult(t0, t1, t2) {
      this.columnNames = t0;
      this.rows = t1;
      this._columnIndexes = t2;
    },
    QueryResult_asMap_closure: function QueryResult_asMap_closure(t0) {
      this.$this = t0;
    },
    ApplyInterceptor_interceptWith(_this, interceptor) {
      return new A._InterceptedExecutor(_this, interceptor);
    },
    QueryInterceptor: function QueryInterceptor() {
    },
    _InterceptedExecutor: function _InterceptedExecutor(t0, t1) {
      this._interceptor$_inner = t0;
      this._interceptor$_interceptor = t1;
    },
    _InterceptedTransactionExecutor: function _InterceptedTransactionExecutor(t0, t1) {
      this._interceptor$_inner = t0;
      this._interceptor$_interceptor = t1;
    },
    OpeningDetails: function OpeningDetails(t0, t1) {
      this.versionBefore = t0;
      this.versionNow = t1;
    },
    SqlDialect: function SqlDialect(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    Sqlite3Delegate: function Sqlite3Delegate() {
    },
    _SqliteVersionDelegate: function _SqliteVersionDelegate(t0) {
      this.database = t0;
    },
    PreparedStatementsCache: function PreparedStatementsCache(t0) {
      this._cachedStatements = t0;
    },
    EnableNativeFunctions_useNativeFunctions(_this) {
      var _s13_ = "moor_contains";
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_2, true, A.native_functions___pow$closure(), "power");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_2, true, A.native_functions___pow$closure(), "pow");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_1, true, A._unaryNumFunction(A.math__sqrt$closure()), "sqrt");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_1, true, A._unaryNumFunction(A.math__sin$closure()), "sin");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_1, true, A._unaryNumFunction(A.math__cos$closure()), "cos");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_1, true, A._unaryNumFunction(A.math__tan$closure()), "tan");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_1, true, A._unaryNumFunction(A.math__asin$closure()), "asin");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_1, true, A._unaryNumFunction(A.math__acos$closure()), "acos");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_1, true, A._unaryNumFunction(A.math__atan$closure()), "atan");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_2, true, A.native_functions___regexpImpl$closure(), "regexp");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_3, true, A.native_functions___regexpImpl$closure(), "regexp_moor_ffi");
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_2, true, A.native_functions___containsImpl$closure(), _s13_);
      _this.createFunction$4$argumentCount$deterministic$function$functionName(B.AllowedArgumentCount_3, true, A.native_functions___containsImpl$closure(), _s13_);
      _this.createFunction$5$argumentCount$deterministic$directOnly$function$functionName(B.AllowedArgumentCount_0, true, false, new A.EnableNativeFunctions_useNativeFunctions_closure(), "current_time_millis");
    },
    _pow(args) {
      var first = args.$index(0, 0),
        second = args.$index(0, 1);
      if (first == null || second == null || typeof first != "number" || typeof second != "number")
        return null;
      return Math.pow(first, second);
    },
    _unaryNumFunction(calculation) {
      return new A._unaryNumFunction_closure(calculation);
    },
    _regexpImpl(args) {
      var firstParam, regex, secondParam, value, t1, t2, t3, exception,
        multiLine = false,
        caseSensitive = true,
        unicode = false,
        dotAll = false,
        argCount = args.rawValues.length;
      if (argCount < 2 || argCount > 3)
        throw A.wrapException("Expected two or three arguments to regexp");
      firstParam = args.$index(0, 0);
      secondParam = args.$index(0, 1);
      if (firstParam == null || secondParam == null)
        return null;
      if (typeof firstParam != "string" || typeof secondParam != "string")
        throw A.wrapException("Expected two strings as parameters to regexp");
      if (argCount === 3) {
        value = args.$index(0, 2);
        if (A._isInt(value)) {
          multiLine = (value & 1) === 1;
          caseSensitive = (value & 2) !== 2;
          unicode = (value & 4) === 4;
          dotAll = (value & 8) === 8;
        }
      }
      regex = null;
      try {
        t1 = multiLine;
        t2 = caseSensitive;
        t3 = unicode;
        regex = A.RegExp_RegExp(firstParam, t2, dotAll, t1, t3);
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.FormatException)
          throw A.wrapException("Invalid regex");
        else
          throw exception;
      }
      t1 = regex._nativeRegExp;
      return t1.test(secondParam);
    },
    _containsImpl(args) {
      var first, second,
        argCount = args.rawValues.length;
      if (argCount < 2 || argCount > 3)
        throw A.wrapException("Expected 2 or 3 arguments to moor_contains");
      first = args.$index(0, 0);
      second = args.$index(0, 1);
      if (first == null || second == null)
        return null;
      if (typeof first != "string" || typeof second != "string")
        throw A.wrapException("First two args to contains must be strings");
      return argCount === 3 && args.$index(0, 2) === 1 ? B.JSString_methods.contains$1(first, second) : B.JSString_methods.contains$1(first.toLowerCase(), second.toLowerCase());
    },
    EnableNativeFunctions_useNativeFunctions_closure: function EnableNativeFunctions_useNativeFunctions_closure() {
    },
    _unaryNumFunction_closure: function _unaryNumFunction_closure(t0) {
      this.calculation = t0;
    },
    LazyDatabase: function LazyDatabase(t0) {
      var _ = this;
      _.__LazyDatabase__delegate_F = $;
      _._delegateAvailable = false;
      _._openDelegate = null;
      _.opener = t0;
    },
    LazyDatabase__awaitOpened_closure: function LazyDatabase__awaitOpened_closure(t0, t1) {
      this.$this = t0;
      this.delegate = t1;
    },
    LazyDatabase_ensureOpen_closure: function LazyDatabase_ensureOpen_closure(t0, t1) {
      this.$this = t0;
      this.user = t1;
    },
    Lock: function Lock() {
      this._last = null;
    },
    Lock_synchronized_callBlockAndComplete: function Lock_synchronized_callBlockAndComplete(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.block = t1;
      _.blockCompleted = t2;
      _.blockReleasedLock = t3;
      _.T = t4;
    },
    Lock_synchronized_callBlockAndComplete_closure: function Lock_synchronized_callBlockAndComplete_closure(t0, t1, t2) {
      this.$this = t0;
      this.blockCompleted = t1;
      this.blockReleasedLock = t2;
    },
    Lock_synchronized_closure: function Lock_synchronized_closure(t0, t1) {
      this.callBlockAndComplete = t0;
      this.T = t1;
    },
    WebPortToChannel_channel(_this, explicitClose, nativeSerializionVersion, webNativeSerialization) {
      var protocol, _null = null,
        controller = new A.StreamChannelController(type$.StreamChannelController_nullable_Object),
        t1 = type$.nullable_Object,
        localToForeignController = A.StreamController_StreamController(_null, _null, false, t1),
        foreignToLocalController = A.StreamController_StreamController(_null, _null, false, t1),
        t2 = A._instanceType(foreignToLocalController),
        t3 = A._instanceType(localToForeignController),
        t4 = A.GuaranteeChannel$(new A._ControllerStream(foreignToLocalController, t2._eval$1("_ControllerStream<1>")), new A._StreamSinkWrapper(localToForeignController, t3._eval$1("_StreamSinkWrapper<1>")), true, t1);
      controller.__StreamChannelController__local_F = t4;
      t1 = A.GuaranteeChannel$(new A._ControllerStream(localToForeignController, t3._eval$1("_ControllerStream<1>")), new A._StreamSinkWrapper(foreignToLocalController, t2._eval$1("_StreamSinkWrapper<1>")), true, t1);
      controller.__StreamChannelController__foreign_F = t1;
      protocol = new A.WebProtocol(A.ProtocolVersion_negotiate(nativeSerializionVersion));
      _this.onmessage = A._functionToJS1(new A.WebPortToChannel_channel_closure(explicitClose, controller, webNativeSerialization, protocol));
      t4 = t4.__GuaranteeChannel__streamController_F;
      t4 === $ && A.throwLateFieldNI("_streamController");
      new A._ControllerStream(t4, A._instanceType(t4)._eval$1("_ControllerStream<1>")).listen$2$onDone(new A.WebPortToChannel_channel_closure0(webNativeSerialization, protocol, _this), new A.WebPortToChannel_channel_closure1(explicitClose, _this));
      return t1;
    },
    WebPortToChannel_channel_closure: function WebPortToChannel_channel_closure(t0, t1, t2, t3) {
      var _ = this;
      _.explicitClose = t0;
      _.controller = t1;
      _.webNativeSerialization = t2;
      _.protocol = t3;
    },
    WebPortToChannel_channel_closure0: function WebPortToChannel_channel_closure0(t0, t1, t2) {
      this.webNativeSerialization = t0;
      this.protocol = t1;
      this._this = t2;
    },
    WebPortToChannel_channel_closure1: function WebPortToChannel_channel_closure1(t0, t1) {
      this.explicitClose = t0;
      this._this = t1;
    },
    DedicatedDriftWorker: function DedicatedDriftWorker(t0, t1, t2) {
      var _ = this;
      _.self = t0;
      _._checkCompatibility = t1;
      _._dedicated_worker$_servers = t2;
      _._compatibility = null;
    },
    DedicatedDriftWorker_start_closure: function DedicatedDriftWorker_start_closure(t0) {
      this.$this = t0;
    },
    DedicatedDriftWorker__handleMessage_closure: function DedicatedDriftWorker__handleMessage_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    ProtocolVersion_negotiate(versionCode) {
      var t1;
      $label0$0: {
        if (versionCode <= 0) {
          t1 = B.ProtocolVersion_0_0_legacy;
          break $label0$0;
        }
        if (1 === versionCode) {
          t1 = B.ProtocolVersion_1_1_v1;
          break $label0$0;
        }
        if (2 === versionCode) {
          t1 = B.ProtocolVersion_2_2_v2;
          break $label0$0;
        }
        if (3 === versionCode) {
          t1 = B.ProtocolVersion_3_3_v3;
          break $label0$0;
        }
        if (versionCode > 3) {
          t1 = B.ProtocolVersion_4_4_v4;
          break $label0$0;
        }
        t1 = A.throwExpression(A.AssertionError$(null));
      }
      return t1;
    },
    ProtocolVersion_fromJsObject(object) {
      if ("v" in object)
        return A.ProtocolVersion_negotiate(A._asInt(A._asDouble(object.v)));
      else
        return B.ProtocolVersion_0_0_legacy;
    },
    WasmInitializationMessage_WasmInitializationMessage$fromJs(jsObject) {
      var t1, version, t2, t3, t4, t5, t6, t7, existingDatabases,
        type = A._asString(jsObject.type),
        payload = jsObject.payload;
      $label0$0: {
        if ("Error" === type) {
          t1 = new A.WorkerError(A._asString(A._asJSObject(payload)));
          break $label0$0;
        }
        if ("ServeDriftDatabase" === type) {
          A._asJSObject(payload);
          version = A.ProtocolVersion_fromJsObject(payload);
          t1 = A.Uri_parse(A._asString(payload.sqlite));
          t2 = A._asJSObject(payload.port);
          t3 = A.EnumByName_byName(B.List_5sp, A._asString(payload.storage), type$.WasmStorageImplementation);
          t4 = A._asString(payload.database);
          t5 = A._asJSObjectQ(payload.initPort);
          t6 = version.versionCode;
          t7 = t6 < 2 || A._asBool(payload.migrations);
          t1 = new A.ServeDriftDatabase(t1, t2, t3, t4, t5, version, t7, t6 < 3 || A._asBool(payload.new_serialization));
          break $label0$0;
        }
        if ("StartFileSystemServer" === type) {
          t1 = new A.StartFileSystemServer(A._asJSObject(payload));
          break $label0$0;
        }
        if ("RequestCompatibilityCheck" === type) {
          t1 = new A.RequestCompatibilityCheck(A._asString(payload));
          break $label0$0;
        }
        if ("DedicatedWorkerCompatibilityResult" === type) {
          A._asJSObject(payload);
          existingDatabases = A._setArrayType([], type$.JSArray_Record_2_WebStorageApi_and_String);
          if ("existing" in payload)
            B.JSArray_methods.addAll$1(existingDatabases, A.EncodeLocations_readFromJs(type$.JSArray_nullable_Object._as(payload.existing)));
          t1 = A._asBool(payload.supportsNestedWorkers);
          t2 = A._asBool(payload.canAccessOpfs);
          t3 = A._asBool(payload.supportsSharedArrayBuffers);
          t4 = A._asBool(payload.supportsIndexedDb);
          t5 = A._asBool(payload.indexedDbExists);
          t6 = A._asBool(payload.opfsExists);
          t6 = new A.DedicatedWorkerCompatibilityResult(t1, t2, t3, t4, existingDatabases, A.ProtocolVersion_fromJsObject(payload), t5, t6);
          t1 = t6;
          break $label0$0;
        }
        if ("SharedWorkerCompatibilityResult" === type) {
          t1 = A.SharedWorkerCompatibilityResult_SharedWorkerCompatibilityResult$fromJsPayload(type$.JSArray_nullable_Object._as(payload));
          break $label0$0;
        }
        if ("DeleteDatabase" === type) {
          t1 = payload == null ? A._asObject(payload) : payload;
          type$.JSArray_nullable_Object._as(t1);
          t2 = $.$get$WebStorageApi_byName();
          if (0 < 0 || 0 >= t1.length)
            return A.ioore(t1, 0);
          t2 = t2.$index(0, A._asString(t1[0]));
          t2.toString;
          if (1 < 0 || 1 >= t1.length)
            return A.ioore(t1, 1);
          t1 = new A.DeleteDatabase(new A._Record_2(t2, A._asString(t1[1])));
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$("Unknown type " + type, null));
      }
      return t1;
    },
    SharedWorkerCompatibilityResult_SharedWorkerCompatibilityResult$fromJsPayload(payload) {
      var existingDatabases, version,
        t1 = new A.SharedWorkerCompatibilityResult_SharedWorkerCompatibilityResult$fromJsPayload_asBoolean(payload);
      if (payload.length > 5) {
        if (5 < 0 || 5 >= payload.length)
          return A.ioore(payload, 5);
        existingDatabases = A.EncodeLocations_readFromJs(type$.JSArray_nullable_Object._as(payload[5]));
        if (payload.length > 6) {
          if (6 < 0 || 6 >= payload.length)
            return A.ioore(payload, 6);
          version = A.ProtocolVersion_negotiate(A._asInt(A._asDouble(payload[6])));
        } else
          version = B.ProtocolVersion_0_0_legacy;
      } else {
        existingDatabases = B.List_empty4;
        version = B.ProtocolVersion_0_0_legacy;
      }
      return new A.SharedWorkerCompatibilityResult(t1.call$1(0), t1.call$1(1), t1.call$1(2), existingDatabases, version, t1.call$1(3), t1.call$1(4));
    },
    EncodeLocations_readFromJs(object) {
      var t3, t4,
        existing = A._setArrayType([], type$.JSArray_Record_2_WebStorageApi_and_String),
        t1 = B.JSArray_methods.cast$1$0(object, type$.JSObject),
        t2 = t1.$ti;
      t1 = new A.ListIterator(t1, t1.get$length(0), t2._eval$1("ListIterator<ListBase.E>"));
      t2 = t2._eval$1("ListBase.E");
      while (t1.moveNext$0()) {
        t3 = t1.__internal$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        t4 = $.$get$WebStorageApi_byName().$index(0, A._asString(t3.l));
        t4.toString;
        B.JSArray_methods.add$1(existing, new A._Record_2(t4, A._asString(t3.n)));
      }
      return existing;
    },
    EncodeLocations_encodeToJs(_this) {
      var t1, _i, entry, _this0,
        existing = A._setArrayType([], type$.JSArray_JSObject);
      for (t1 = _this.length, _i = 0; _i < _this.length; _this.length === t1 || (0, A.throwConcurrentModificationError)(_this), ++_i) {
        entry = _this[_i];
        _this0 = {};
        _this0.l = entry._0._name;
        _this0.n = entry._1;
        B.JSArray_methods.add$1(existing, _this0);
      }
      return existing;
    },
    _extension_1_sendTyped(_this, type, payload, transfer) {
      var _this0 = {};
      _this0.type = type;
      _this0.payload = payload;
      _this.call$2(_this0, transfer);
    },
    ProtocolVersion: function ProtocolVersion(t0, t1, t2) {
      this.versionCode = t0;
      this.index = t1;
      this._name = t2;
    },
    WasmInitializationMessage: function WasmInitializationMessage() {
    },
    WasmInitializationMessage_sendToWorker_closure: function WasmInitializationMessage_sendToWorker_closure(t0) {
      this.worker = t0;
    },
    WasmInitializationMessage_sendToPort_closure: function WasmInitializationMessage_sendToPort_closure(t0) {
      this.port = t0;
    },
    WasmInitializationMessage_sendToClient_closure: function WasmInitializationMessage_sendToClient_closure(t0) {
      this.worker = t0;
    },
    CompatibilityResult: function CompatibilityResult() {
    },
    SharedWorkerCompatibilityResult: function SharedWorkerCompatibilityResult(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.canSpawnDedicatedWorkers = t0;
      _.dedicatedWorkersCanUseOpfs = t1;
      _.canUseIndexedDb = t2;
      _.existingDatabases = t3;
      _.version = t4;
      _.indexedDbExists = t5;
      _.opfsExists = t6;
    },
    SharedWorkerCompatibilityResult_SharedWorkerCompatibilityResult$fromJsPayload_asBoolean: function SharedWorkerCompatibilityResult_SharedWorkerCompatibilityResult$fromJsPayload_asBoolean(t0) {
      this.asList = t0;
    },
    WorkerError: function WorkerError(t0) {
      this.error = t0;
    },
    ServeDriftDatabase: function ServeDriftDatabase(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _.sqlite3WasmUri = t0;
      _.port = t1;
      _.storage = t2;
      _.databaseName = t3;
      _.initializationPort = t4;
      _.protocolVersion = t5;
      _.enableMigrations = t6;
      _.newSerialization = t7;
    },
    RequestCompatibilityCheck: function RequestCompatibilityCheck(t0) {
      this.databaseName = t0;
    },
    DedicatedWorkerCompatibilityResult: function DedicatedWorkerCompatibilityResult(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _.supportsNestedWorkers = t0;
      _.canAccessOpfs = t1;
      _.supportsSharedArrayBuffers = t2;
      _.supportsIndexedDb = t3;
      _.existingDatabases = t4;
      _.version = t5;
      _.indexedDbExists = t6;
      _.opfsExists = t7;
    },
    StartFileSystemServer: function StartFileSystemServer(t0) {
      this.sqlite3Options = t0;
    },
    DeleteDatabase: function DeleteDatabase(t0) {
      this.database = t0;
    },
    storageManager0() {
      var $navigator = A._asJSObject(init.G.navigator);
      if ("storage" in $navigator)
        return A._asJSObject($navigator.storage);
      return null;
    },
    checkOpfsSupport() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$next = [], opfsRoot, fileHandle, openedFile, getSizeResult, t1, exception, storage, $async$exception;
      var $async$checkOpfsSupport = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              storage = A.storageManager0();
              if (storage == null) {
                $async$returnValue = false;
                // goto return
                $async$goto = 1;
                break;
              }
              opfsRoot = null;
              fileHandle = null;
              openedFile = null;
              $async$handler = 4;
              t1 = type$.JSObject;
              $async$goto = 7;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(storage.getDirectory()), t1), $async$checkOpfsSupport);
            case 7:
              // returning from await.
              opfsRoot = $async$result;
              $async$goto = 8;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(opfsRoot.getFileHandle("_drift_feature_detection", {create: true})), t1), $async$checkOpfsSupport);
            case 8:
              // returning from await.
              fileHandle = $async$result;
              $async$goto = 9;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(fileHandle.createSyncAccessHandle()), t1), $async$checkOpfsSupport);
            case 9:
              // returning from await.
              openedFile = $async$result;
              getSizeResult = A.JSObjectUnsafeUtilExtension__callMethod(openedFile, "getSize", null, null, null, null);
              $async$goto = typeof getSizeResult === "object" ? 10 : 11;
              break;
            case 10:
              // then
              $async$goto = 12;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(getSizeResult), type$.nullable_Object), $async$checkOpfsSupport);
            case 12:
              // returning from await.
              $async$returnValue = false;
              $async$next = [1];
              // goto finally
              $async$goto = 5;
              break;
            case 11:
              // join
              $async$returnValue = true;
              $async$next = [1];
              // goto finally
              $async$goto = 5;
              break;
              $async$next.push(6);
              // goto finally
              $async$goto = 5;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$errorStack.pop();
              $async$returnValue = false;
              $async$next = [1];
              // goto finally
              $async$goto = 5;
              break;
              $async$next.push(6);
              // goto finally
              $async$goto = 5;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 5:
              // finally
              $async$handler = 2;
              if (openedFile != null)
                openedFile.close();
              $async$goto = opfsRoot != null && fileHandle != null ? 13 : 14;
              break;
            case 13:
              // then
              $async$goto = 15;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(opfsRoot.removeEntry("_drift_feature_detection")), type$.nullable_Object), $async$checkOpfsSupport);
            case 15:
              // returning from await.
            case 14:
              // join
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$checkOpfsSupport, $async$completer);
    },
    checkIndexedDbSupport() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], idb, mockDb, exception, t1, $async$exception;
      var $async$checkIndexedDbSupport = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = init.G;
              if (!("indexedDB" in t1) || !("FileReader" in t1)) {
                $async$returnValue = false;
                // goto return
                $async$goto = 1;
                break;
              }
              idb = A._asJSObject(t1.indexedDB);
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(A.CompleteIdbRequest_complete0(A._asJSObject(idb.open("drift_mock_db")), type$.JSObject), $async$checkIndexedDbSupport);
            case 7:
              // returning from await.
              mockDb = $async$result;
              mockDb.close();
              A._asJSObject(idb.deleteDatabase("drift_mock_db"));
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$errorStack.pop();
              $async$returnValue = false;
              // goto return
              $async$goto = 1;
              break;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
              $async$returnValue = true;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$checkIndexedDbSupport, $async$completer);
    },
    checkIndexedDbExists(databaseName) {
      return A.checkIndexedDbExists$body(databaseName);
    },
    checkIndexedDbExists$body(databaseName) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], idb, databases, entry, openRequest, database, t1, exception, _box_0, $async$exception;
      var $async$checkIndexedDbExists = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          $async$outer:
            switch ($async$goto) {
              case 0:
                // Function start
                _box_0 = {};
                _box_0.indexedDbExists = null;
                $async$handler = 4;
                idb = A._asJSObject(init.G.indexedDB);
                $async$goto = "databases" in idb ? 7 : 8;
                break;
              case 7:
                // then
                $async$goto = 9;
                return A._asyncAwait(A.promiseToFuture(A._asJSObject(idb.databases()), type$.JSArray_nullable_Object), $async$checkIndexedDbExists);
              case 9:
                // returning from await.
                databases = $async$result;
                t1 = databases;
                t1 = J.get$iterator$ax(type$.List_JSObject._is(t1) ? t1 : new A.CastList(t1, A._arrayInstanceType(t1)._eval$1("CastList<1,JSObject>")));
                while (t1.moveNext$0()) {
                  entry = t1.get$current();
                  if (A._asString(entry.name) === databaseName) {
                    $async$returnValue = true;
                    // goto return
                    $async$goto = 1;
                    break $async$outer;
                  }
                }
                $async$returnValue = false;
                // goto return
                $async$goto = 1;
                break;
              case 8:
                // join
                openRequest = A._asJSObject(idb.open(databaseName, 1));
                openRequest.onupgradeneeded = A._functionToJS1(new A.checkIndexedDbExists_closure(_box_0, openRequest));
                $async$goto = 10;
                return A._asyncAwait(A.CompleteIdbRequest_complete0(openRequest, type$.JSObject), $async$checkIndexedDbExists);
              case 10:
                // returning from await.
                database = $async$result;
                if (_box_0.indexedDbExists == null)
                  _box_0.indexedDbExists = true;
                database.close();
                $async$goto = _box_0.indexedDbExists === false ? 11 : 12;
                break;
              case 11:
                // then
                $async$goto = 13;
                return A._asyncAwait(A.CompleteIdbRequest_complete0(A._asJSObject(idb.deleteDatabase(databaseName)), type$.nullable_Object), $async$checkIndexedDbExists);
              case 13:
                // returning from await.
              case 12:
                // join
                $async$handler = 2;
                // goto after finally
                $async$goto = 6;
                break;
              case 4:
                // catch
                $async$handler = 3;
                $async$exception = $async$errorStack.pop();
                // goto after finally
                $async$goto = 6;
                break;
              case 3:
                // uncaught
                // goto rethrow
                $async$goto = 2;
                break;
              case 6:
                // after finally
                t1 = _box_0.indexedDbExists;
                $async$returnValue = t1 === true;
                // goto return
                $async$goto = 1;
                break;
              case 1:
                // return
                return A._asyncReturn($async$returnValue, $async$completer);
              case 2:
                // rethrow
                return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
            }
      });
      return A._asyncStartSync($async$checkIndexedDbExists, $async$completer);
    },
    deleteDatabaseInIndexedDb(databaseName) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        t1;
      var $async$deleteDatabaseInIndexedDb = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = init.G;
              $async$goto = "indexedDB" in t1 ? 2 : 3;
              break;
            case 2:
              // then
              $async$goto = 4;
              return A._asyncAwait(A.CompleteIdbRequest_complete0(A._asJSObject(A._asJSObject(t1.indexedDB).deleteDatabase(databaseName)), type$.nullable_Object), $async$deleteDatabaseInIndexedDb);
            case 4:
              // returning from await.
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$deleteDatabaseInIndexedDb, $async$completer);
    },
    opfsDriftDirectoryHandle() {
      var options = null;
      return A.opfsDriftDirectoryHandle$body();
    },
    opfsDriftDirectoryHandle$body() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_JSObject),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], directory, t1, t2, exception, options, storage, $async$exception;
      var $async$opfsDriftDirectoryHandle = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              options = null;
              storage = A.storageManager0();
              if (storage == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = type$.JSObject;
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(storage.getDirectory()), t1), $async$opfsDriftDirectoryHandle);
            case 3:
              // returning from await.
              directory = $async$result;
              $async$handler = 5;
              t2 = options;
              if (t2 == null)
                t2 = {};
              $async$goto = 8;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(directory.getDirectoryHandle("drift_db", t2)), t1), $async$opfsDriftDirectoryHandle);
            case 8:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 7;
              break;
            case 5:
              // catch
              $async$handler = 4;
              $async$exception = $async$errorStack.pop();
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
              // goto after finally
              $async$goto = 7;
              break;
            case 4:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 7:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$opfsDriftDirectoryHandle, $async$completer);
    },
    opfsDatabases() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.List_String),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$next = [], entries, found, entry, t1, t2, exception, directory, $async$exception;
      var $async$opfsDatabases = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(A.opfsDriftDirectoryHandle(), $async$opfsDatabases);
            case 3:
              // returning from await.
              directory = $async$result;
              if (directory == null) {
                $async$returnValue = B.List_empty0;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = type$.AsyncJavaScriptIteratable_JSArray_nullable_Object;
              if (!(type$.JavaScriptSymbol._as(init.G.Symbol.asyncIterator) in directory))
                A.throwExpression(A.ArgumentError$("Target object does not implement the async iterable interface", null));
              entries = new A._MapStream(t1._eval$1("JSObject(Stream.T)")._as(new A.opfsDatabases_closure()), new A.AsyncJavaScriptIteratable(directory, t1), t1._eval$1("_MapStream<Stream.T,JSObject>"));
              found = A._setArrayType([], type$.JSArray_String);
              t1 = new A._StreamIterator(A.checkNotNullable(entries, "stream", type$.Object), type$._StreamIterator_JSObject);
              $async$handler = 4;
              t2 = type$.JSObject;
            case 7:
              // for condition
              $async$goto = 9;
              return A._asyncAwait(t1.moveNext$0(), $async$opfsDatabases);
            case 9:
              // returning from await.
              if (!$async$result) {
                // goto after for
                $async$goto = 8;
                break;
              }
              entry = t1.get$current();
              $async$goto = A._asString(entry.kind) === "directory" ? 10 : 11;
              break;
            case 10:
              // then
              $async$handler = 13;
              $async$goto = 16;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(entry.getFileHandle("database")), t2), $async$opfsDatabases);
            case 16:
              // returning from await.
              J.add$1$ax(found, A._asString(entry.name));
              $async$handler = 4;
              // goto after finally
              $async$goto = 15;
              break;
            case 13:
              // catch
              $async$handler = 12;
              $async$exception = $async$errorStack.pop();
              // goto after finally
              $async$goto = 15;
              break;
            case 12:
              // uncaught
              // goto uncaught
              $async$goto = 4;
              break;
            case 15:
              // after finally
            case 11:
              // join
              // goto for condition
              $async$goto = 7;
              break;
            case 8:
              // after for
              $async$next.push(6);
              // goto finally
              $async$goto = 5;
              break;
            case 4:
              // uncaught
              $async$next = [2];
            case 5:
              // finally
              $async$handler = 2;
              $async$goto = 17;
              return A._asyncAwait(t1.cancel$0(), $async$opfsDatabases);
            case 17:
              // returning from await.
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 6:
              // after finally
              $async$returnValue = found;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$opfsDatabases, $async$completer);
    },
    deleteDatabaseInOpfs(databaseName) {
      return A.deleteDatabaseInOpfs$body(databaseName);
    },
    deleteDatabaseInOpfs$body(databaseName) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], directory, t1, exception, storage, $async$exception;
      var $async$deleteDatabaseInOpfs = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              storage = A.storageManager0();
              if (storage == null) {
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = type$.JSObject;
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(storage.getDirectory()), t1), $async$deleteDatabaseInOpfs);
            case 3:
              // returning from await.
              directory = $async$result;
              $async$handler = 5;
              $async$goto = 8;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(directory.getDirectoryHandle("drift_db")), t1), $async$deleteDatabaseInOpfs);
            case 8:
              // returning from await.
              directory = $async$result;
              $async$goto = 9;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(directory.removeEntry(databaseName, {recursive: true})), type$.nullable_Object), $async$deleteDatabaseInOpfs);
            case 9:
              // returning from await.
              $async$handler = 2;
              // goto after finally
              $async$goto = 7;
              break;
            case 5:
              // catch
              $async$handler = 4;
              $async$exception = $async$errorStack.pop();
              // goto after finally
              $async$goto = 7;
              break;
            case 4:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 7:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$deleteDatabaseInOpfs, $async$completer);
    },
    CompleteIdbRequest_complete0(_this, $T) {
      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
        completer = new A._SyncCompleter(t1, $T._eval$1("_SyncCompleter<0>")),
        t2 = type$.nullable_void_Function_JSObject,
        t3 = type$.JSObject;
      A._EventStreamSubscription$(_this, "success", t2._as(new A.CompleteIdbRequest_complete_closure1(completer, _this, $T)), false, t3);
      A._EventStreamSubscription$(_this, "error", t2._as(new A.CompleteIdbRequest_complete_closure2(completer, _this)), false, t3);
      A._EventStreamSubscription$(_this, "blocked", t2._as(new A.CompleteIdbRequest_complete_closure3(completer, _this)), false, t3);
      return t1;
    },
    checkIndexedDbExists_closure: function checkIndexedDbExists_closure(t0, t1) {
      this._box_0 = t0;
      this.openRequest = t1;
    },
    opfsDatabases_closure: function opfsDatabases_closure() {
    },
    DriftServerController: function DriftServerController(t0, t1) {
      this.servers = t0;
      this._setup = t1;
    },
    DriftServerController_serve_closure: function DriftServerController_serve_closure(t0, t1) {
      this.$this = t0;
      this.message = t1;
    },
    DriftServerController_serve__closure: function DriftServerController_serve__closure(t0) {
      this.initPort = t0;
    },
    DriftServerController_serve___closure: function DriftServerController_serve___closure(t0) {
      this.completer = t0;
    },
    DriftServerController_serve__closure0: function DriftServerController_serve__closure0(t0, t1, t2) {
      this.$this = t0;
      this.message = t1;
      this.initializer = t2;
    },
    DriftServerController_serve__closure1: function DriftServerController_serve__closure1(t0, t1, t2) {
      this.$this = t0;
      this.message = t1;
      this.wasmServer = t2;
    },
    _CloseVfsOnClose: function _CloseVfsOnClose(t0, t1) {
      this._shared$_close = t0;
      this._root = t1;
    },
    RunningWasmServer: function RunningWasmServer(t0, t1, t2) {
      var _ = this;
      _.storage = t0;
      _.server = t1;
      _._connectedClients = 0;
      _._lastClientDisconnected = t2;
    },
    RunningWasmServer_serve_closure: function RunningWasmServer_serve_closure(t0) {
      this.$this = t0;
    },
    WasmCompatibility: function WasmCompatibility(t0, t1) {
      this.supportsIndexedDb = t0;
      this.supportsOpfs = t1;
    },
    CompleteIdbRequest_complete_closure1: function CompleteIdbRequest_complete_closure1(t0, t1, t2) {
      this.completer = t0;
      this._this = t1;
      this.T = t2;
    },
    CompleteIdbRequest_complete_closure2: function CompleteIdbRequest_complete_closure2(t0, t1) {
      this.completer = t0;
      this._this = t1;
    },
    CompleteIdbRequest_complete_closure3: function CompleteIdbRequest_complete_closure3(t0, t1) {
      this.completer = t0;
      this._this = t1;
    },
    SharedDriftWorker: function SharedDriftWorker(t0, t1) {
      this.self = t0;
      this._dedicatedWorker = null;
      this._servers = t1;
    },
    SharedDriftWorker_start_closure: function SharedDriftWorker_start_closure(t0) {
      this.$this = t0;
    },
    SharedDriftWorker__newConnection_closure: function SharedDriftWorker__newConnection_closure(t0, t1) {
      this.$this = t0;
      this.clientPort = t1;
    },
    SharedDriftWorker__startFeatureDetection_result: function SharedDriftWorker__startFeatureDetection_result(t0, t1, t2) {
      this._box_0 = t0;
      this.completer = t1;
      this.canUseIndexedDb = t2;
    },
    SharedDriftWorker__startFeatureDetection_closure: function SharedDriftWorker__startFeatureDetection_closure(t0) {
      this.result = t0;
    },
    SharedDriftWorker__startFeatureDetection_closure0: function SharedDriftWorker__startFeatureDetection_closure0(t0, t1, t2) {
      this.$this = t0;
      this.result = t1;
      this.worker = t2;
    },
    WasmStorageImplementation: function WasmStorageImplementation(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    WebStorageApi: function WebStorageApi(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    WasmDatabase: function WasmDatabase(t0, t1, t2, t3, t4) {
      var _ = this;
      _.delegate = t0;
      _._migrationError = null;
      _.logStatements = t1;
      _.isSequential = t2;
      _._openingLock = t3;
      _._lock = t4;
      _._waitingChildExecutors = 0;
      _._engines$_closed = _._ensureOpenCalled = false;
    },
    _WasmDelegate: function _WasmDelegate(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._sqlite3 = t0;
      _._path = t1;
      _._fileSystem = t2;
      _._database = null;
      _._isOpen = _._hasInitializedDatabase = false;
      _._database$_setup = t3;
      _.cachePreparedStatements = t4;
      _.enableMigrations = t5;
      _._preparedStmtsCache = t6;
      _.__Sqlite3Delegate_versionDelegate_A = $;
      _.isInTransaction = false;
    },
    Context_Context(current, style) {
      if (current == null)
        current = ".";
      return new A.Context(style, current);
    },
    _parseUri(uri) {
      return uri;
    },
    _validateArgList(method, args) {
      var numArgs, i, numArgs0, message, t1, t2, t3, t4;
      for (numArgs = args.length, i = 1; i < numArgs; ++i) {
        if (args[i] == null || args[i - 1] != null)
          continue;
        for (; numArgs >= 1; numArgs = numArgs0) {
          numArgs0 = numArgs - 1;
          if (args[numArgs0] != null)
            break;
        }
        message = new A.StringBuffer("");
        t1 = method + "(";
        message._contents = t1;
        t2 = A._arrayInstanceType(args);
        t3 = t2._eval$1("SubListIterable<1>");
        t4 = new A.SubListIterable(args, 0, numArgs, t3);
        t4.SubListIterable$3(args, 0, numArgs, t2._precomputed1);
        t3 = t1 + new A.MappedListIterable(t4, t3._eval$1("String(ListIterable.E)")._as(new A._validateArgList_closure()), t3._eval$1("MappedListIterable<ListIterable.E,String>")).join$1(0, ", ");
        message._contents = t3;
        message._contents = t3 + ("): part " + (i - 1) + " was null, but part " + i + " was not.");
        throw A.wrapException(A.ArgumentError$(message.toString$0(0), null));
      }
    },
    Context: function Context(t0, t1) {
      this.style = t0;
      this._context$_current = t1;
    },
    Context_joinAll_closure: function Context_joinAll_closure() {
    },
    Context_split_closure: function Context_split_closure() {
    },
    _validateArgList_closure: function _validateArgList_closure() {
    },
    _PathDirection: function _PathDirection(t0) {
      this.name = t0;
    },
    _PathRelation: function _PathRelation(t0) {
      this.name = t0;
    },
    InternalStyle: function InternalStyle() {
    },
    ParsedPath_ParsedPath$parse(path, style) {
      var t1, parts, separators, t2, start, i,
        root = style.getRoot$1(path);
      style.isRootRelative$1(path);
      if (root != null)
        path = B.JSString_methods.substring$1(path, root.length);
      t1 = type$.JSArray_String;
      parts = A._setArrayType([], t1);
      separators = A._setArrayType([], t1);
      t1 = path.length;
      if (t1 !== 0) {
        if (0 >= t1)
          return A.ioore(path, 0);
        t2 = style.isSeparator$1(path.charCodeAt(0));
      } else
        t2 = false;
      if (t2) {
        if (0 >= t1)
          return A.ioore(path, 0);
        B.JSArray_methods.add$1(separators, path[0]);
        start = 1;
      } else {
        B.JSArray_methods.add$1(separators, "");
        start = 0;
      }
      for (i = start; i < t1; ++i)
        if (style.isSeparator$1(path.charCodeAt(i))) {
          B.JSArray_methods.add$1(parts, B.JSString_methods.substring$2(path, start, i));
          B.JSArray_methods.add$1(separators, path[i]);
          start = i + 1;
        }
      if (start < t1) {
        B.JSArray_methods.add$1(parts, B.JSString_methods.substring$1(path, start));
        B.JSArray_methods.add$1(separators, "");
      }
      return new A.ParsedPath(style, root, parts, separators);
    },
    ParsedPath: function ParsedPath(t0, t1, t2, t3) {
      var _ = this;
      _.style = t0;
      _.root = t1;
      _.parts = t2;
      _.separators = t3;
    },
    PathException$(message) {
      return new A.PathException(message);
    },
    PathException: function PathException(t0) {
      this.message = t0;
    },
    Style__getPlatformStyle() {
      if (A.Uri_base().get$scheme() !== "file")
        return $.$get$Style_url();
      if (!B.JSString_methods.endsWith$1(A.Uri_base().get$path(), "/"))
        return $.$get$Style_url();
      if (A._Uri__Uri(null, "a/b", null, null).toFilePath$0() === "a\\b")
        return $.$get$Style_windows();
      return $.$get$Style_posix();
    },
    Style: function Style() {
    },
    PosixStyle: function PosixStyle(t0, t1, t2) {
      this.separatorPattern = t0;
      this.needsSeparatorPattern = t1;
      this.rootPattern = t2;
    },
    UrlStyle: function UrlStyle(t0, t1, t2, t3) {
      var _ = this;
      _.separatorPattern = t0;
      _.needsSeparatorPattern = t1;
      _.rootPattern = t2;
      _.relativeRootPattern = t3;
    },
    WindowsStyle: function WindowsStyle(t0, t1, t2, t3) {
      var _ = this;
      _.separatorPattern = t0;
      _.needsSeparatorPattern = t1;
      _.rootPattern = t2;
      _.relativeRootPattern = t3;
    },
    WindowsStyle_absolutePathToUri_closure: function WindowsStyle_absolutePathToUri_closure() {
    },
    SqliteException$(extendedResultCode, message, explanation, causingStatement, parametersToStatement, operation, offset) {
      return new A.SqliteException(message, explanation, extendedResultCode, offset, operation, causingStatement, parametersToStatement);
    },
    SqliteException: function SqliteException(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.message = t0;
      _.explanation = t1;
      _.extendedResultCode = t2;
      _.offset = t3;
      _.operation = t4;
      _.causingStatement = t5;
      _.parametersToStatement = t6;
    },
    SqliteException_toString_closure: function SqliteException_toString_closure() {
    },
    AllowedArgumentCount: function AllowedArgumentCount(t0) {
      this.allowedArgs = t0;
    },
    RawSqliteBindings: function RawSqliteBindings() {
    },
    SqliteResult: function SqliteResult(t0, t1, t2) {
      this.resultCode = t0;
      this.result = t1;
      this.$ti = t2;
    },
    RawSqliteDatabase: function RawSqliteDatabase() {
    },
    RawStatementCompiler: function RawStatementCompiler() {
    },
    RawSqliteStatement: function RawSqliteStatement() {
    },
    RawSqliteContext: function RawSqliteContext() {
    },
    RawSqliteValue: function RawSqliteValue() {
    },
    _extension_0_runWithArgsAndSetResult(_this, $function, args) {
      var e, exception, encoded, t1, ptr,
        dartArgs = new A.ValueList(args, A.List_List$filled(args.length, null, false, type$.nullable_Object));
      try {
        A._extension_0_setResult(_this, $function.call$1(dartArgs));
      } catch (exception) {
        e = A.unwrapException(exception);
        encoded = B.C_Utf8Encoder.convert$1(A.Error_safeToString(e));
        t1 = _this.bindings;
        ptr = t1.allocateBytes$1(encoded);
        t1 = t1.sqlite3;
        t1.sqlite3_result_error(_this.context, ptr, encoded.length);
        t1.dart_sqlite3_free(ptr);
      } finally {
        dartArgs.isValid = false;
      }
    },
    _extension_0_setResult(_this, result) {
      var t1, encoded, t2, ptr, _this0;
      $label0$0: {
        t1 = null;
        if (result == null) {
          _this.bindings.sqlite3.sqlite3_result_null(_this.context);
          break $label0$0;
        }
        if (A._isInt(result)) {
          _this.bindings.sqlite3.sqlite3_result_int64(_this.context, type$.JavaScriptBigInt._as(init.G.BigInt(A._BigIntImpl__BigIntImpl$from(result).toString$0(0))));
          break $label0$0;
        }
        if (result instanceof A._BigIntImpl) {
          _this.bindings.sqlite3.sqlite3_result_int64(_this.context, type$.JavaScriptBigInt._as(init.G.BigInt(A.BigIntRangeCheck_get_checkRange(result).toString$0(0))));
          break $label0$0;
        }
        if (typeof result == "number") {
          _this.bindings.sqlite3.sqlite3_result_double(_this.context, result);
          break $label0$0;
        }
        if (A._isBool(result)) {
          _this.bindings.sqlite3.sqlite3_result_int64(_this.context, type$.JavaScriptBigInt._as(init.G.BigInt(A._BigIntImpl__BigIntImpl$from(result ? 1 : 0).toString$0(0))));
          break $label0$0;
        }
        if (typeof result == "string") {
          encoded = B.C_Utf8Encoder.convert$1(result);
          t2 = _this.bindings;
          ptr = t2.allocateBytes$1(encoded);
          t2 = t2.sqlite3;
          t2.sqlite3_result_text(_this.context, ptr, encoded.length, -1);
          t2.dart_sqlite3_free(ptr);
          break $label0$0;
        }
        t2 = type$.List_int;
        if (t2._is(result)) {
          t2._as(result);
          t2 = _this.bindings;
          ptr = t2.allocateBytes$1(result);
          t2 = t2.sqlite3;
          t2.sqlite3_result_blob64(_this.context, ptr, type$.JavaScriptBigInt._as(init.G.BigInt(J.get$length$asx(result))), -1);
          t2.dart_sqlite3_free(ptr);
          break $label0$0;
        }
        if (type$.Record_2_nullable_Object_and_int._is(result)) {
          A._extension_0_setResult(_this, result._0);
          _this0 = result._1;
          t2 = type$.nullable_JavaScriptFunction._as(_this.bindings.sqlite3.sqlite3_result_subtype);
          if (t2 != null)
            t2.call(null, _this.context, _this0);
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$value(result, "result", "Unsupported type"));
      }
      return t1;
    },
    FinalizableDatabase: function FinalizableDatabase(t0, t1, t2, t3) {
      var _ = this;
      _.bindings = t0;
      _.database = t1;
      _._statements = t2;
      _.dartCleanup = t3;
    },
    DatabaseImplementation: function DatabaseImplementation(t0, t1, t2) {
      var _ = this;
      _.bindings = t0;
      _.database = t1;
      _.finalizable = t2;
      _._isClosed = false;
    },
    DatabaseImplementation_createFunction_closure: function DatabaseImplementation_createFunction_closure(t0) {
      this.$function = t0;
    },
    DatabaseImplementation__prepareInternal_freeIntermediateResults: function DatabaseImplementation__prepareInternal_freeIntermediateResults(t0, t1) {
      this.compiler = t0;
      this.createdStatements = t1;
    },
    ValueList: function ValueList(t0, t1) {
      this.rawValues = t0;
      this._cachedCopies = t1;
      this.isValid = true;
    },
    FinalizablePart: function FinalizablePart() {
    },
    disposeFinalizer_closure: function disposeFinalizer_closure() {
    },
    Sqlite3Implementation: function Sqlite3Implementation() {
    },
    FinalizableStatement: function FinalizableStatement(t0) {
      this.statement = t0;
      this._inResetState = true;
      this._statement$_closed = false;
    },
    StatementImplementation: function StatementImplementation(t0, t1, t2, t3) {
      var _ = this;
      _.statement = t0;
      _.database = t1;
      _.finalizable = t2;
      _.sql = t3;
      _._latestArguments = null;
    },
    InMemoryFileSystem$(random) {
      var t1 = $.$get$BaseVirtualFileSystem__fallbackRandom();
      return new A.InMemoryFileSystem(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.nullable_Uint8Buffer), t1, "dart-memory");
    },
    InMemoryFileSystem: function InMemoryFileSystem(t0, t1, t2) {
      this.fileData = t0;
      this.random = t1;
      this.name = t2;
    },
    _InMemoryFile: function _InMemoryFile(t0, t1, t2) {
      var _ = this;
      _.vfs = t0;
      _.path = t1;
      _.deleteOnClose = t2;
      _._lockMode = 0;
    },
    Cursor: function Cursor() {
    },
    ResultSet: function ResultSet(t0, t1, t2) {
      this.rows = t0;
      this._result_set$_columnNames = t1;
      this._calculatedIndexes = t2;
    },
    Row: function Row(t0, t1) {
      this._result = t0;
      this._data = t1;
    },
    _ResultIterator: function _ResultIterator(t0) {
      this.result = t0;
      this.index = -1;
    },
    _ResultSet_Cursor_ListMixin: function _ResultSet_Cursor_ListMixin() {
    },
    _ResultSet_Cursor_ListMixin_NonGrowableListMixin: function _ResultSet_Cursor_ListMixin_NonGrowableListMixin() {
    },
    _Row_Object_UnmodifiableMapMixin: function _Row_Object_UnmodifiableMapMixin() {
    },
    _Row_Object_UnmodifiableMapMixin_MapMixin: function _Row_Object_UnmodifiableMapMixin_MapMixin() {
    },
    OpenMode: function OpenMode(t0, t1) {
      this.index = t0;
      this._name = t1;
    },
    CommonPreparedStatement: function CommonPreparedStatement() {
    },
    IndexedParameters: function IndexedParameters(t0) {
      this.parameters = t0;
    },
    VfsException$(returnCode) {
      A.assertHelper(returnCode !== 0);
      return new A.VfsException(returnCode);
    },
    BaseVirtualFileSystem_generateRandomness(target, random) {
      var t1, i, t2;
      if (random == null)
        random = $.$get$BaseVirtualFileSystem__fallbackRandom();
      for (t1 = target.length, i = 0; i < t1; ++i) {
        t2 = random.nextInt$1(256);
        target.$flags & 2 && A.throwUnsupportedOperation(target);
        target[i] = t2;
      }
    },
    VfsException: function VfsException(t0) {
      this.returnCode = t0;
    },
    Sqlite3Filename: function Sqlite3Filename(t0) {
      this.path = t0;
    },
    VirtualFileSystem: function VirtualFileSystem() {
    },
    BaseVirtualFileSystem: function BaseVirtualFileSystem() {
    },
    BaseVfsFile: function BaseVfsFile() {
    },
    WasmSqliteBindings: function WasmSqliteBindings(t0) {
      this.bindings = t0;
    },
    WasmDatabase0: function WasmDatabase0(t0, t1) {
      this.bindings = t0;
      this.db = t1;
    },
    WasmStatementCompiler: function WasmStatementCompiler(t0, t1, t2, t3) {
      var _ = this;
      _.database = t0;
      _.sql = t1;
      _.stmtOut = t2;
      _.pzTail = t3;
    },
    WasmStatement: function WasmStatement(t0, t1, t2) {
      this.stmt = t0;
      this.bindings = t1;
      this._allocatedArguments = t2;
    },
    WasmContext: function WasmContext(t0, t1) {
      this.bindings = t0;
      this.context = t1;
    },
    WasmValue: function WasmValue(t0, t1) {
      this.bindings = t0;
      this.value = t1;
    },
    WasmValueList: function WasmValueList(t0, t1, t2) {
      this.bindings = t0;
      this.length = t1;
      this.value = t2;
    },
    AsyncJavaScriptIteratable: function AsyncJavaScriptIteratable(t0, t1) {
      this._jsObject = t0;
      this.$ti = t1;
    },
    AsyncJavaScriptIteratable_listen_fetchNext: function AsyncJavaScriptIteratable_listen_fetchNext(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.iterator = t2;
      _.controller = t3;
    },
    AsyncJavaScriptIteratable_listen_fetchNext_closure: function AsyncJavaScriptIteratable_listen_fetchNext_closure(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.controller = t2;
      _.fetchNext = t3;
    },
    AsyncJavaScriptIteratable_listen_fetchNextIfNecessary: function AsyncJavaScriptIteratable_listen_fetchNextIfNecessary(t0, t1, t2) {
      this._box_0 = t0;
      this.controller = t1;
      this.fetchNext = t2;
    },
    CompleteIdbRequest_complete(_this, $T) {
      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
        completer = new A._SyncCompleter(t1, $T._eval$1("_SyncCompleter<0>")),
        t2 = type$.nullable_void_Function_JSObject,
        t3 = type$.JSObject;
      A._EventStreamSubscription$(_this, "success", t2._as(new A.CompleteIdbRequest_complete_closure(completer, _this, $T)), false, t3);
      A._EventStreamSubscription$(_this, "error", t2._as(new A.CompleteIdbRequest_complete_closure0(completer, _this)), false, t3);
      return t1;
    },
    CompleteOpenIdbRequest_completeOrBlocked(_this, $T) {
      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
        completer = new A._SyncCompleter(t1, $T._eval$1("_SyncCompleter<0>")),
        t2 = type$.nullable_void_Function_JSObject,
        t3 = type$.JSObject;
      A._EventStreamSubscription$(_this, "success", t2._as(new A.CompleteOpenIdbRequest_completeOrBlocked_closure(completer, _this, $T)), false, t3);
      A._EventStreamSubscription$(_this, "error", t2._as(new A.CompleteOpenIdbRequest_completeOrBlocked_closure0(completer, _this)), false, t3);
      A._EventStreamSubscription$(_this, "blocked", t2._as(new A.CompleteOpenIdbRequest_completeOrBlocked_closure1(completer, _this)), false, t3);
      return t1;
    },
    _CursorReader: function _CursorReader(t0, t1) {
      var _ = this;
      _._indexed_db0$_onError = _._onSuccess = _._cursor = null;
      _._cursorRequest = t0;
      _.$ti = t1;
    },
    _CursorReader_moveNext_closure: function _CursorReader_moveNext_closure(t0, t1) {
      this.$this = t0;
      this.completer = t1;
    },
    _CursorReader_moveNext_closure0: function _CursorReader_moveNext_closure0(t0, t1) {
      this.$this = t0;
      this.completer = t1;
    },
    CompleteIdbRequest_complete_closure: function CompleteIdbRequest_complete_closure(t0, t1, t2) {
      this.completer = t0;
      this._this = t1;
      this.T = t2;
    },
    CompleteIdbRequest_complete_closure0: function CompleteIdbRequest_complete_closure0(t0, t1) {
      this.completer = t0;
      this._this = t1;
    },
    CompleteOpenIdbRequest_completeOrBlocked_closure: function CompleteOpenIdbRequest_completeOrBlocked_closure(t0, t1, t2) {
      this.completer = t0;
      this._this = t1;
      this.T = t2;
    },
    CompleteOpenIdbRequest_completeOrBlocked_closure0: function CompleteOpenIdbRequest_completeOrBlocked_closure0(t0, t1) {
      this.completer = t0;
      this._this = t1;
    },
    CompleteOpenIdbRequest_completeOrBlocked_closure1: function CompleteOpenIdbRequest_completeOrBlocked_closure1(t0, t1) {
      this.completer = t0;
      this._this = t1;
    },
    WasmInstance_load(response, imports) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.JSObject),
        $async$returnValue, native, exports, _this;
      var $async$WasmInstance_load = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              _this = {};
              imports.forEach$1(0, new A.WasmInstance_load_closure(_this));
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(init.G.WebAssembly.instantiateStreaming(response, _this)), type$.JSObject), $async$WasmInstance_load);
            case 3:
              // returning from await.
              native = $async$result;
              exports = A._asJSObject(A._asJSObject(native.instance).exports);
              if ("_initialize" in exports)
                type$.JavaScriptFunction._as(exports._initialize).call();
              $async$returnValue = A._asJSObject(native.instance);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$WasmInstance_load, $async$completer);
    },
    WasmInstance_load_closure: function WasmInstance_load_closure(t0) {
      this.importsJs = t0;
    },
    WasmInstance_load__closure: function WasmInstance_load__closure(t0) {
      this.moduleJs = t0;
    },
    WasmSqlite3_loadFromUrl(uri) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.WasmSqlite3),
        $async$returnValue, t1, jsUri, $async$temp1;
      var $async$WasmSqlite3_loadFromUrl = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = init.G;
              jsUri = uri.get$isAbsolute() ? A._asJSObject(new t1.URL(uri.toString$0(0))) : A._asJSObject(new t1.URL(uri.toString$0(0), A.Uri_base().toString$0(0)));
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(t1.fetch(jsUri, null)), type$.JSObject), $async$WasmSqlite3_loadFromUrl);
            case 3:
              // returning from await.
              $async$returnValue = $async$temp1.WasmSqlite3__load($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$WasmSqlite3_loadFromUrl, $async$completer);
    },
    WasmSqlite3__load(fetchResponse) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.WasmSqlite3),
        $async$returnValue, $async$temp1, $async$temp2;
      var $async$WasmSqlite3__load = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$temp2 = A;
              $async$goto = 3;
              return A._asyncAwait(A.WasmBindings_instantiateAsync(fetchResponse), $async$WasmSqlite3__load);
            case 3:
              // returning from await.
              $async$returnValue = new $async$temp1.WasmSqlite3(new $async$temp2.WasmSqliteBindings($async$result));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$WasmSqlite3__load, $async$completer);
    },
    WasmSqlite3: function WasmSqlite3(t0) {
      this.bindings = t0;
    },
    WasmVfs: function WasmVfs(t0, t1, t2, t3, t4) {
      var _ = this;
      _.synchronizer = t0;
      _.serializer = t1;
      _.pathContext = t2;
      _.random = t3;
      _.name = t4;
    },
    WasmFile: function WasmFile(t0, t1) {
      this.vfs = t0;
      this.fd = t1;
      this.lockStatus = 0;
    },
    RequestResponseSynchronizer_RequestResponseSynchronizer(buffer) {
      var t1 = A._asInt(buffer.byteLength);
      if (t1 !== 8)
        throw A.wrapException(A.ArgumentError$("Must be 8 in length", null));
      t1 = type$.JavaScriptFunction._as(init.G.Int32Array);
      return new A.RequestResponseSynchronizer(type$.NativeInt32List._as(A.callConstructor(t1, [buffer], type$.JSObject)));
    },
    MessageSerializer_readEmpty(unused) {
      return B.C_EmptyMessage;
    },
    MessageSerializer_readFlags(msg) {
      var t1 = msg.dataView;
      return new A.Flags(t1.getInt32(0, false), t1.getInt32(4, false), t1.getInt32(8, false));
    },
    MessageSerializer_readNameAndFlags(msg) {
      var t1 = msg.dataView;
      return new A.NameAndInt32Flags(B.C_Utf8Codec.decode$1(A.SharedArrayBuffer_asUint8ListSlice(msg.buffer, 16, t1.getInt32(12, false))), t1.getInt32(0, false), t1.getInt32(4, false), t1.getInt32(8, false));
    },
    RequestResponseSynchronizer: function RequestResponseSynchronizer(t0) {
      this.int32View = t0;
    },
    MessageSerializer: function MessageSerializer(t0, t1, t2) {
      this.buffer = t0;
      this.dataView = t1;
      this.byteView = t2;
    },
    WorkerOperation: function WorkerOperation(t0, t1, t2, t3, t4) {
      var _ = this;
      _.readRequest = t0;
      _.readResponse = t1;
      _.index = t2;
      _._name = t3;
      _.$ti = t4;
    },
    Message0: function Message0() {
    },
    EmptyMessage: function EmptyMessage() {
    },
    Flags: function Flags(t0, t1, t2) {
      this.flag0 = t0;
      this.flag1 = t1;
      this.flag2 = t2;
    },
    NameAndInt32Flags: function NameAndInt32Flags(t0, t1, t2, t3) {
      var _ = this;
      _.name = t0;
      _.flag0 = t1;
      _.flag1 = t2;
      _.flag2 = t3;
    },
    VfsWorker_create(options) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.VfsWorker),
        $async$returnValue, t2, _i, t3, t4, t5, t6, t1, root, split;
      var $async$VfsWorker_create = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.JSObject;
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(A.storageManager().getDirectory()), t1), $async$VfsWorker_create);
            case 3:
              // returning from await.
              root = $async$result;
              split = $.$get$url().split$1(0, A._asString(options.root));
              t2 = split.length, _i = 0;
            case 4:
              // for condition
              if (!(_i < split.length)) {
                // goto after for
                $async$goto = 6;
                break;
              }
              $async$goto = 7;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(root.getDirectoryHandle(split[_i], {create: true})), t1), $async$VfsWorker_create);
            case 7:
              // returning from await.
              root = $async$result;
            case 5:
              // for update
              split.length === t2 || (0, A.throwConcurrentModificationError)(split), ++_i;
              // goto for condition
              $async$goto = 4;
              break;
            case 6:
              // after for
              t2 = type$._OpenedFileHandle;
              t3 = A.RequestResponseSynchronizer_RequestResponseSynchronizer(A._asJSObject(options.synchronizationBuffer));
              t4 = A._asJSObject(options.communicationBuffer);
              t5 = A.SharedArrayBuffer_asByteData(t4, 65536, 2048);
              t6 = type$.JavaScriptFunction._as(init.G.Uint8Array);
              $async$returnValue = new A.VfsWorker(t3, new A.MessageSerializer(t4, t5, type$.NativeUint8List._as(A.callConstructor(t6, [t4], t1))), root, A.LinkedHashMap_LinkedHashMap$_empty(type$.int, t2), A.LinkedHashSet_LinkedHashSet$_empty(t2));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$VfsWorker_create, $async$completer);
    },
    _ResolvedPath: function _ResolvedPath(t0, t1, t2) {
      this.fullPath = t0;
      this.directory = t1;
      this.filename = t2;
    },
    VfsWorker: function VfsWorker(t0, t1, t2, t3, t4) {
      var _ = this;
      _.synchronizer = t0;
      _.messages = t1;
      _.root = t2;
      _._fdCounter = 0;
      _._stopped = false;
      _._openFiles = t3;
      _._implicitlyHeldLocks = t4;
    },
    _OpenedFileHandle: function _OpenedFileHandle(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.fd = t0;
      _.readonly = t1;
      _.deleteOnClose = t2;
      _.fullPath = t3;
      _.directory = t4;
      _.filename = t5;
      _.file = t6;
      _.explicitlyLocked = false;
      _.syncHandle = null;
    },
    IndexedDbFileSystem_open(dbName) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.IndexedDbFileSystem),
        $async$returnValue, t1, t2, t3, t4, fs;
      var $async$IndexedDbFileSystem_open = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.String;
              t2 = new A.AsynchronousIndexedDbFileSystem(dbName);
              t3 = A.InMemoryFileSystem$(null);
              t4 = $.$get$BaseVirtualFileSystem__fallbackRandom();
              fs = new A.IndexedDbFileSystem(t2, t3, new A.LinkedList(type$.LinkedList__IndexedDbWorkItem), A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), t4, "indexeddb");
              $async$goto = 3;
              return A._asyncAwait(t2.open$0(), $async$IndexedDbFileSystem_open);
            case 3:
              // returning from await.
              $async$goto = 4;
              return A._asyncAwait(fs._readFiles$0(), $async$IndexedDbFileSystem_open);
            case 4:
              // returning from await.
              $async$returnValue = fs;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$IndexedDbFileSystem_open, $async$completer);
    },
    AsynchronousIndexedDbFileSystem: function AsynchronousIndexedDbFileSystem(t0) {
      this._indexed_db$_database = null;
      this._dbName = t0;
    },
    AsynchronousIndexedDbFileSystem_open_closure: function AsynchronousIndexedDbFileSystem_open_closure(t0) {
      this.openRequest = t0;
    },
    AsynchronousIndexedDbFileSystem__readFile_closure: function AsynchronousIndexedDbFileSystem__readFile_closure(t0) {
      this.fileId = t0;
    },
    AsynchronousIndexedDbFileSystem_readFully_closure: function AsynchronousIndexedDbFileSystem_readFully_closure(t0, t1, t2, t3) {
      var _ = this;
      _.row = t0;
      _.result = t1;
      _.rowOffset = t2;
      _.length = t3;
    },
    AsynchronousIndexedDbFileSystem__write_writeBlock: function AsynchronousIndexedDbFileSystem__write_writeBlock(t0, t1) {
      this.blocks = t0;
      this.fileId = t1;
    },
    AsynchronousIndexedDbFileSystem__write_closure: function AsynchronousIndexedDbFileSystem__write_closure(t0, t1) {
      this.writeBlock = t0;
      this.writes = t1;
    },
    _FileWriteRequest: function _FileWriteRequest(t0, t1, t2) {
      this.originalContent = t0;
      this.replacedBlocks = t1;
      this.newFileLength = t2;
    },
    _FileWriteRequest__updateBlock_closure: function _FileWriteRequest__updateBlock_closure(t0, t1) {
      this.$this = t0;
      this.blockOffset = t1;
    },
    _OffsetAndBuffer: function _OffsetAndBuffer(t0, t1) {
      this.offset = t0;
      this.buffer = t1;
    },
    IndexedDbFileSystem: function IndexedDbFileSystem(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._asynchronous = t0;
      _._isClosing = false;
      _._currentWorkItem = null;
      _._memory = t1;
      _._pendingWork = t2;
      _._inMemoryOnlyFiles = t3;
      _._knownFileIds = t4;
      _.random = t5;
      _.name = t6;
    },
    IndexedDbFileSystem__startWorkingIfNeeded_closure: function IndexedDbFileSystem__startWorkingIfNeeded_closure(t0) {
      this.$this = t0;
    },
    _IndexedDbFile: function _IndexedDbFile(t0, t1, t2) {
      this.vfs = t0;
      this.memoryFile = t1;
      this.path = t2;
    },
    _IndexedDbFile_xTruncate_closure: function _IndexedDbFile_xTruncate_closure(t0, t1) {
      this.$this = t0;
      this.size = t1;
    },
    _IndexedDbWorkItem: function _IndexedDbWorkItem() {
    },
    _FunctionWorkItem: function _FunctionWorkItem(t0, t1) {
      var _ = this;
      _.work = t0;
      _.completer = t1;
      _._previous = _._next = _._list = null;
    },
    _DeleteFileWorkItem: function _DeleteFileWorkItem(t0, t1, t2) {
      var _ = this;
      _.fileSystem = t0;
      _.path = t1;
      _.completer = t2;
      _._previous = _._next = _._list = null;
    },
    _CreateFileWorkItem: function _CreateFileWorkItem(t0, t1, t2) {
      var _ = this;
      _.fileSystem = t0;
      _.path = t1;
      _.completer = t2;
      _._previous = _._next = _._list = null;
    },
    _WriteFileWorkItem: function _WriteFileWorkItem(t0, t1, t2, t3, t4) {
      var _ = this;
      _.fileSystem = t0;
      _.path = t1;
      _.originalContent = t2;
      _.writes = t3;
      _.completer = t4;
      _._previous = _._next = _._list = null;
    },
    SimpleOpfsFileSystem__resolveDir(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_nullable_JSObject_and_JSObject),
        $async$returnValue, t1, opfsDirectory, t2, t3, $parent, _i, opfsDirectory0, storage;
      var $async$SimpleOpfsFileSystem__resolveDir = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              storage = A.storageManager();
              if (storage == null)
                throw A.wrapException(A.VfsException$(1));
              t1 = type$.JSObject;
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(storage.getDirectory()), t1), $async$SimpleOpfsFileSystem__resolveDir);
            case 3:
              // returning from await.
              opfsDirectory = $async$result;
              t2 = $.$get$context().split$1(0, path), t3 = t2.length, $parent = null, _i = 0;
            case 4:
              // for condition
              if (!(_i < t2.length)) {
                // goto after for
                $async$goto = 6;
                break;
              }
              $async$goto = 7;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(opfsDirectory.getDirectoryHandle(t2[_i], {create: true})), t1), $async$SimpleOpfsFileSystem__resolveDir);
            case 7:
              // returning from await.
              opfsDirectory0 = $async$result;
            case 5:
              // for update
              t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i, $parent = opfsDirectory, opfsDirectory = opfsDirectory0;
              // goto for condition
              $async$goto = 4;
              break;
            case 6:
              // after for
              $async$returnValue = new A._Record_2($parent, opfsDirectory);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$SimpleOpfsFileSystem__resolveDir, $async$completer);
    },
    SimpleOpfsFileSystem_loadFromStorage(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SimpleOpfsFileSystem),
        $async$returnValue, $async$temp1;
      var $async$SimpleOpfsFileSystem_loadFromStorage = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              if (A.storageManager() == null)
                throw A.wrapException(A.VfsException$(1));
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A.SimpleOpfsFileSystem__resolveDir(path), $async$SimpleOpfsFileSystem_loadFromStorage);
            case 3:
              // returning from await.
              $async$returnValue = $async$temp1.SimpleOpfsFileSystem_inDirectory($async$result._1, false, "simple-opfs");
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$SimpleOpfsFileSystem_loadFromStorage, $async$completer);
    },
    SimpleOpfsFileSystem_inDirectory(root, readWriteUnsafe, vfsName) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SimpleOpfsFileSystem),
        $async$returnValue, t1, _i, type, t2, t3, t4, $open, meta, $async$temp1, $async$temp2;
      var $async$SimpleOpfsFileSystem_inDirectory = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $open = new A.SimpleOpfsFileSystem_inDirectory_open(root, false);
              $async$goto = 3;
              return A._asyncAwait($open.call$1("meta"), $async$SimpleOpfsFileSystem_inDirectory);
            case 3:
              // returning from await.
              meta = $async$result;
              meta.truncate(2);
              t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileType, type$.JSObject);
              _i = 0;
            case 4:
              // for condition
              if (!(_i < 2)) {
                // goto after for
                $async$goto = 6;
                break;
              }
              type = B.List_fyc[_i];
              $async$temp1 = t1;
              $async$temp2 = type;
              $async$goto = 7;
              return A._asyncAwait($open.call$1(type._name), $async$SimpleOpfsFileSystem_inDirectory);
            case 7:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, $async$result);
            case 5:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 4;
              break;
            case 6:
              // after for
              t2 = new Uint8Array(2);
              t3 = A.InMemoryFileSystem$(null);
              t4 = $.$get$BaseVirtualFileSystem__fallbackRandom();
              $async$returnValue = new A.SimpleOpfsFileSystem(meta, t2, t1, t3, t4, vfsName);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$SimpleOpfsFileSystem_inDirectory, $async$completer);
    },
    FileType: function FileType(t0, t1, t2) {
      this.filePath = t0;
      this.index = t1;
      this._name = t2;
    },
    SimpleOpfsFileSystem: function SimpleOpfsFileSystem(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._metaHandle = t0;
      _._existsList = t1;
      _._files = t2;
      _._simple_opfs$_memory = t3;
      _.random = t4;
      _.name = t5;
    },
    SimpleOpfsFileSystem_inDirectory_open: function SimpleOpfsFileSystem_inDirectory_open(t0, t1) {
      this.root = t0;
      this.readWriteUnsafe = t1;
    },
    _SimpleOpfsFile: function _SimpleOpfsFile(t0, t1, t2, t3) {
      var _ = this;
      _.vfs = t0;
      _.type = t1;
      _.syncHandle = t2;
      _.deleteOnClose = t3;
      _._simple_opfs$_lockMode = 0;
    },
    WasmBindings_instantiateAsync(response) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.WasmBindings),
        $async$returnValue, instance, injected, t1;
      var $async$WasmBindings_instantiateAsync = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              injected = A._InjectedValues$();
              t1 = injected.___InjectedValues_injectedValues_A;
              t1 === $ && A.throwLateFieldNI("injectedValues");
              $async$goto = 3;
              return A._asyncAwait(A.WasmInstance_load(response, t1), $async$WasmBindings_instantiateAsync);
            case 3:
              // returning from await.
              instance = $async$result;
              t1 = injected.___InjectedValues_memory_A;
              t1 === $ && A.throwLateFieldNI("memory");
              $async$returnValue = injected.___InjectedValues_bindings_A = new A.WasmBindings(t1, injected.callbacks, A._asJSObject(instance.exports));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$WasmBindings_instantiateAsync, $async$completer);
    },
    _runVfs(body) {
      var e, exception, t1;
      try {
        body.call$0();
        return 0;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.VfsException) {
          e = t1;
          return e.returnCode;
        } else
          return 1;
      }
    },
    WrappedMemory_strlen(_this, address) {
      var bytes, t1, $length;
      if (A.assertTest(address !== 0))
        A.assertThrow("Null pointer dereference");
      bytes = A.NativeUint8List_NativeUint8List$view(type$.NativeArrayBuffer._as(_this.buffer), address, null);
      t1 = bytes.length;
      $length = 0;
      for (;;) {
        if (!($length < t1))
          return A.ioore(bytes, $length);
        if (!(bytes[$length] !== 0))
          break;
        ++$length;
      }
      return $length;
    },
    WrappedMemory_int32ValueOfPointer(_this, pointer) {
      var t1, t2;
      if (A.assertTest(pointer !== 0))
        A.assertThrow("Null pointer dereference");
      t1 = A.NativeInt32List_NativeInt32List$view(type$.NativeArrayBuffer._as(_this.buffer), 0, null);
      t2 = B.JSInt_methods._shrOtherPositive$1(pointer, 2);
      if (!(t2 < t1.length))
        return A.ioore(t1, t2);
      return t1[t2];
    },
    WrappedMemory_setInt32Value(_this, pointer, value) {
      var t1, t2;
      if (A.assertTest(pointer !== 0))
        A.assertThrow("Null pointer dereference");
      t1 = A.NativeInt32List_NativeInt32List$view(type$.NativeArrayBuffer._as(_this.buffer), 0, null);
      t2 = B.JSInt_methods._shrOtherPositive$1(pointer, 2);
      t1.$flags & 2 && A.throwUnsupportedOperation(t1);
      if (!(t2 < t1.length))
        return A.ioore(t1, t2);
      t1[t2] = value;
    },
    WrappedMemory_readString(_this, address, $length) {
      var t1;
      if (A.assertTest(address !== 0))
        A.assertThrow("Null pointer dereference");
      t1 = type$.NativeArrayBuffer._as(_this.buffer);
      return B.C_Utf8Codec.decode$1(A.NativeUint8List_NativeUint8List$view(t1, address, $length == null ? A.WrappedMemory_strlen(_this, address) : $length));
    },
    WrappedMemory_readNullableString(_this, address, $length) {
      var t1;
      if (address === 0)
        return null;
      t1 = type$.NativeArrayBuffer._as(_this.buffer);
      return B.C_Utf8Codec.decode$1(A.NativeUint8List_NativeUint8List$view(t1, address, $length == null ? A.WrappedMemory_strlen(_this, address) : $length));
    },
    WrappedMemory_copyRange(_this, pointer, $length) {
      var list = new Uint8Array($length);
      B.NativeUint8List_methods.setAll$2(list, 0, A.NativeUint8List_NativeUint8List$view(type$.NativeArrayBuffer._as(_this.buffer), pointer, $length));
      return list;
    },
    _InjectedValues$() {
      var t1 = type$.int;
      t1 = new A._InjectedValues(new A.DartCallbacks(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.RegisteredFunctionSet), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AggregateContext_nullable_Object), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.VirtualFileSystem), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.VirtualFileSystemFile), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.SessionApplyCallbacks)));
      t1._InjectedValues$0();
      return t1;
    },
    WasmBindings: function WasmBindings(t0, t1, t2) {
      this.memory = t0;
      this.callbacks = t1;
      this.sqlite3 = t2;
    },
    _InjectedValues: function _InjectedValues(t0) {
      var _ = this;
      _.___InjectedValues_memory_A = _.___InjectedValues_injectedValues_A = _.___InjectedValues_bindings_A = $;
      _.callbacks = t0;
    },
    _InjectedValues_closure: function _InjectedValues_closure(t0) {
      this.memory = t0;
    },
    _InjectedValues_closure0: function _InjectedValues_closure0(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure13: function _InjectedValues__closure13(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.vfs = t1;
      _.path = t2;
      _.flags = t3;
      _.memory = t4;
      _.dartFdPtr = t5;
      _.pOutFlags = t6;
    },
    _InjectedValues_closure1: function _InjectedValues_closure1(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure12: function _InjectedValues__closure12(t0, t1, t2) {
      this.vfs = t0;
      this.path = t1;
      this.syncDir = t2;
    },
    _InjectedValues_closure2: function _InjectedValues_closure2(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure11: function _InjectedValues__closure11(t0, t1, t2, t3, t4) {
      var _ = this;
      _.vfs = t0;
      _.path = t1;
      _.flags = t2;
      _.memory = t3;
      _.pResOut = t4;
    },
    _InjectedValues_closure3: function _InjectedValues_closure3(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure10: function _InjectedValues__closure10(t0, t1, t2, t3, t4) {
      var _ = this;
      _.vfs = t0;
      _.path = t1;
      _.nOut = t2;
      _.memory = t3;
      _.zOut = t4;
    },
    _InjectedValues_closure4: function _InjectedValues_closure4(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure9: function _InjectedValues__closure9(t0, t1, t2, t3) {
      var _ = this;
      _.memory = t0;
      _.zOut = t1;
      _.nByte = t2;
      _.vfs = t3;
    },
    _InjectedValues_closure5: function _InjectedValues_closure5(t0) {
      this.$this = t0;
    },
    _InjectedValues__closure8: function _InjectedValues__closure8(t0, t1) {
      this.vfs = t0;
      this.micros = t1;
    },
    _InjectedValues_closure6: function _InjectedValues_closure6(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues_closure7: function _InjectedValues_closure7(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure8: function _InjectedValues_closure8(t0) {
      this.$this = t0;
    },
    _InjectedValues__closure7: function _InjectedValues__closure7(t0, t1, t2) {
      this.$this = t0;
      this.file = t1;
      this.fd = t2;
    },
    _InjectedValues_closure9: function _InjectedValues_closure9(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure6: function _InjectedValues__closure6(t0, t1, t2, t3, t4) {
      var _ = this;
      _.file = t0;
      _.memory = t1;
      _.target = t2;
      _.amount = t3;
      _.offset = t4;
    },
    _InjectedValues_closure10: function _InjectedValues_closure10(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure5: function _InjectedValues__closure5(t0, t1, t2, t3, t4) {
      var _ = this;
      _.file = t0;
      _.memory = t1;
      _.source = t2;
      _.amount = t3;
      _.offset = t4;
    },
    _InjectedValues_closure11: function _InjectedValues_closure11(t0) {
      this.$this = t0;
    },
    _InjectedValues__closure4: function _InjectedValues__closure4(t0, t1) {
      this.file = t0;
      this.size = t1;
    },
    _InjectedValues_closure12: function _InjectedValues_closure12(t0) {
      this.$this = t0;
    },
    _InjectedValues__closure3: function _InjectedValues__closure3(t0, t1) {
      this.file = t0;
      this.flags = t1;
    },
    _InjectedValues_closure13: function _InjectedValues_closure13(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure2: function _InjectedValues__closure2(t0, t1, t2) {
      this.file = t0;
      this.memory = t1;
      this.sizePtr = t2;
    },
    _InjectedValues_closure14: function _InjectedValues_closure14(t0) {
      this.$this = t0;
    },
    _InjectedValues__closure1: function _InjectedValues__closure1(t0, t1) {
      this.file = t0;
      this.flags = t1;
    },
    _InjectedValues_closure15: function _InjectedValues_closure15(t0) {
      this.$this = t0;
    },
    _InjectedValues__closure0: function _InjectedValues__closure0(t0, t1) {
      this.file = t0;
      this.flags = t1;
    },
    _InjectedValues_closure16: function _InjectedValues_closure16(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues__closure: function _InjectedValues__closure(t0, t1, t2) {
      this.file = t0;
      this.memory = t1;
      this.pResOut = t2;
    },
    _InjectedValues_closure17: function _InjectedValues_closure17(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure18: function _InjectedValues_closure18(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure19: function _InjectedValues_closure19(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure20: function _InjectedValues_closure20(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure21: function _InjectedValues_closure21(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure22: function _InjectedValues_closure22(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure23: function _InjectedValues_closure23(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues_closure24: function _InjectedValues_closure24(t0, t1) {
      this.$this = t0;
      this.memory = t1;
    },
    _InjectedValues_closure25: function _InjectedValues_closure25(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure26: function _InjectedValues_closure26(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure27: function _InjectedValues_closure27(t0) {
      this.memory = t0;
    },
    _InjectedValues_closure28: function _InjectedValues_closure28(t0) {
      this.$this = t0;
    },
    _InjectedValues_closure29: function _InjectedValues_closure29(t0) {
      this.$this = t0;
    },
    DartCallbacks: function DartCallbacks(t0, t1, t2, t3, t4) {
      var _ = this;
      _._id = 0;
      _.functions = t0;
      _.aggregateContexts = t1;
      _.registeredVfs = t2;
      _.openedFiles = t3;
      _.sessionApply = t4;
      _.installedRollbackHook = _.installedCommitHook = _.installedUpdateHook = null;
    },
    RegisteredFunctionSet: function RegisteredFunctionSet(t0, t1, t2) {
      this.xFunc = t0;
      this.xStep = t1;
      this.xFinal = t2;
    },
    Chain_Chain$parse(chain) {
      var t1, t2,
        _s51_ = string$.x3d_____;
      if (chain.length === 0)
        return new A.Chain(A.List_List$unmodifiable(A._setArrayType([], type$.JSArray_Trace), type$.Trace));
      t1 = $.$get$vmChainGap();
      if (B.JSString_methods.contains$1(chain, t1)) {
        t1 = B.JSString_methods.split$1(chain, t1);
        t2 = A._arrayInstanceType(t1);
        return new A.Chain(A.List_List$unmodifiable(new A.MappedIterable(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.Chain_Chain$parse_closure()), t2._eval$1("WhereIterable<1>")), t2._eval$1("Trace(1)")._as(A.trace_Trace___parseVM_tearOff$closure()), t2._eval$1("MappedIterable<1,Trace>")), type$.Trace));
      }
      if (!B.JSString_methods.contains$1(chain, _s51_))
        return new A.Chain(A.List_List$unmodifiable(A._setArrayType([A.Trace_Trace$parse(chain)], type$.JSArray_Trace), type$.Trace));
      return new A.Chain(A.List_List$unmodifiable(new A.MappedListIterable(A._setArrayType(chain.split(_s51_), type$.JSArray_String), type$.Trace_Function_String._as(A.trace_Trace___parseFriendly_tearOff$closure()), type$.MappedListIterable_String_Trace), type$.Trace));
    },
    Chain: function Chain(t0) {
      this.traces = t0;
    },
    Chain_Chain$parse_closure: function Chain_Chain$parse_closure() {
    },
    Chain_toTrace_closure: function Chain_toTrace_closure() {
    },
    Chain_toString_closure0: function Chain_toString_closure0() {
    },
    Chain_toString__closure0: function Chain_toString__closure0() {
    },
    Chain_toString_closure: function Chain_toString_closure(t0) {
      this.longest = t0;
    },
    Chain_toString__closure: function Chain_toString__closure(t0) {
      this.longest = t0;
    },
    Frame___parseVM_tearOff(frame) {
      return A.Frame_Frame$parseVM(A._asString(frame));
    },
    Frame_Frame$parseVM(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseVM_closure(frame));
    },
    Frame___parseV8_tearOff(frame) {
      return A.Frame_Frame$parseV8(A._asString(frame));
    },
    Frame_Frame$parseV8(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseV8_closure(frame));
    },
    Frame_Frame$_parseFirefoxEval(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$_parseFirefoxEval_closure(frame));
    },
    Frame___parseFirefox_tearOff(frame) {
      return A.Frame_Frame$parseFirefox(A._asString(frame));
    },
    Frame_Frame$parseFirefox(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseFirefox_closure(frame));
    },
    Frame___parseFriendly_tearOff(frame) {
      return A.Frame_Frame$parseFriendly(A._asString(frame));
    },
    Frame_Frame$parseFriendly(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseFriendly_closure(frame));
    },
    Frame__uriOrPathToUri(uriOrPath) {
      if (B.JSString_methods.contains$1(uriOrPath, $.$get$Frame__uriRegExp()))
        return A.Uri_parse(uriOrPath);
      else if (B.JSString_methods.contains$1(uriOrPath, $.$get$Frame__windowsRegExp()))
        return A._Uri__Uri$file(uriOrPath, true);
      else if (B.JSString_methods.startsWith$1(uriOrPath, "/"))
        return A._Uri__Uri$file(uriOrPath, false);
      if (B.JSString_methods.contains$1(uriOrPath, "\\"))
        return $.$get$windows().toUri$1(uriOrPath);
      return A.Uri_parse(uriOrPath);
    },
    Frame__catchFormatException(text, body) {
      var t1, exception;
      try {
        t1 = body.call$0();
        return t1;
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.FormatException)
          return new A.UnparsedFrame(A._Uri__Uri(null, "unparsed", null, null), text);
        else
          throw exception;
      }
    },
    Frame: function Frame(t0, t1, t2, t3) {
      var _ = this;
      _.uri = t0;
      _.line = t1;
      _.column = t2;
      _.member = t3;
    },
    Frame_Frame$parseVM_closure: function Frame_Frame$parseVM_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseV8_closure: function Frame_Frame$parseV8_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseV8_closure_parseJsLocation: function Frame_Frame$parseV8_closure_parseJsLocation(t0) {
      this.frame = t0;
    },
    Frame_Frame$_parseFirefoxEval_closure: function Frame_Frame$_parseFirefoxEval_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseFirefox_closure: function Frame_Frame$parseFirefox_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseFriendly_closure: function Frame_Frame$parseFriendly_closure(t0) {
      this.frame = t0;
    },
    LazyTrace: function LazyTrace(t0) {
      this._thunk = t0;
      this.__LazyTrace__trace_FI = $;
    },
    Trace_Trace$from(trace) {
      if (type$.Trace._is(trace))
        return trace;
      if (trace instanceof A.Chain)
        return trace.toTrace$0();
      return new A.LazyTrace(new A.Trace_Trace$from_closure(trace));
    },
    Trace_Trace$parse(trace) {
      var error, t1, exception;
      try {
        if (trace.length === 0) {
          t1 = A.Trace$(A._setArrayType([], type$.JSArray_Frame), null);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, $.$get$_v8Trace())) {
          t1 = A.Trace$parseV8(trace);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, "\tat ")) {
          t1 = A.Trace$parseJSCore(trace);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, $.$get$_firefoxSafariTrace()) || B.JSString_methods.contains$1(trace, $.$get$_firefoxEvalTrace())) {
          t1 = A.Trace$parseFirefox(trace);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, string$.x3d_____)) {
          t1 = A.Chain_Chain$parse(trace).toTrace$0();
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, $.$get$_friendlyTrace())) {
          t1 = A.Trace$parseFriendly(trace);
          return t1;
        }
        t1 = A.Trace$parseVM(trace);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.FormatException) {
          error = t1;
          throw A.wrapException(A.FormatException$(error.message + "\nStack trace:\n" + trace, null, null));
        } else
          throw exception;
      }
    },
    Trace___parseVM_tearOff(trace) {
      return A.Trace$parseVM(A._asString(trace));
    },
    Trace$parseVM(trace) {
      var t1 = A.List_List$unmodifiable(A.Trace__parseVM(trace), type$.Frame);
      return new A.Trace(t1);
    },
    Trace__parseVM(trace) {
      var $frames,
        t1 = B.JSString_methods.trim$0(trace),
        t2 = $.$get$vmChainGap(),
        t3 = type$.WhereIterable_String,
        lines = new A.WhereIterable(A._setArrayType(A.stringReplaceAllUnchecked(t1, t2, "").split("\n"), type$.JSArray_String), type$.bool_Function_String._as(new A.Trace__parseVM_closure()), t3);
      if (!lines.get$iterator(0).moveNext$0())
        return A._setArrayType([], type$.JSArray_Frame);
      t1 = A.TakeIterable_TakeIterable(lines, lines.get$length(0) - 1, t3._eval$1("Iterable.E"));
      t2 = A._instanceType(t1);
      t2 = A.MappedIterable_MappedIterable(t1, t2._eval$1("Frame(Iterable.E)")._as(A.frame_Frame___parseVM_tearOff$closure()), t2._eval$1("Iterable.E"), type$.Frame);
      $frames = A.List_List$_of(t2, A._instanceType(t2)._eval$1("Iterable.E"));
      if (!B.JSString_methods.endsWith$1(lines.get$last(0), ".da"))
        B.JSArray_methods.add$1($frames, A.Frame_Frame$parseVM(lines.get$last(0)));
      return $frames;
    },
    Trace$parseV8(trace) {
      var t2, t3,
        t1 = A.SubListIterable$(A._setArrayType(trace.split("\n"), type$.JSArray_String), 1, null, type$.String);
      t1 = t1.super$Iterable$skipWhile(0, t1.$ti._eval$1("bool(ListIterable.E)")._as(new A.Trace$parseV8_closure()));
      t2 = type$.Frame;
      t3 = t1.$ti;
      t2 = A.List_List$unmodifiable(A.MappedIterable_MappedIterable(t1, t3._eval$1("Frame(Iterable.E)")._as(A.frame_Frame___parseV8_tearOff$closure()), t3._eval$1("Iterable.E"), t2), t2);
      return new A.Trace(t2);
    },
    Trace$parseJSCore(trace) {
      var t1 = A.List_List$unmodifiable(new A.MappedIterable(new A.WhereIterable(A._setArrayType(trace.split("\n"), type$.JSArray_String), type$.bool_Function_String._as(new A.Trace$parseJSCore_closure()), type$.WhereIterable_String), type$.Frame_Function_String._as(A.frame_Frame___parseV8_tearOff$closure()), type$.MappedIterable_String_Frame), type$.Frame);
      return new A.Trace(t1);
    },
    Trace$parseFirefox(trace) {
      var t1 = A.List_List$unmodifiable(new A.MappedIterable(new A.WhereIterable(A._setArrayType(B.JSString_methods.trim$0(trace).split("\n"), type$.JSArray_String), type$.bool_Function_String._as(new A.Trace$parseFirefox_closure()), type$.WhereIterable_String), type$.Frame_Function_String._as(A.frame_Frame___parseFirefox_tearOff$closure()), type$.MappedIterable_String_Frame), type$.Frame);
      return new A.Trace(t1);
    },
    Trace___parseFriendly_tearOff(trace) {
      return A.Trace$parseFriendly(A._asString(trace));
    },
    Trace$parseFriendly(trace) {
      var t1 = trace.length === 0 ? A._setArrayType([], type$.JSArray_Frame) : new A.MappedIterable(new A.WhereIterable(A._setArrayType(B.JSString_methods.trim$0(trace).split("\n"), type$.JSArray_String), type$.bool_Function_String._as(new A.Trace$parseFriendly_closure()), type$.WhereIterable_String), type$.Frame_Function_String._as(A.frame_Frame___parseFriendly_tearOff$closure()), type$.MappedIterable_String_Frame);
      t1 = A.List_List$unmodifiable(t1, type$.Frame);
      return new A.Trace(t1);
    },
    Trace$($frames, original) {
      var t1 = A.List_List$unmodifiable($frames, type$.Frame);
      return new A.Trace(t1);
    },
    Trace: function Trace(t0) {
      this.frames = t0;
    },
    Trace_Trace$from_closure: function Trace_Trace$from_closure(t0) {
      this.trace = t0;
    },
    Trace__parseVM_closure: function Trace__parseVM_closure() {
    },
    Trace$parseV8_closure: function Trace$parseV8_closure() {
    },
    Trace$parseJSCore_closure: function Trace$parseJSCore_closure() {
    },
    Trace$parseFirefox_closure: function Trace$parseFirefox_closure() {
    },
    Trace$parseFriendly_closure: function Trace$parseFriendly_closure() {
    },
    Trace_toString_closure0: function Trace_toString_closure0() {
    },
    Trace_toString_closure: function Trace_toString_closure(t0) {
      this.longest = t0;
    },
    UnparsedFrame: function UnparsedFrame(t0, t1) {
      this.uri = t0;
      this.member = t1;
    },
    CloseGuaranteeChannel: function CloseGuaranteeChannel(t0) {
      var _ = this;
      _.__CloseGuaranteeChannel__sink_F = _.__CloseGuaranteeChannel__stream_F = $;
      _._close_guarantee_channel$_subscription = null;
      _._disconnected = false;
      _.$ti = t0;
    },
    _CloseGuaranteeStream: function _CloseGuaranteeStream(t0, t1, t2) {
      this._inner = t0;
      this._channel = t1;
      this.$ti = t2;
    },
    _CloseGuaranteeSink: function _CloseGuaranteeSink(t0, t1, t2) {
      this._channel = t0;
      this._sink = t1;
      this.$ti = t2;
    },
    GuaranteeChannel$(innerStream, innerSink, allowSinkErrors, $T) {
      var t2, t1 = {};
      t1.innerStream = innerStream;
      t2 = new A.GuaranteeChannel($T._eval$1("GuaranteeChannel<0>"));
      t2.GuaranteeChannel$3$allowSinkErrors(innerSink, true, t1, $T);
      return t2;
    },
    GuaranteeChannel: function GuaranteeChannel(t0) {
      var _ = this;
      _.__GuaranteeChannel__streamController_F = _.__GuaranteeChannel__sink_F = $;
      _._guarantee_channel$_subscription = null;
      _._guarantee_channel$_disconnected = false;
      _.$ti = t0;
    },
    GuaranteeChannel_closure: function GuaranteeChannel_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.T = t2;
    },
    GuaranteeChannel__closure: function GuaranteeChannel__closure(t0) {
      this.$this = t0;
    },
    _GuaranteeSink: function _GuaranteeSink(t0, t1, t2, t3, t4) {
      var _ = this;
      _._guarantee_channel$_inner = t0;
      _._guarantee_channel$_channel = t1;
      _._doneCompleter = t2;
      _._closed = _._guarantee_channel$_disconnected = false;
      _._addStreamCompleter = _._addStreamSubscription = null;
      _._allowErrors = t3;
      _.$ti = t4;
    },
    StreamChannelController: function StreamChannelController(t0) {
      this.__StreamChannelController__foreign_F = this.__StreamChannelController__local_F = $;
      this.$ti = t0;
    },
    StreamChannelMixin: function StreamChannelMixin() {
    },
    TypedDataBuffer: function TypedDataBuffer() {
    },
    _IntBuffer: function _IntBuffer() {
    },
    Uint8Buffer: function Uint8Buffer(t0, t1) {
      this._typed_buffer$_buffer = t0;
      this._typed_buffer$_length = t1;
    },
    _EventStreamSubscription$(_target, _eventType, onData, _useCapture, $T) {
      var t1;
      if (onData == null)
        t1 = null;
      else {
        t1 = A._wrapZone(new A._EventStreamSubscription_closure(onData), type$.JSObject);
        t1 = t1 == null ? null : A._functionToJS1(t1);
      }
      t1 = new A._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>"));
      t1._tryResume$0();
      return t1;
    },
    _wrapZone(callback, $T) {
      var t1 = $.Zone__current;
      if (t1 === B.C__RootZone)
        return callback;
      return t1.bindUnaryCallbackGuarded$1$1(callback, $T);
    },
    EventStreamProvider: function EventStreamProvider(t0, t1) {
      this._eventType = t0;
      this.$ti = t1;
    },
    _EventStream: function _EventStream(t0, t1, t2, t3) {
      var _ = this;
      _._target = t0;
      _._eventType = t1;
      _._useCapture = t2;
      _.$ti = t3;
    },
    _EventStreamSubscription: function _EventStreamSubscription(t0, t1, t2, t3, t4) {
      var _ = this;
      _._pauseCount = 0;
      _._target = t0;
      _._eventType = t1;
      _._onData = t2;
      _._useCapture = t3;
      _.$ti = t4;
    },
    _EventStreamSubscription_closure: function _EventStreamSubscription_closure(t0) {
      this.onData = t0;
    },
    _EventStreamSubscription_onData_closure: function _EventStreamSubscription_onData_closure(t0) {
      this.handleData = t0;
    },
    printString(string) {
      if (typeof dartPrint == "function") {
        dartPrint(string);
        return;
      }
      if (typeof console == "object" && typeof console.log != "undefined") {
        console.log(string);
        return;
      }
      if (typeof print == "function") {
        print(string);
        return;
      }
      throw "Unable to print message: " + String(string);
    },
    JSObjectUnsafeUtilExtension__callMethod(_this, method, arg1, arg2, arg3, arg4) {
      var t1;
      if (arg1 == null)
        return _this[method]();
      else if (arg2 == null)
        return _this[method](arg1);
      else if (arg3 == null)
        return _this[method](arg1, arg2);
      else {
        t1 = _this[method](arg1, arg2, arg3);
        return t1;
      }
    },
    current() {
      var exception, t1, path, lastIndex, uri = null;
      try {
        uri = A.Uri_base();
      } catch (exception) {
        if (type$.Exception._is(A.unwrapException(exception))) {
          t1 = $._current;
          if (t1 != null)
            return t1;
          throw exception;
        } else
          throw exception;
      }
      if (J.$eq$(uri, $._currentUriBase)) {
        t1 = $._current;
        t1.toString;
        return t1;
      }
      $._currentUriBase = uri;
      if ($.$get$Style_platform() === $.$get$Style_url())
        t1 = $._current = uri.resolve$1(".").toString$0(0);
      else {
        path = uri.toFilePath$0();
        t1 = path.length;
        lastIndex = t1 - 1;
        if (!(lastIndex >= 0))
          return A.ioore(path, lastIndex);
        t1 = path[lastIndex];
        A.assertHelper(t1 === "/" || t1 === "\\");
        t1 = $._current = lastIndex === 0 ? path : B.JSString_methods.substring$2(path, 0, lastIndex);
      }
      return t1;
    },
    isAlphabetic(char) {
      var t1;
      if (!(char >= 65 && char <= 90))
        t1 = char >= 97 && char <= 122;
      else
        t1 = true;
      return t1;
    },
    driveLetterEnd(path, index) {
      var t2, t3, _null = null,
        t1 = path.length,
        index0 = index + 2;
      if (t1 < index0)
        return _null;
      if (!(index >= 0 && index < t1))
        return A.ioore(path, index);
      if (!A.isAlphabetic(path.charCodeAt(index)))
        return _null;
      t2 = index + 1;
      if (!(t2 < t1))
        return A.ioore(path, t2);
      if (path.charCodeAt(t2) !== 58) {
        t3 = index + 4;
        if (t1 < t3)
          return _null;
        if (B.JSString_methods.substring$2(path, t2, t3).toLowerCase() !== "%3a")
          return _null;
        index = index0;
      }
      t2 = index + 2;
      if (t1 === t2)
        return t2;
      if (!(t2 >= 0 && t2 < t1))
        return A.ioore(path, t2);
      if (path.charCodeAt(t2) !== 47)
        return _null;
      return index + 3;
    },
    createExceptionRaw(bindings, db, returnCode, operation, previousStatement, statementArgs) {
      var t5, _null = null,
        t1 = db.bindings,
        t2 = db.db,
        t3 = t1.sqlite3,
        extendedCode = A._asInt(t3.sqlite3_extended_errcode(t2)),
        t4 = type$.nullable_JavaScriptFunction._as(t3.sqlite3_error_offset),
        _0_0 = t4 == null ? _null : A._asInt(A._asDouble(t4.call(null, t2)));
      if (_0_0 == null)
        _0_0 = -1;
      $label0$0: {
        if (_0_0 < 0) {
          t4 = _null;
          break $label0$0;
        }
        t4 = _0_0;
        break $label0$0;
      }
      t5 = bindings.bindings;
      return new A.SqliteException(A.WrappedMemory_readString(t1.memory, A._asInt(t3.sqlite3_errmsg(t2)), _null), A.WrappedMemory_readString(t5.memory, A._asInt(t5.sqlite3.sqlite3_errstr(extendedCode)), _null) + " (code " + extendedCode + ")", returnCode, t4, operation, previousStatement, statementArgs);
    },
    throwException(db, returnCode, operation, previousStatement, statementArgs) {
      throw A.wrapException(A.createExceptionRaw(db.bindings, db.database, returnCode, operation, previousStatement, statementArgs));
    },
    BigIntRangeCheck_get_checkRange(_this) {
      if (_this.compareTo$1(0, $.$get$bigIntMinValue64()) < 0 || _this.compareTo$1(0, $.$get$bigIntMaxValue64()) > 0)
        throw A.wrapException(A.Exception_Exception("BigInt value exceeds the range of 64 bits"));
      return _this;
    },
    ReadDartValue_read(_this) {
      var t4, $length,
        t1 = _this.bindings,
        t2 = _this.value,
        t3 = t1.sqlite3,
        _0_0 = A._asInt(t3.sqlite3_value_type(t2));
      $label0$0: {
        t4 = null;
        if (1 === _0_0) {
          t1 = A._asInt(A._asDouble(init.G.Number(type$.JavaScriptBigInt._as(t3.sqlite3_value_int64(t2)))));
          break $label0$0;
        }
        if (2 === _0_0) {
          t1 = A._asDouble(t3.sqlite3_value_double(t2));
          break $label0$0;
        }
        if (3 === _0_0) {
          $length = A._asInt(t3.sqlite3_value_bytes(t2));
          t1 = A.WrappedMemory_readString(t1.memory, A._asInt(t3.sqlite3_value_text(t2)), $length);
          break $label0$0;
        }
        if (4 === _0_0) {
          $length = A._asInt(t3.sqlite3_value_bytes(t2));
          t1 = A.WrappedMemory_copyRange(t1.memory, A._asInt(t3.sqlite3_value_blob(t2)), $length);
          break $label0$0;
        }
        t1 = t4;
        break $label0$0;
      }
      return t1;
    },
    GenerateFilename_randomFileName(_this, prefix) {
      var t1, i, t2,
        _s61_ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012346789";
      for (t1 = prefix, i = 0; i < 16; ++i, t1 = t2) {
        t2 = _this.nextInt$1(61);
        if (!(t2 < 61))
          return A.ioore(_s61_, t2);
        t2 = t1 + A.Primitives_stringFromCharCode(_s61_.charCodeAt(t2));
      }
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    ReadBlob_byteBuffer(_this) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.ByteBuffer),
        $async$returnValue;
      var $async$ReadBlob_byteBuffer = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(_this.arrayBuffer()), type$.NativeArrayBuffer), $async$ReadBlob_byteBuffer);
            case 3:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$ReadBlob_byteBuffer, $async$completer);
    },
    SharedArrayBuffer_asByteData(_this, offset, $length) {
      var t1 = type$.JavaScriptFunction._as(init.G.DataView),
        t2 = [_this];
      t2.push(offset);
      t2.push($length);
      return type$.NativeByteData._as(A.callConstructor(t1, t2, type$.JSObject));
    },
    SharedArrayBuffer_asUint8ListSlice(_this, offset, $length) {
      var t1 = type$.JavaScriptFunction._as(init.G.Uint8Array),
        t2 = [_this];
      t2.push(offset);
      t2.push($length);
      return type$.NativeUint8List._as(A.callConstructor(t1, t2, type$.JSObject));
    },
    Atomics_notify(typedArray, index) {
      init.G.Atomics.notify(typedArray, index, 1 / 0);
    },
    storageManager() {
      var $navigator = A._asJSObject(init.G.navigator);
      if ("storage" in $navigator)
        return A._asJSObject($navigator.storage);
      return null;
    },
    FileSystemSyncAccessHandleApi_readDart(_this, buffer, options) {
      var t1 = A._asInt(_this.read(buffer, options));
      return t1;
    },
    FileSystemSyncAccessHandleApi_writeDart(_this, buffer, options) {
      var t1 = A._asInt(_this.write(buffer, options));
      return t1;
    },
    FileSystemDirectoryHandleApi_remove(_this, $name) {
      return A.promiseToFuture(A._asJSObject(_this.removeEntry($name, {recursive: false})), type$.nullable_Object);
    },
    main() {
      var $self = init.G;
      if (A.JSAnyUtilityExtension_instanceOfString($self, "DedicatedWorkerGlobalScope"))
        new A.DedicatedDriftWorker($self, new A.Lock(), new A.DriftServerController(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.RunningWasmServer), null)).start$0();
      else if (A.JSAnyUtilityExtension_instanceOfString($self, "SharedWorkerGlobalScope"))
        new A.SharedDriftWorker($self, new A.DriftServerController(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.RunningWasmServer), null)).start$0();
      return null;
    }
  },
  B = {};
  var holders = [A, J, B];
  var $ = {};
  A.JS_CONST.prototype = {};
  J.Interceptor.prototype = {
    $eq(receiver, other) {
      return receiver === other;
    },
    get$hashCode(receiver) {
      return A.Primitives_objectHashCode(receiver);
    },
    toString$0(receiver) {
      return "Instance of '" + A.Primitives_objectTypeName(receiver) + "'";
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(A._instanceTypeFromConstructor(this));
    }
  };
  J.JSBool.prototype = {
    toString$0(receiver) {
      return String(receiver);
    },
    get$hashCode(receiver) {
      return receiver ? 519018 : 218159;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.bool);
    },
    $isTrustedGetRuntimeType: 1,
    $isbool: 1
  };
  J.JSNull.prototype = {
    $eq(receiver, other) {
      return null == other;
    },
    toString$0(receiver) {
      return "null";
    },
    get$hashCode(receiver) {
      return 0;
    },
    $isTrustedGetRuntimeType: 1,
    $isNull: 1
  };
  J.JavaScriptObject.prototype = {$isJSObject: 1};
  J.LegacyJavaScriptObject.prototype = {
    get$hashCode(receiver) {
      return 0;
    },
    toString$0(receiver) {
      return String(receiver);
    }
  };
  J.PlainJavaScriptObject.prototype = {};
  J.UnknownJavaScriptObject.prototype = {};
  J.JavaScriptFunction.prototype = {
    toString$0(receiver) {
      var dartClosure = receiver[$.$get$DART_CLOSURE_PROPERTY_NAME()];
      if (dartClosure == null)
        return this.super$LegacyJavaScriptObject$toString(receiver);
      return "JavaScript function for " + J.toString$0$(dartClosure);
    },
    $isFunction: 1
  };
  J.JavaScriptBigInt.prototype = {
    get$hashCode(receiver) {
      return 0;
    },
    toString$0(receiver) {
      return String(receiver);
    }
  };
  J.JavaScriptSymbol.prototype = {
    get$hashCode(receiver) {
      return 0;
    },
    toString$0(receiver) {
      return String(receiver);
    }
  };
  J.JSArray.prototype = {
    cast$1$0(receiver, $R) {
      return new A.CastList(receiver, A._arrayInstanceType(receiver)._eval$1("@<1>")._bind$1($R)._eval$1("CastList<1,2>"));
    },
    add$1(receiver, value) {
      A._arrayInstanceType(receiver)._precomputed1._as(value);
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, 29);
      receiver.push(value);
    },
    removeAt$1(receiver, index) {
      var t1;
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "removeAt", 1);
      t1 = receiver.length;
      if (index >= t1)
        throw A.wrapException(A.RangeError$value(index, null));
      return receiver.splice(index, 1)[0];
    },
    insert$2(receiver, index, value) {
      var t1;
      A._arrayInstanceType(receiver)._precomputed1._as(value);
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "insert", 2);
      t1 = receiver.length;
      if (index > t1)
        throw A.wrapException(A.RangeError$value(index, null));
      receiver.splice(index, 0, value);
    },
    insertAll$2(receiver, index, iterable) {
      var insertionLength, end;
      A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(iterable);
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "insertAll", 2);
      A.RangeError_checkValueInInterval(index, 0, receiver.length, "index");
      if (!type$.EfficientLengthIterable_dynamic._is(iterable))
        iterable = J.toList$0$ax(iterable);
      insertionLength = J.get$length$asx(iterable);
      this._setLengthUnsafe$1(receiver, receiver.length + insertionLength);
      end = index + insertionLength;
      this.setRange$4(receiver, end, receiver.length, receiver, index);
      this.setRange$3(receiver, index, end, iterable);
    },
    removeLast$0(receiver) {
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "removeLast", 1);
      if (receiver.length === 0)
        throw A.wrapException(A.diagnoseIndexError(receiver, -1));
      return receiver.pop();
    },
    remove$1(receiver, element) {
      var i;
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "remove", 1);
      for (i = 0; i < receiver.length; ++i)
        if (J.$eq$(receiver[i], element)) {
          receiver.splice(i, 1);
          return true;
        }
      return false;
    },
    addAll$1(receiver, collection) {
      var i, t1, e, i0;
      A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(collection);
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "addAll", 2);
      if (Array.isArray(collection)) {
        this._addAllFromArray$1(receiver, collection);
        return;
      }
      i = receiver.length;
      for (t1 = J.get$iterator$ax(collection); t1.moveNext$0(); i = i0) {
        e = t1.get$current();
        i0 = i + 1;
        A.assertHelper(i === receiver.length || A.throwExpression(A.ConcurrentModificationError$(receiver)));
        receiver.push(e);
      }
    },
    _addAllFromArray$1(receiver, array) {
      var len, i;
      type$.JSArray_dynamic._as(array);
      len = array.length;
      if (len === 0)
        return;
      if (receiver === array)
        throw A.wrapException(A.ConcurrentModificationError$(receiver));
      for (i = 0; i < len; ++i)
        receiver.push(array[i]);
    },
    clear$0(receiver) {
      receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "clear", "clear");
      this._setLengthUnsafe$1(receiver, 0);
    },
    forEach$1(receiver, f) {
      var end, i;
      A._arrayInstanceType(receiver)._eval$1("~(1)")._as(f);
      end = receiver.length;
      for (i = 0; i < end; ++i) {
        f.call$1(receiver[i]);
        if (receiver.length !== end)
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
    },
    map$1$1(receiver, f, $T) {
      var t1 = A._arrayInstanceType(receiver);
      return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(2)")._as(f), t1._eval$1("@<1>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
    },
    join$1(receiver, separator) {
      var i,
        list = A.List_List$filled(receiver.length, "", false, type$.String);
      for (i = 0; i < receiver.length; ++i)
        this.$indexSet(list, i, A.S(receiver[i]));
      return list.join(separator);
    },
    join$0(receiver) {
      return this.join$1(receiver, "");
    },
    take$1(receiver, n) {
      return A.SubListIterable$(receiver, 0, A.checkNotNullable(n, "count", type$.int), A._arrayInstanceType(receiver)._precomputed1);
    },
    skip$1(receiver, n) {
      return A.SubListIterable$(receiver, n, null, A._arrayInstanceType(receiver)._precomputed1);
    },
    elementAt$1(receiver, index) {
      if (!(index >= 0 && index < receiver.length))
        return A.ioore(receiver, index);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      var t1 = receiver.length;
      if (start > t1)
        throw A.wrapException(A.RangeError$range(start, 0, t1, "start", null));
      if (end < start || end > t1)
        throw A.wrapException(A.RangeError$range(end, start, t1, "end", null));
      if (start === end)
        return A._setArrayType([], A._arrayInstanceType(receiver));
      return A._setArrayType(receiver.slice(start, end), A._arrayInstanceType(receiver));
    },
    getRange$2(receiver, start, end) {
      A.RangeError_checkValidRange(start, end, receiver.length);
      return A.SubListIterable$(receiver, start, end, A._arrayInstanceType(receiver)._precomputed1);
    },
    get$first(receiver) {
      if (receiver.length > 0)
        return receiver[0];
      throw A.wrapException(A.IterableElementError_noElement());
    },
    get$last(receiver) {
      var t1 = receiver.length;
      if (t1 > 0)
        return receiver[t1 - 1];
      throw A.wrapException(A.IterableElementError_noElement());
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      var $length, otherList, otherStart, t1, i;
      A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(iterable);
      receiver.$flags & 2 && A.throwUnsupportedOperation(receiver, 5);
      A.RangeError_checkValidRange(start, end, receiver.length);
      $length = end - start;
      if ($length === 0)
        return;
      A.RangeError_checkNotNegative(skipCount, "skipCount");
      if (type$.List_dynamic._is(iterable)) {
        otherList = iterable;
        otherStart = skipCount;
      } else {
        otherList = J.skip$1$ax(iterable, skipCount).toList$1$growable(0, false);
        otherStart = 0;
      }
      t1 = J.getInterceptor$asx(otherList);
      if (otherStart + $length > t1.get$length(otherList))
        throw A.wrapException(A.IterableElementError_tooFew());
      if (otherStart < start)
        for (i = $length - 1; i >= 0; --i)
          receiver[start + i] = t1.$index(otherList, otherStart + i);
      else
        for (i = 0; i < $length; ++i)
          receiver[start + i] = t1.$index(otherList, otherStart + i);
    },
    setRange$3(receiver, start, end, iterable) {
      return this.setRange$4(receiver, start, end, iterable, 0);
    },
    every$1(receiver, test) {
      var end, i;
      A._arrayInstanceType(receiver)._eval$1("bool(1)")._as(test);
      end = receiver.length;
      for (i = 0; i < end; ++i) {
        if (!test.call$1(receiver[i]))
          return false;
        if (receiver.length !== end)
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      return true;
    },
    sort$1(receiver, compare) {
      var len, a, b, undefineds, i,
        t1 = A._arrayInstanceType(receiver);
      t1._eval$1("int(1,1)?")._as(compare);
      receiver.$flags & 2 && A.throwUnsupportedOperation(receiver, "sort");
      len = receiver.length;
      if (len < 2)
        return;
      if (compare == null)
        compare = J._interceptors_JSArray__compareAny$closure();
      if (len === 2) {
        a = receiver[0];
        b = receiver[1];
        t1 = compare.call$2(a, b);
        if (typeof t1 !== "number")
          return t1.$gt();
        if (t1 > 0) {
          receiver[0] = b;
          receiver[1] = a;
        }
        return;
      }
      undefineds = 0;
      if (t1._precomputed1._is(null))
        for (i = 0; i < receiver.length; ++i)
          if (receiver[i] === void 0) {
            receiver[i] = null;
            ++undefineds;
          }
      receiver.sort(A.convertDartClosureToJS(compare, 2));
      if (undefineds > 0)
        this._replaceSomeNullsWithUndefined$1(receiver, undefineds);
    },
    sort$0(receiver) {
      return this.sort$1(receiver, null);
    },
    _replaceSomeNullsWithUndefined$1(receiver, count) {
      var i, i0;
      A.assertHelper(count > 0);
      i = receiver.length;
      for (; i0 = i - 1, i > 0; i = i0)
        if (receiver[i0] === null) {
          receiver[i0] = void 0;
          --count;
          if (count === 0)
            break;
        }
    },
    lastIndexOf$1(receiver, element) {
      var i,
        t1 = receiver.length,
        start = t1 - 1;
      if (start < 0)
        return -1;
      start < t1;
      for (i = start; i >= 0; --i) {
        if (!(i < receiver.length))
          return A.ioore(receiver, i);
        if (J.$eq$(receiver[i], element))
          return i;
      }
      return -1;
    },
    get$isEmpty(receiver) {
      return receiver.length === 0;
    },
    toString$0(receiver) {
      return A.Iterable_iterableToFullString(receiver, "[", "]");
    },
    toList$1$growable(receiver, growable) {
      var t1 = A._setArrayType(receiver.slice(0), A._arrayInstanceType(receiver));
      return t1;
    },
    toList$0(receiver) {
      return this.toList$1$growable(receiver, true);
    },
    get$iterator(receiver) {
      return new J.ArrayIterator(receiver, receiver.length, A._arrayInstanceType(receiver)._eval$1("ArrayIterator<1>"));
    },
    get$hashCode(receiver) {
      return A.Primitives_objectHashCode(receiver);
    },
    get$length(receiver) {
      return receiver.length;
    },
    _setLengthUnsafe$1(receiver, newLength) {
      if (A.assertTest(newLength >= 0))
        A.assertThrow(A.throwExpression(A.RangeError$range(newLength, 0, null, "newLength", null)));
      receiver.length = newLength;
    },
    $index(receiver, index) {
      if (!(index >= 0 && index < receiver.length))
        throw A.wrapException(A.diagnoseIndexError(receiver, index));
      return receiver[index];
    },
    $indexSet(receiver, index, value) {
      A._arrayInstanceType(receiver)._precomputed1._as(value);
      receiver.$flags & 2 && A.throwUnsupportedOperation(receiver);
      if (!(index >= 0 && index < receiver.length))
        throw A.wrapException(A.diagnoseIndexError(receiver, index));
      receiver[index] = value;
    },
    $isJSIndexable: 1,
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  J.JSArraySafeToStringHook.prototype = {
    tryFormat$1(array) {
      var flags, info, base;
      if (!Array.isArray(array))
        return null;
      flags = array.$flags | 0;
      if ((flags & 4) !== 0)
        info = "const, ";
      else if ((flags & 2) !== 0)
        info = "unmodifiable, ";
      else
        info = (flags & 1) !== 0 ? "fixed, " : "";
      base = "Instance of '" + A.Primitives_objectTypeName(array) + "'";
      if (info === "")
        return base;
      return base + " (" + info + "length: " + array.length + ")";
    }
  };
  J.JSUnmodifiableArray.prototype = {};
  J.ArrayIterator.prototype = {
    get$current() {
      var t1 = this._current;
      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var t2, _this = this,
        t1 = _this._iterable,
        $length = t1.length;
      if (_this._length !== $length) {
        t1 = A.throwConcurrentModificationError(t1);
        throw A.wrapException(t1);
      }
      t2 = _this._index;
      if (t2 >= $length) {
        _this._current = null;
        return false;
      }
      _this._current = t1[t2];
      _this._index = t2 + 1;
      return true;
    },
    $isIterator: 1
  };
  J.JSNumber.prototype = {
    compareTo$1(receiver, b) {
      var bIsNegative;
      A._asNum(b);
      if (receiver < b)
        return -1;
      else if (receiver > b)
        return 1;
      else if (receiver === b) {
        if (receiver === 0) {
          bIsNegative = this.get$isNegative(b);
          if (this.get$isNegative(receiver) === bIsNegative)
            return 0;
          if (this.get$isNegative(receiver))
            return -1;
          return 1;
        }
        return 0;
      } else if (isNaN(receiver)) {
        if (isNaN(b))
          return 0;
        return 1;
      } else
        return -1;
    },
    get$isNegative(receiver) {
      return receiver === 0 ? 1 / receiver < 0 : receiver < 0;
    },
    toInt$0(receiver) {
      var t1;
      if (receiver >= -2147483648 && receiver <= 2147483647)
        return receiver | 0;
      if (isFinite(receiver)) {
        t1 = receiver < 0 ? Math.ceil(receiver) : Math.floor(receiver);
        return t1 + 0;
      }
      throw A.wrapException(A.UnsupportedError$("" + receiver + ".toInt()"));
    },
    ceil$0(receiver) {
      var truncated, d;
      if (receiver >= 0) {
        if (receiver <= 2147483647) {
          truncated = receiver | 0;
          return receiver === truncated ? truncated : truncated + 1;
        }
      } else if (receiver >= -2147483648)
        return receiver | 0;
      d = Math.ceil(receiver);
      if (isFinite(d))
        return d;
      throw A.wrapException(A.UnsupportedError$("" + receiver + ".ceil()"));
    },
    toString$0(receiver) {
      if (receiver === 0 && 1 / receiver < 0)
        return "-0.0";
      else
        return "" + receiver;
    },
    get$hashCode(receiver) {
      var absolute, floorLog2, factor, scaled,
        intValue = receiver | 0;
      if (receiver === intValue)
        return intValue & 536870911;
      absolute = Math.abs(receiver);
      floorLog2 = Math.log(absolute) / 0.6931471805599453 | 0;
      factor = Math.pow(2, floorLog2);
      scaled = absolute < 1 ? absolute / factor : factor / absolute;
      return ((scaled * 9007199254740992 | 0) + (scaled * 3542243181176521 | 0)) * 599197 + floorLog2 * 1259 & 536870911;
    },
    $mod(receiver, other) {
      var result = receiver % other;
      if (result === 0)
        return 0;
      if (result > 0)
        return result;
      return result + other;
    },
    $tdiv(receiver, other) {
      if ((receiver | 0) === receiver)
        if (other >= 1 || other < -1)
          return receiver / other | 0;
      return this._tdivSlow$1(receiver, other);
    },
    _tdivFast$1(receiver, other) {
      return (receiver | 0) === receiver ? receiver / other | 0 : this._tdivSlow$1(receiver, other);
    },
    _tdivSlow$1(receiver, other) {
      var quotient = receiver / other;
      if (quotient >= -2147483648 && quotient <= 2147483647)
        return quotient | 0;
      if (quotient > 0) {
        if (quotient !== 1 / 0)
          return Math.floor(quotient);
      } else if (quotient > -1 / 0)
        return Math.ceil(quotient);
      throw A.wrapException(A.UnsupportedError$("Result of truncating division is " + A.S(quotient) + ": " + A.S(receiver) + " ~/ " + other));
    },
    $shl(receiver, other) {
      if (other < 0)
        throw A.wrapException(A.argumentErrorValue(other));
      return other > 31 ? 0 : receiver << other >>> 0;
    },
    $shr(receiver, other) {
      var t1;
      if (other < 0)
        throw A.wrapException(A.argumentErrorValue(other));
      if (receiver > 0)
        t1 = this._shrBothPositive$1(receiver, other);
      else {
        t1 = other > 31 ? 31 : other;
        t1 = receiver >> t1 >>> 0;
      }
      return t1;
    },
    _shrOtherPositive$1(receiver, other) {
      var t1;
      if (receiver > 0)
        t1 = this._shrBothPositive$1(receiver, other);
      else {
        t1 = other > 31 ? 31 : other;
        t1 = receiver >> t1 >>> 0;
      }
      return t1;
    },
    _shrReceiverPositive$1(receiver, other) {
      if (0 > other)
        throw A.wrapException(A.argumentErrorValue(other));
      return this._shrBothPositive$1(receiver, other);
    },
    _shrBothPositive$1(receiver, other) {
      return other > 31 ? 0 : receiver >>> other;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.num);
    },
    $isComparable: 1,
    $isdouble: 1,
    $isnum: 1
  };
  J.JSInt.prototype = {
    get$bitLength(receiver) {
      var wordBits,
        t1 = receiver < 0 ? -receiver - 1 : receiver,
        nonneg = t1;
      for (wordBits = 32; nonneg >= 4294967296;) {
        nonneg = this._tdivFast$1(nonneg, 4294967296);
        wordBits += 32;
      }
      return wordBits - Math.clz32(nonneg);
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.int);
    },
    $isTrustedGetRuntimeType: 1,
    $isint: 1
  };
  J.JSNumNotInt.prototype = {
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.double);
    },
    $isTrustedGetRuntimeType: 1
  };
  J.JSString.prototype = {
    codeUnitAt$1(receiver, index) {
      if (index < 0)
        throw A.wrapException(A.diagnoseIndexError(receiver, index));
      if (index >= receiver.length)
        A.throwExpression(A.diagnoseIndexError(receiver, index));
      return receiver.charCodeAt(index);
    },
    allMatches$2(receiver, string, start) {
      var t1 = string.length;
      if (start > t1)
        throw A.wrapException(A.RangeError$range(start, 0, t1, null, null));
      return new A._StringAllMatchesIterable(string, receiver, start);
    },
    allMatches$1(receiver, string) {
      return this.allMatches$2(receiver, string, 0);
    },
    matchAsPrefix$2(receiver, string, start) {
      var t1, t2, i, t3, _null = null;
      if (start < 0 || start > string.length)
        throw A.wrapException(A.RangeError$range(start, 0, string.length, _null, _null));
      t1 = receiver.length;
      t2 = string.length;
      if (start + t1 > t2)
        return _null;
      for (i = 0; i < t1; ++i) {
        t3 = start + i;
        if (!(t3 >= 0 && t3 < t2))
          return A.ioore(string, t3);
        if (string.charCodeAt(t3) !== receiver.charCodeAt(i))
          return _null;
      }
      return new A.StringMatch(start, receiver);
    },
    endsWith$1(receiver, other) {
      var otherLength = other.length,
        t1 = receiver.length;
      if (otherLength > t1)
        return false;
      return other === this.substring$1(receiver, t1 - otherLength);
    },
    replaceFirst$2(receiver, from, to) {
      A.RangeError_checkValueInInterval(0, 0, receiver.length, "startIndex");
      return A.stringReplaceFirstUnchecked(receiver, from, to, 0);
    },
    split$1(receiver, pattern) {
      var t1;
      if (typeof pattern == "string")
        return A._setArrayType(receiver.split(pattern), type$.JSArray_String);
      else {
        if (pattern instanceof A.JSSyntaxRegExp) {
          t1 = pattern._hasCapturesCache;
          t1 = !(t1 == null ? pattern._hasCapturesCache = pattern._computeHasCaptures$0() : t1);
        } else
          t1 = false;
        if (t1)
          return A._setArrayType(receiver.split(pattern._nativeRegExp), type$.JSArray_String);
        else
          return this._defaultSplit$1(receiver, pattern);
      }
    },
    replaceRange$3(receiver, start, end, replacement) {
      var e = A.RangeError_checkValidRange(start, end, receiver.length);
      return A.stringReplaceRangeUnchecked(receiver, start, e, replacement);
    },
    _defaultSplit$1(receiver, pattern) {
      var t1, start, $length, match, matchStart, matchEnd,
        result = A._setArrayType([], type$.JSArray_String);
      for (t1 = J.allMatches$1$s(pattern, receiver), t1 = t1.get$iterator(t1), start = 0, $length = 1; t1.moveNext$0();) {
        match = t1.get$current();
        matchStart = match.get$start();
        matchEnd = match.get$end();
        $length = matchEnd - matchStart;
        if ($length === 0 && start === matchStart)
          continue;
        B.JSArray_methods.add$1(result, this.substring$2(receiver, start, matchStart));
        start = matchEnd;
      }
      if (start < receiver.length || $length > 0)
        B.JSArray_methods.add$1(result, this.substring$1(receiver, start));
      return result;
    },
    startsWith$2(receiver, pattern, index) {
      var endIndex;
      if (index < 0 || index > receiver.length)
        throw A.wrapException(A.RangeError$range(index, 0, receiver.length, null, null));
      if (typeof pattern == "string") {
        endIndex = index + pattern.length;
        if (endIndex > receiver.length)
          return false;
        return pattern === receiver.substring(index, endIndex);
      }
      return J.matchAsPrefix$2$s(pattern, receiver, index) != null;
    },
    startsWith$1(receiver, pattern) {
      return this.startsWith$2(receiver, pattern, 0);
    },
    substring$2(receiver, start, end) {
      return receiver.substring(start, A.RangeError_checkValidRange(start, end, receiver.length));
    },
    substring$1(receiver, start) {
      return this.substring$2(receiver, start, null);
    },
    trim$0(receiver) {
      var startIndex, t1, endIndex0,
        result = receiver.trim(),
        endIndex = result.length;
      if (endIndex === 0)
        return result;
      if (0 >= endIndex)
        return A.ioore(result, 0);
      if (result.charCodeAt(0) === 133) {
        startIndex = J.JSString__skipLeadingWhitespace(result, 1);
        if (startIndex === endIndex)
          return "";
      } else
        startIndex = 0;
      t1 = endIndex - 1;
      if (!(t1 >= 0))
        return A.ioore(result, t1);
      endIndex0 = result.charCodeAt(t1) === 133 ? J.JSString__skipTrailingWhitespace(result, t1) : endIndex;
      if (startIndex === 0 && endIndex0 === endIndex)
        return result;
      return result.substring(startIndex, endIndex0);
    },
    $mul(receiver, times) {
      var s, result;
      if (0 >= times)
        return "";
      if (times === 1 || receiver.length === 0)
        return receiver;
      if (times !== times >>> 0)
        throw A.wrapException(B.C_OutOfMemoryError);
      for (s = receiver, result = "";;) {
        if ((times & 1) === 1)
          result = s + result;
        times = times >>> 1;
        if (times === 0)
          break;
        s += s;
      }
      return result;
    },
    padLeft$2(receiver, width, padding) {
      var delta = width - receiver.length;
      if (delta <= 0)
        return receiver;
      return this.$mul(padding, delta) + receiver;
    },
    padRight$1(receiver, width) {
      var delta = width - receiver.length;
      if (delta <= 0)
        return receiver;
      return receiver + this.$mul(" ", delta);
    },
    indexOf$2(receiver, pattern, start) {
      var t1;
      if (start < 0 || start > receiver.length)
        throw A.wrapException(A.RangeError$range(start, 0, receiver.length, null, null));
      t1 = receiver.indexOf(pattern, start);
      return t1;
    },
    indexOf$1(receiver, pattern) {
      return this.indexOf$2(receiver, pattern, 0);
    },
    lastIndexOf$2(receiver, pattern, start) {
      var t1, t2;
      if (start == null)
        start = receiver.length;
      else if (start < 0 || start > receiver.length)
        throw A.wrapException(A.RangeError$range(start, 0, receiver.length, null, null));
      t1 = pattern.length;
      t2 = receiver.length;
      if (start + t1 > t2)
        start = t2 - t1;
      return receiver.lastIndexOf(pattern, start);
    },
    lastIndexOf$1(receiver, pattern) {
      return this.lastIndexOf$2(receiver, pattern, null);
    },
    contains$1(receiver, other) {
      return A.stringContainsUnchecked(receiver, other, 0);
    },
    compareTo$1(receiver, other) {
      var t1;
      A._asString(other);
      if (receiver === other)
        t1 = 0;
      else
        t1 = receiver < other ? -1 : 1;
      return t1;
    },
    toString$0(receiver) {
      return receiver;
    },
    get$hashCode(receiver) {
      var t1, hash, i;
      for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {
        hash = hash + receiver.charCodeAt(i) & 536870911;
        hash = hash + ((hash & 524287) << 10) & 536870911;
        hash ^= hash >> 6;
      }
      hash = hash + ((hash & 67108863) << 3) & 536870911;
      hash ^= hash >> 11;
      return hash + ((hash & 16383) << 15) & 536870911;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.String);
    },
    get$length(receiver) {
      return receiver.length;
    },
    $index(receiver, index) {
      if (!(index >= 0 && index < receiver.length))
        throw A.wrapException(A.diagnoseIndexError(receiver, index));
      return receiver[index];
    },
    $isJSIndexable: 1,
    $isTrustedGetRuntimeType: 1,
    $isComparable: 1,
    $isPattern: 1,
    $isString: 1
  };
  A._CastIterableBase.prototype = {
    get$iterator(_) {
      return new A.CastIterator(J.get$iterator$ax(this.get$_source()), A._instanceType(this)._eval$1("CastIterator<1,2>"));
    },
    get$length(_) {
      return J.get$length$asx(this.get$_source());
    },
    get$isEmpty(_) {
      return J.get$isEmpty$asx(this.get$_source());
    },
    skip$1(_, count) {
      var t1 = A._instanceType(this);
      return A.CastIterable_CastIterable(J.skip$1$ax(this.get$_source(), count), t1._precomputed1, t1._rest[1]);
    },
    take$1(_, count) {
      var t1 = A._instanceType(this);
      return A.CastIterable_CastIterable(J.take$1$ax(this.get$_source(), count), t1._precomputed1, t1._rest[1]);
    },
    elementAt$1(_, index) {
      return A._instanceType(this)._rest[1]._as(J.elementAt$1$ax(this.get$_source(), index));
    },
    get$first(_) {
      return A._instanceType(this)._rest[1]._as(J.get$first$ax(this.get$_source()));
    },
    get$last(_) {
      return A._instanceType(this)._rest[1]._as(J.get$last$ax(this.get$_source()));
    },
    toString$0(_) {
      return J.toString$0$(this.get$_source());
    }
  };
  A.CastIterator.prototype = {
    moveNext$0() {
      return this._source.moveNext$0();
    },
    get$current() {
      return this.$ti._rest[1]._as(this._source.get$current());
    },
    $isIterator: 1
  };
  A.CastIterable.prototype = {
    get$_source() {
      return this._source;
    }
  };
  A._EfficientLengthCastIterable.prototype = {$isEfficientLengthIterable: 1};
  A._CastListBase.prototype = {
    $index(_, index) {
      return this.$ti._rest[1]._as(J.$index$asx(this._source, index));
    },
    $indexSet(_, index, value) {
      var t1 = this.$ti;
      J.$indexSet$ax(this._source, index, t1._precomputed1._as(t1._rest[1]._as(value)));
    },
    getRange$2(_, start, end) {
      var t1 = this.$ti;
      return A.CastIterable_CastIterable(J.getRange$2$ax(this._source, start, end), t1._precomputed1, t1._rest[1]);
    },
    setRange$4(_, start, end, iterable, skipCount) {
      var t1 = this.$ti;
      J.setRange$4$ax(this._source, start, end, A.CastIterable_CastIterable(t1._eval$1("Iterable<2>")._as(iterable), t1._rest[1], t1._precomputed1), skipCount);
    },
    setRange$3(_, start, end, iterable) {
      return this.setRange$4(0, start, end, iterable, 0);
    },
    $isEfficientLengthIterable: 1,
    $isList: 1
  };
  A.CastList.prototype = {
    cast$1$0(_, $R) {
      return new A.CastList(this._source, this.$ti._eval$1("@<1>")._bind$1($R)._eval$1("CastList<1,2>"));
    },
    get$_source() {
      return this._source;
    }
  };
  A.LateError.prototype = {
    toString$0(_) {
      return "LateInitializationError: " + this.__internal$_message;
    }
  };
  A.CodeUnits.prototype = {
    get$length(_) {
      return this._string.length;
    },
    $index(_, i) {
      var t1 = this._string;
      if (!(i >= 0 && i < t1.length))
        return A.ioore(t1, i);
      return t1.charCodeAt(i);
    }
  };
  A.nullFuture_closure.prototype = {
    call$0() {
      return A.Future_Future$value(null, type$.void);
    },
    $signature: 2
  };
  A.SentinelValue.prototype = {};
  A.EfficientLengthIterable.prototype = {};
  A.ListIterable.prototype = {
    get$iterator(_) {
      var _this = this;
      return new A.ListIterator(_this, _this.get$length(_this), A._instanceType(_this)._eval$1("ListIterator<ListIterable.E>"));
    },
    get$isEmpty(_) {
      return this.get$length(this) === 0;
    },
    get$first(_) {
      if (this.get$length(this) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return this.elementAt$1(0, 0);
    },
    get$last(_) {
      var _this = this;
      if (_this.get$length(_this) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return _this.elementAt$1(0, _this.get$length(_this) - 1);
    },
    join$1(_, separator) {
      var first, t1, i, _this = this,
        $length = _this.get$length(_this);
      if (separator.length !== 0) {
        if ($length === 0)
          return "";
        first = A.S(_this.elementAt$1(0, 0));
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
        for (t1 = first, i = 1; i < $length; ++i) {
          t1 = t1 + separator + A.S(_this.elementAt$1(0, i));
          if ($length !== _this.get$length(_this))
            throw A.wrapException(A.ConcurrentModificationError$(_this));
        }
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      } else {
        for (i = 0, t1 = ""; i < $length; ++i) {
          t1 += A.S(_this.elementAt$1(0, i));
          if ($length !== _this.get$length(_this))
            throw A.wrapException(A.ConcurrentModificationError$(_this));
        }
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      }
    },
    join$0(_) {
      return this.join$1(0, "");
    },
    map$1$1(_, toElement, $T) {
      var t1 = A._instanceType(this);
      return new A.MappedListIterable(this, t1._bind$1($T)._eval$1("1(ListIterable.E)")._as(toElement), t1._eval$1("@<ListIterable.E>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
    },
    fold$1$2(_, initialValue, combine, $T) {
      var $length, value, i, _this = this;
      $T._as(initialValue);
      A._instanceType(_this)._bind$1($T)._eval$1("1(1,ListIterable.E)")._as(combine);
      $length = _this.get$length(_this);
      for (value = initialValue, i = 0; i < $length; ++i) {
        value = combine.call$2(value, _this.elementAt$1(0, i));
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return value;
    },
    skip$1(_, count) {
      return A.SubListIterable$(this, count, null, A._instanceType(this)._eval$1("ListIterable.E"));
    },
    take$1(_, count) {
      return A.SubListIterable$(this, 0, A.checkNotNullable(count, "count", type$.int), A._instanceType(this)._eval$1("ListIterable.E"));
    },
    toList$1$growable(_, growable) {
      var t1 = A.List_List$_of(this, A._instanceType(this)._eval$1("ListIterable.E"));
      return t1;
    },
    toList$0(_) {
      return this.toList$1$growable(0, true);
    }
  };
  A.SubListIterable.prototype = {
    SubListIterable$3(_iterable, _start, _endOrLength, $E) {
      var endOrLength,
        t1 = this._start;
      A.RangeError_checkNotNegative(t1, "start");
      endOrLength = this._endOrLength;
      if (endOrLength != null) {
        A.RangeError_checkNotNegative(endOrLength, "end");
        if (t1 > endOrLength)
          throw A.wrapException(A.RangeError$range(t1, 0, endOrLength, "start", null));
      }
    },
    get$_endIndex() {
      var $length = J.get$length$asx(this.__internal$_iterable),
        endOrLength = this._endOrLength;
      if (endOrLength == null || endOrLength > $length)
        return $length;
      return endOrLength;
    },
    get$_startIndex() {
      var $length = J.get$length$asx(this.__internal$_iterable),
        t1 = this._start;
      if (t1 > $length)
        return $length;
      return t1;
    },
    get$length(_) {
      var endOrLength,
        $length = J.get$length$asx(this.__internal$_iterable),
        t1 = this._start;
      if (t1 >= $length)
        return 0;
      endOrLength = this._endOrLength;
      if (endOrLength == null || endOrLength >= $length)
        return $length - t1;
      return endOrLength - t1;
    },
    elementAt$1(_, index) {
      var _this = this,
        realIndex = _this.get$_startIndex() + index;
      if (index < 0 || realIndex >= _this.get$_endIndex())
        throw A.wrapException(A.IndexError$withLength(index, _this.get$length(0), _this, null, "index"));
      return J.elementAt$1$ax(_this.__internal$_iterable, realIndex);
    },
    skip$1(_, count) {
      var newStart, endOrLength, _this = this;
      A.RangeError_checkNotNegative(count, "count");
      newStart = _this._start + count;
      endOrLength = _this._endOrLength;
      if (endOrLength != null && newStart >= endOrLength)
        return new A.EmptyIterable(_this.$ti._eval$1("EmptyIterable<1>"));
      return A.SubListIterable$(_this.__internal$_iterable, newStart, endOrLength, _this.$ti._precomputed1);
    },
    take$1(_, count) {
      var endOrLength, t1, newEnd, _this = this;
      A.RangeError_checkNotNegative(count, "count");
      endOrLength = _this._endOrLength;
      t1 = _this._start;
      newEnd = t1 + count;
      if (endOrLength == null)
        return A.SubListIterable$(_this.__internal$_iterable, t1, newEnd, _this.$ti._precomputed1);
      else {
        if (endOrLength < newEnd)
          return _this;
        return A.SubListIterable$(_this.__internal$_iterable, t1, newEnd, _this.$ti._precomputed1);
      }
    },
    toList$1$growable(_, growable) {
      var $length, result, i, _this = this,
        start = _this._start,
        t1 = _this.__internal$_iterable,
        t2 = J.getInterceptor$asx(t1),
        end = t2.get$length(t1),
        endOrLength = _this._endOrLength;
      if (endOrLength != null && endOrLength < end)
        end = endOrLength;
      $length = end - start;
      if ($length <= 0) {
        t1 = J.JSArray_JSArray$fixed(0, _this.$ti._precomputed1);
        return t1;
      }
      result = A.List_List$filled($length, t2.elementAt$1(t1, start), false, _this.$ti._precomputed1);
      for (i = 1; i < $length; ++i) {
        B.JSArray_methods.$indexSet(result, i, t2.elementAt$1(t1, start + i));
        if (t2.get$length(t1) < end)
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return result;
    }
  };
  A.ListIterator.prototype = {
    get$current() {
      var t1 = this.__internal$_current;
      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var t3, _this = this,
        t1 = _this.__internal$_iterable,
        t2 = J.getInterceptor$asx(t1),
        $length = t2.get$length(t1);
      if (_this.__internal$_length !== $length)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      t3 = _this.__internal$_index;
      if (t3 >= $length) {
        _this.__internal$_current = null;
        return false;
      }
      _this.__internal$_current = t2.elementAt$1(t1, t3);
      ++_this.__internal$_index;
      return true;
    },
    $isIterator: 1
  };
  A.MappedIterable.prototype = {
    get$iterator(_) {
      var t1 = this.__internal$_iterable;
      return new A.MappedIterator(t1.get$iterator(t1), this._f, A._instanceType(this)._eval$1("MappedIterator<1,2>"));
    },
    get$length(_) {
      var t1 = this.__internal$_iterable;
      return t1.get$length(t1);
    },
    get$isEmpty(_) {
      var t1 = this.__internal$_iterable;
      return t1.get$isEmpty(t1);
    },
    get$first(_) {
      var t1 = this.__internal$_iterable;
      return this._f.call$1(t1.get$first(t1));
    },
    get$last(_) {
      var t1 = this.__internal$_iterable;
      return this._f.call$1(t1.get$last(t1));
    },
    elementAt$1(_, index) {
      var t1 = this.__internal$_iterable;
      return this._f.call$1(t1.elementAt$1(t1, index));
    }
  };
  A.EfficientLengthMappedIterable.prototype = {$isEfficientLengthIterable: 1};
  A.MappedIterator.prototype = {
    moveNext$0() {
      var _this = this,
        t1 = _this._iterator;
      if (t1.moveNext$0()) {
        _this.__internal$_current = _this._f.call$1(t1.get$current());
        return true;
      }
      _this.__internal$_current = null;
      return false;
    },
    get$current() {
      var t1 = this.__internal$_current;
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    $isIterator: 1
  };
  A.MappedListIterable.prototype = {
    get$length(_) {
      return J.get$length$asx(this._source);
    },
    elementAt$1(_, index) {
      return this._f.call$1(J.elementAt$1$ax(this._source, index));
    }
  };
  A.WhereIterable.prototype = {
    get$iterator(_) {
      return new A.WhereIterator(J.get$iterator$ax(this.__internal$_iterable), this._f, this.$ti._eval$1("WhereIterator<1>"));
    },
    map$1$1(_, toElement, $T) {
      var t1 = this.$ti;
      return new A.MappedIterable(this, t1._bind$1($T)._eval$1("1(2)")._as(toElement), t1._eval$1("@<1>")._bind$1($T)._eval$1("MappedIterable<1,2>"));
    }
  };
  A.WhereIterator.prototype = {
    moveNext$0() {
      var t1, t2;
      for (t1 = this._iterator, t2 = this._f; t1.moveNext$0();)
        if (t2.call$1(t1.get$current()))
          return true;
      return false;
    },
    get$current() {
      return this._iterator.get$current();
    },
    $isIterator: 1
  };
  A.ExpandIterable.prototype = {
    get$iterator(_) {
      return new A.ExpandIterator(J.get$iterator$ax(this.__internal$_iterable), this._f, B.C_EmptyIterator, this.$ti._eval$1("ExpandIterator<1,2>"));
    }
  };
  A.ExpandIterator.prototype = {
    get$current() {
      var t1 = this.__internal$_current;
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    moveNext$0() {
      var t2, t3, _this = this,
        t1 = _this._currentExpansion;
      if (t1 == null)
        return false;
      for (t2 = _this._iterator, t3 = _this._f; !t1.moveNext$0();) {
        _this.__internal$_current = null;
        if (t2.moveNext$0()) {
          _this._currentExpansion = null;
          t1 = J.get$iterator$ax(t3.call$1(t2.get$current()));
          _this._currentExpansion = t1;
        } else
          return false;
      }
      _this.__internal$_current = _this._currentExpansion.get$current();
      return true;
    },
    $isIterator: 1
  };
  A.TakeIterable.prototype = {
    get$iterator(_) {
      var t2,
        t1 = this.__internal$_iterable;
      t1 = t1.get$iterator(t1);
      t2 = this._takeCount;
      A.assertHelper(t2 >= 0);
      return new A.TakeIterator(t1, t2, A._instanceType(this)._eval$1("TakeIterator<1>"));
    }
  };
  A.EfficientLengthTakeIterable.prototype = {
    get$length(_) {
      var t1 = this.__internal$_iterable,
        iterableLength = t1.get$length(t1);
      t1 = this._takeCount;
      if (iterableLength > t1)
        return t1;
      return iterableLength;
    },
    $isEfficientLengthIterable: 1
  };
  A.TakeIterator.prototype = {
    moveNext$0() {
      if (--this._remaining >= 0)
        return this._iterator.moveNext$0();
      this._remaining = -1;
      return false;
    },
    get$current() {
      if (this._remaining < 0) {
        this.$ti._precomputed1._as(null);
        return null;
      }
      return this._iterator.get$current();
    },
    $isIterator: 1
  };
  A.SkipIterable.prototype = {
    skip$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count", type$.int);
      A.RangeError_checkNotNegative(count, "count");
      return new A.SkipIterable(this.__internal$_iterable, this._skipCount + count, A._instanceType(this)._eval$1("SkipIterable<1>"));
    },
    get$iterator(_) {
      var t2,
        t1 = this.__internal$_iterable;
      t1 = t1.get$iterator(t1);
      t2 = this._skipCount;
      A.assertHelper(t2 >= 0);
      return new A.SkipIterator(t1, t2, A._instanceType(this)._eval$1("SkipIterator<1>"));
    }
  };
  A.EfficientLengthSkipIterable.prototype = {
    get$length(_) {
      var t1 = this.__internal$_iterable,
        $length = t1.get$length(t1) - this._skipCount;
      if ($length >= 0)
        return $length;
      return 0;
    },
    skip$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count", type$.int);
      A.RangeError_checkNotNegative(count, "count");
      return new A.EfficientLengthSkipIterable(this.__internal$_iterable, this._skipCount + count, this.$ti);
    },
    $isEfficientLengthIterable: 1
  };
  A.SkipIterator.prototype = {
    moveNext$0() {
      var t1, i;
      for (t1 = this._iterator, i = 0; i < this._skipCount; ++i)
        t1.moveNext$0();
      this._skipCount = 0;
      return t1.moveNext$0();
    },
    get$current() {
      return this._iterator.get$current();
    },
    $isIterator: 1
  };
  A.SkipWhileIterable.prototype = {
    get$iterator(_) {
      return new A.SkipWhileIterator(J.get$iterator$ax(this.__internal$_iterable), this._f, this.$ti._eval$1("SkipWhileIterator<1>"));
    }
  };
  A.SkipWhileIterator.prototype = {
    moveNext$0() {
      var t1, t2, _this = this;
      if (!_this._hasSkipped) {
        _this._hasSkipped = true;
        for (t1 = _this._iterator, t2 = _this._f; t1.moveNext$0();)
          if (!t2.call$1(t1.get$current()))
            return true;
      }
      return _this._iterator.moveNext$0();
    },
    get$current() {
      return this._iterator.get$current();
    },
    $isIterator: 1
  };
  A.EmptyIterable.prototype = {
    get$iterator(_) {
      return B.C_EmptyIterator;
    },
    get$isEmpty(_) {
      return true;
    },
    get$length(_) {
      return 0;
    },
    get$first(_) {
      throw A.wrapException(A.IterableElementError_noElement());
    },
    get$last(_) {
      throw A.wrapException(A.IterableElementError_noElement());
    },
    elementAt$1(_, index) {
      throw A.wrapException(A.RangeError$range(index, 0, 0, "index", null));
    },
    map$1$1(_, toElement, $T) {
      this.$ti._bind$1($T)._eval$1("1(2)")._as(toElement);
      return new A.EmptyIterable($T._eval$1("EmptyIterable<0>"));
    },
    skip$1(_, count) {
      A.RangeError_checkNotNegative(count, "count");
      return this;
    },
    take$1(_, count) {
      A.RangeError_checkNotNegative(count, "count");
      return this;
    }
  };
  A.EmptyIterator.prototype = {
    moveNext$0() {
      return false;
    },
    get$current() {
      throw A.wrapException(A.IterableElementError_noElement());
    },
    $isIterator: 1
  };
  A.WhereTypeIterable.prototype = {
    get$iterator(_) {
      return new A.WhereTypeIterator(J.get$iterator$ax(this._source), this.$ti._eval$1("WhereTypeIterator<1>"));
    }
  };
  A.WhereTypeIterator.prototype = {
    moveNext$0() {
      var t1, t2;
      for (t1 = this._source, t2 = this.$ti._precomputed1; t1.moveNext$0();)
        if (t2._is(t1.get$current()))
          return true;
      return false;
    },
    get$current() {
      return this.$ti._precomputed1._as(this._source.get$current());
    },
    $isIterator: 1
  };
  A.IndexedIterable.prototype = {
    get$length(_) {
      return J.get$length$asx(this._source);
    },
    get$isEmpty(_) {
      return J.get$isEmpty$asx(this._source);
    },
    get$first(_) {
      return new A._Record_2(this._start, J.get$first$ax(this._source));
    },
    elementAt$1(_, index) {
      return new A._Record_2(index + this._start, J.elementAt$1$ax(this._source, index));
    },
    take$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count", type$.int);
      A.RangeError_checkNotNegative(count, "count");
      return new A.IndexedIterable(J.take$1$ax(this._source, count), this._start, A._instanceType(this)._eval$1("IndexedIterable<1>"));
    },
    skip$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count", type$.int);
      A.RangeError_checkNotNegative(count, "count");
      return new A.IndexedIterable(J.skip$1$ax(this._source, count), count + this._start, A._instanceType(this)._eval$1("IndexedIterable<1>"));
    },
    get$iterator(_) {
      return new A.IndexedIterator(J.get$iterator$ax(this._source), this._start, A._instanceType(this)._eval$1("IndexedIterator<1>"));
    }
  };
  A.EfficientLengthIndexedIterable.prototype = {
    get$last(_) {
      var last,
        t1 = this._source,
        t2 = J.getInterceptor$asx(t1),
        $length = t2.get$length(t1);
      if ($length <= 0)
        throw A.wrapException(A.IterableElementError_noElement());
      last = t2.get$last(t1);
      if ($length !== t2.get$length(t1))
        throw A.wrapException(A.ConcurrentModificationError$(this));
      return new A._Record_2($length - 1 + this._start, last);
    },
    take$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count", type$.int);
      A.RangeError_checkNotNegative(count, "count");
      return new A.EfficientLengthIndexedIterable(J.take$1$ax(this._source, count), this._start, this.$ti);
    },
    skip$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count", type$.int);
      A.RangeError_checkNotNegative(count, "count");
      return new A.EfficientLengthIndexedIterable(J.skip$1$ax(this._source, count), this._start + count, this.$ti);
    },
    $isEfficientLengthIterable: 1
  };
  A.IndexedIterator.prototype = {
    moveNext$0() {
      if (++this.__internal$_index >= 0 && this._source.moveNext$0())
        return true;
      this.__internal$_index = -2;
      return false;
    },
    get$current() {
      var t1 = this.__internal$_index;
      return t1 >= 0 ? new A._Record_2(this._start + t1, this._source.get$current()) : A.throwExpression(A.IterableElementError_noElement());
    },
    $isIterator: 1
  };
  A.FixedLengthListMixin.prototype = {};
  A.UnmodifiableListMixin.prototype = {
    $indexSet(_, index, value) {
      A._instanceType(this)._eval$1("UnmodifiableListMixin.E")._as(value);
      throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list"));
    },
    setRange$4(_, start, end, iterable, skipCount) {
      A._instanceType(this)._eval$1("Iterable<UnmodifiableListMixin.E>")._as(iterable);
      throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list"));
    },
    setRange$3(_, start, end, iterable) {
      return this.setRange$4(0, start, end, iterable, 0);
    }
  };
  A.UnmodifiableListBase.prototype = {};
  A.ReversedListIterable.prototype = {
    get$length(_) {
      return J.get$length$asx(this._source);
    },
    elementAt$1(_, index) {
      var t1 = this._source,
        t2 = J.getInterceptor$asx(t1);
      return t2.elementAt$1(t1, t2.get$length(t1) - 1 - index);
    }
  };
  A.Symbol.prototype = {
    get$hashCode(_) {
      var hash = this._hashCode;
      if (hash != null)
        return hash;
      hash = 664597 * B.JSString_methods.get$hashCode(this.__internal$_name) & 536870911;
      this._hashCode = hash;
      return hash;
    },
    toString$0(_) {
      return 'Symbol("' + this.__internal$_name + '")';
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.Symbol && this.__internal$_name === other.__internal$_name;
    }
  };
  A.__CastListBase__CastIterableBase_ListMixin.prototype = {};
  A._Record_2.prototype = {$recipe: "+(1,2)", $shape: 1};
  A._Record_2_file_outFlags.prototype = {$recipe: "+file,outFlags(1,2)", $shape: 2};
  A.ConstantMap.prototype = {
    toString$0(_) {
      return A.MapBase_mapToString(this);
    },
    get$entries() {
      return new A._SyncStarIterable(this.entries$body$ConstantMap(), A._instanceType(this)._eval$1("_SyncStarIterable<MapEntry<1,2>>"));
    },
    entries$body$ConstantMap() {
      var $async$self = this;
      return function() {
        var $async$goto = 0, $async$handler = 1, $async$errorStack = [], t1, t2, t3, key, t4;
        return function $async$get$entries($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$errorStack.push($async$result);
            $async$goto = $async$handler;
          }
          for (;;)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = $async$self.get$keys(), t1 = t1.get$iterator(t1), t2 = A._instanceType($async$self), t3 = t2._rest[1], t2 = t2._eval$1("MapEntry<1,2>");
              case 2:
                // for condition
                if (!t1.moveNext$0()) {
                  // goto after for
                  $async$goto = 3;
                  break;
                }
                key = t1.get$current();
                t4 = $async$self.$index(0, key);
                $async$goto = 4;
                return $async$iterator._async$_current = new A.MapEntry(key, t4 == null ? t3._as(t4) : t4, t2), 1;
              case 4:
                // after yield
                // goto for condition
                $async$goto = 2;
                break;
              case 3:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$errorStack.at(-1), 3;
            }
        };
      };
    },
    $isMap: 1
  };
  A.ConstantStringMap.prototype = {
    get$length(_) {
      return this._values.length;
    },
    get$__js_helper$_keys() {
      var keys = this.$keys;
      if (keys == null) {
        keys = Object.keys(this._jsIndex);
        this.$keys = keys;
      }
      return keys;
    },
    containsKey$1(key) {
      if (typeof key != "string")
        return false;
      if ("__proto__" === key)
        return false;
      return this._jsIndex.hasOwnProperty(key);
    },
    $index(_, key) {
      if (!this.containsKey$1(key))
        return null;
      return this._values[this._jsIndex[key]];
    },
    forEach$1(_, f) {
      var keys, values, t1, i;
      this.$ti._eval$1("~(1,2)")._as(f);
      keys = this.get$__js_helper$_keys();
      values = this._values;
      for (t1 = keys.length, i = 0; i < t1; ++i)
        f.call$2(keys[i], values[i]);
    },
    get$keys() {
      return new A._KeysOrValues(this.get$__js_helper$_keys(), this.$ti._eval$1("_KeysOrValues<1>"));
    },
    get$values() {
      return new A._KeysOrValues(this._values, this.$ti._eval$1("_KeysOrValues<2>"));
    }
  };
  A._KeysOrValues.prototype = {
    get$length(_) {
      return this._elements.length;
    },
    get$isEmpty(_) {
      return 0 === this._elements.length;
    },
    get$iterator(_) {
      var t1 = this._elements;
      return new A._KeysOrValuesOrElementsIterator(t1, t1.length, this.$ti._eval$1("_KeysOrValuesOrElementsIterator<1>"));
    }
  };
  A._KeysOrValuesOrElementsIterator.prototype = {
    get$current() {
      var t1 = this.__js_helper$_current;
      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var _this = this,
        t1 = _this.__js_helper$_index;
      if (t1 >= _this.__js_helper$_length) {
        _this.__js_helper$_current = null;
        return false;
      }
      _this.__js_helper$_current = _this._elements[t1];
      _this.__js_helper$_index = t1 + 1;
      return true;
    },
    $isIterator: 1
  };
  A.Instantiation.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.Instantiation1 && this._genericClosure.$eq(0, other._genericClosure) && A.getRuntimeTypeOfClosure(this) === A.getRuntimeTypeOfClosure(other);
    },
    get$hashCode(_) {
      return A.Object_hash(this._genericClosure, A.getRuntimeTypeOfClosure(this), B.C_SentinelValue, B.C_SentinelValue);
    },
    toString$0(_) {
      var t1 = B.JSArray_methods.join$1([A.createRuntimeType(this.$ti._precomputed1)], ", ");
      return this._genericClosure.toString$0(0) + " with " + ("<" + t1 + ">");
    }
  };
  A.Instantiation1.prototype = {
    call$2(a0, a1) {
      return this._genericClosure.call$1$2(a0, a1, this.$ti._rest[0]);
    },
    call$4(a0, a1, a2, a3) {
      return this._genericClosure.call$1$4(a0, a1, a2, a3, this.$ti._rest[0]);
    },
    $signature() {
      return A.instantiatedGenericFunctionType(A.closureFunctionType(this._genericClosure), this.$ti);
    }
  };
  A.SafeToStringHook.prototype = {};
  A.TypeErrorDecoder.prototype = {
    matchTypeError$1(message) {
      var result, t1, _this = this,
        match = new RegExp(_this._pattern).exec(message);
      if (match == null)
        return null;
      result = Object.create(null);
      t1 = _this._arguments;
      if (t1 !== -1)
        result.arguments = match[t1 + 1];
      t1 = _this._argumentsExpr;
      if (t1 !== -1)
        result.argumentsExpr = match[t1 + 1];
      t1 = _this._expr;
      if (t1 !== -1)
        result.expr = match[t1 + 1];
      t1 = _this._method;
      if (t1 !== -1)
        result.method = match[t1 + 1];
      t1 = _this._receiver;
      if (t1 !== -1)
        result.receiver = match[t1 + 1];
      return result;
    }
  };
  A.NullError.prototype = {
    toString$0(_) {
      return "Null check operator used on a null value";
    }
  };
  A.JsNoSuchMethodError.prototype = {
    toString$0(_) {
      var t2, _this = this,
        _s38_ = "NoSuchMethodError: method not found: '",
        t1 = _this._method;
      if (t1 == null)
        return "NoSuchMethodError: " + _this.__js_helper$_message;
      t2 = _this._receiver;
      if (t2 == null)
        return _s38_ + t1 + "' (" + _this.__js_helper$_message + ")";
      return _s38_ + t1 + "' on '" + t2 + "' (" + _this.__js_helper$_message + ")";
    }
  };
  A.UnknownJsTypeError.prototype = {
    toString$0(_) {
      var t1 = this.__js_helper$_message;
      return t1.length === 0 ? "Error" : "Error: " + t1;
    }
  };
  A.NullThrownFromJavaScriptException.prototype = {
    toString$0(_) {
      return "Throw of null ('" + (this._irritant === null ? "null" : "undefined") + "' from JavaScript)";
    },
    $isException: 1
  };
  A.ExceptionAndStackTrace.prototype = {};
  A._StackTrace.prototype = {
    toString$0(_) {
      var trace,
        t1 = this._trace;
      if (t1 != null)
        return t1;
      t1 = this._exception;
      trace = t1 !== null && typeof t1 === "object" ? t1.stack : null;
      return this._trace = trace == null ? "" : trace;
    },
    $isStackTrace: 1
  };
  A.Closure.prototype = {
    toString$0(_) {
      var $constructor = this.constructor,
        $name = $constructor == null ? null : $constructor.name;
      return "Closure '" + A.unminifyOrTag($name == null ? "unknown" : $name) + "'";
    },
    $isFunction: 1,
    get$$call() {
      return this;
    },
    "call*": "call$1",
    $requiredArgCount: 1,
    $defaultValues: null
  };
  A.Closure0Args.prototype = {"call*": "call$0", $requiredArgCount: 0};
  A.Closure2Args.prototype = {"call*": "call$2", $requiredArgCount: 2};
  A.TearOffClosure.prototype = {};
  A.StaticClosure.prototype = {
    toString$0(_) {
      var $name = this.$static_name;
      if ($name == null)
        return "Closure of unknown static method";
      return "Closure '" + A.unminifyOrTag($name) + "'";
    }
  };
  A.BoundClosure.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      if (this === other)
        return true;
      if (!(other instanceof A.BoundClosure))
        return false;
      return this.$_target === other.$_target && this._receiver === other._receiver;
    },
    get$hashCode(_) {
      return (A.objectHashCode(this._receiver) ^ A.Primitives_objectHashCode(this.$_target)) >>> 0;
    },
    toString$0(_) {
      return "Closure '" + this.$_name + "' of " + ("Instance of '" + A.Primitives_objectTypeName(this._receiver) + "'");
    }
  };
  A.RuntimeError.prototype = {
    toString$0(_) {
      return "RuntimeError: " + this.message;
    }
  };
  A._AssertionError.prototype = {
    toString$0(_) {
      return "Assertion failed: " + A.Error_safeToString(this.message);
    }
  };
  A.assertInteropArgs_closure.prototype = {
    call$1(arg) {
      return !type$.Function._is(arg) || typeof arg == "function";
    },
    $signature: 73
  };
  A.JsLinkedHashMap.prototype = {
    get$length(_) {
      return this.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this.__js_helper$_length === 0;
    },
    get$keys() {
      return new A.LinkedHashMapKeysIterable(this, A._instanceType(this)._eval$1("LinkedHashMapKeysIterable<1>"));
    },
    get$values() {
      return new A.LinkedHashMapValuesIterable(this, A._instanceType(this)._eval$1("LinkedHashMapValuesIterable<2>"));
    },
    get$entries() {
      return new A.LinkedHashMapEntriesIterable(this, A._instanceType(this)._eval$1("LinkedHashMapEntriesIterable<1,2>"));
    },
    containsKey$1(key) {
      var strings, nums;
      if (typeof key == "string") {
        strings = this.__js_helper$_strings;
        if (strings == null)
          return false;
        return strings[key] != null;
      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
        nums = this.__js_helper$_nums;
        if (nums == null)
          return false;
        return nums[key] != null;
      } else
        return this.internalContainsKey$1(key);
    },
    internalContainsKey$1(key) {
      var rest = this.__js_helper$_rest;
      if (rest == null)
        return false;
      return this.internalFindBucketIndex$2(rest[this.internalComputeHashCode$1(key)], key) >= 0;
    },
    addAll$1(_, other) {
      A._instanceType(this)._eval$1("Map<1,2>")._as(other).forEach$1(0, new A.JsLinkedHashMap_addAll_closure(this));
    },
    $index(_, key) {
      var strings, cell, t1, nums, _null = null;
      if (typeof key == "string") {
        strings = this.__js_helper$_strings;
        if (strings == null)
          return _null;
        cell = strings[key];
        t1 = cell == null ? _null : cell.hashMapCellValue;
        return t1;
      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
        nums = this.__js_helper$_nums;
        if (nums == null)
          return _null;
        cell = nums[key];
        t1 = cell == null ? _null : cell.hashMapCellValue;
        return t1;
      } else
        return this.internalGet$1(key);
    },
    internalGet$1(key) {
      var bucket, index,
        rest = this.__js_helper$_rest;
      if (rest == null)
        return null;
      bucket = rest[this.internalComputeHashCode$1(key)];
      index = this.internalFindBucketIndex$2(bucket, key);
      if (index < 0)
        return null;
      return bucket[index].hashMapCellValue;
    },
    $indexSet(_, key, value) {
      var strings, nums, _this = this,
        t1 = A._instanceType(_this);
      t1._precomputed1._as(key);
      t1._rest[1]._as(value);
      if (typeof key == "string") {
        strings = _this.__js_helper$_strings;
        _this.__js_helper$_addHashTableEntry$3(strings == null ? _this.__js_helper$_strings = _this._newHashTable$0() : strings, key, value);
      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
        nums = _this.__js_helper$_nums;
        _this.__js_helper$_addHashTableEntry$3(nums == null ? _this.__js_helper$_nums = _this._newHashTable$0() : nums, key, value);
      } else
        _this.internalSet$2(key, value);
    },
    internalSet$2(key, value) {
      var rest, hash, bucket, index, _this = this,
        t1 = A._instanceType(_this);
      t1._precomputed1._as(key);
      t1._rest[1]._as(value);
      rest = _this.__js_helper$_rest;
      if (rest == null)
        rest = _this.__js_helper$_rest = _this._newHashTable$0();
      hash = _this.internalComputeHashCode$1(key);
      bucket = rest[hash];
      if (bucket == null) {
        t1 = [_this.__js_helper$_newLinkedCell$2(key, value)];
        A.assertHelper(t1 != null);
        rest[hash] = t1;
      } else {
        index = _this.internalFindBucketIndex$2(bucket, key);
        if (index >= 0)
          bucket[index].hashMapCellValue = value;
        else
          bucket.push(_this.__js_helper$_newLinkedCell$2(key, value));
      }
    },
    putIfAbsent$2(key, ifAbsent) {
      var t2, value, _this = this,
        t1 = A._instanceType(_this);
      t1._precomputed1._as(key);
      t1._eval$1("2()")._as(ifAbsent);
      if (_this.containsKey$1(key)) {
        t2 = _this.$index(0, key);
        return t2 == null ? t1._rest[1]._as(t2) : t2;
      }
      value = ifAbsent.call$0();
      _this.$indexSet(0, key, value);
      return value;
    },
    remove$1(_, key) {
      var _this = this;
      if (typeof key == "string")
        return _this.__js_helper$_removeHashTableEntry$2(_this.__js_helper$_strings, key);
      else if (typeof key == "number" && (key & 0x3fffffff) === key)
        return _this.__js_helper$_removeHashTableEntry$2(_this.__js_helper$_nums, key);
      else
        return _this.internalRemove$1(key);
    },
    internalRemove$1(key) {
      var hash, bucket, index, cell, _this = this,
        rest = _this.__js_helper$_rest;
      if (rest == null)
        return null;
      hash = _this.internalComputeHashCode$1(key);
      bucket = rest[hash];
      index = _this.internalFindBucketIndex$2(bucket, key);
      if (index < 0)
        return null;
      cell = bucket.splice(index, 1)[0];
      _this.__js_helper$_unlinkCell$1(cell);
      if (bucket.length === 0)
        delete rest[hash];
      return cell.hashMapCellValue;
    },
    clear$0(_) {
      var _this = this;
      if (_this.__js_helper$_length > 0) {
        _this.__js_helper$_strings = _this.__js_helper$_nums = _this.__js_helper$_rest = _this.__js_helper$_first = _this.__js_helper$_last = null;
        _this.__js_helper$_length = 0;
        _this.__js_helper$_modified$0();
      }
    },
    forEach$1(_, action) {
      var cell, modifications, _this = this;
      A._instanceType(_this)._eval$1("~(1,2)")._as(action);
      cell = _this.__js_helper$_first;
      modifications = _this.__js_helper$_modifications;
      while (cell != null) {
        action.call$2(cell.hashMapCellKey, cell.hashMapCellValue);
        if (modifications !== _this.__js_helper$_modifications)
          throw A.wrapException(A.ConcurrentModificationError$(_this));
        cell = cell.__js_helper$_next;
      }
    },
    __js_helper$_addHashTableEntry$3(table, key, value) {
      var cell,
        t1 = A._instanceType(this);
      t1._precomputed1._as(key);
      t1._rest[1]._as(value);
      cell = table[key];
      if (cell == null)
        table[key] = this.__js_helper$_newLinkedCell$2(key, value);
      else
        cell.hashMapCellValue = value;
    },
    __js_helper$_removeHashTableEntry$2(table, key) {
      var cell;
      if (table == null)
        return null;
      cell = table[key];
      if (cell == null)
        return null;
      this.__js_helper$_unlinkCell$1(cell);
      delete table[key];
      return cell.hashMapCellValue;
    },
    __js_helper$_modified$0() {
      this.__js_helper$_modifications = this.__js_helper$_modifications + 1 & 1073741823;
    },
    __js_helper$_newLinkedCell$2(key, value) {
      var _this = this,
        t1 = A._instanceType(_this),
        cell = new A.LinkedHashMapCell(t1._precomputed1._as(key), t1._rest[1]._as(value));
      if (_this.__js_helper$_first == null)
        _this.__js_helper$_first = _this.__js_helper$_last = cell;
      else {
        t1 = _this.__js_helper$_last;
        t1.toString;
        cell.__js_helper$_previous = t1;
        _this.__js_helper$_last = t1.__js_helper$_next = cell;
      }
      ++_this.__js_helper$_length;
      _this.__js_helper$_modified$0();
      return cell;
    },
    __js_helper$_unlinkCell$1(cell) {
      var _this = this,
        previous = cell.__js_helper$_previous,
        next = cell.__js_helper$_next;
      if (previous == null) {
        A.assertHelper(cell === _this.__js_helper$_first);
        _this.__js_helper$_first = next;
      } else
        previous.__js_helper$_next = next;
      if (next == null) {
        A.assertHelper(cell === _this.__js_helper$_last);
        _this.__js_helper$_last = previous;
      } else
        next.__js_helper$_previous = previous;
      --_this.__js_helper$_length;
      _this.__js_helper$_modified$0();
    },
    internalComputeHashCode$1(key) {
      return J.get$hashCode$(key) & 1073741823;
    },
    internalFindBucketIndex$2(bucket, key) {
      var $length, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; ++i)
        if (J.$eq$(bucket[i].hashMapCellKey, key))
          return i;
      return -1;
    },
    toString$0(_) {
      return A.MapBase_mapToString(this);
    },
    _newHashTable$0() {
      var table = Object.create(null);
      A.assertHelper(table != null);
      table["<non-identifier-key>"] = table;
      delete table["<non-identifier-key>"];
      return table;
    },
    $isLinkedHashMap: 1
  };
  A.JsLinkedHashMap_addAll_closure.prototype = {
    call$2(key, value) {
      var t1 = this.$this,
        t2 = A._instanceType(t1);
      t1.$indexSet(0, t2._precomputed1._as(key), t2._rest[1]._as(value));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(1,2)");
    }
  };
  A.LinkedHashMapCell.prototype = {};
  A.LinkedHashMapKeysIterable.prototype = {
    get$length(_) {
      return this.__js_helper$_map.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this.__js_helper$_map.__js_helper$_length === 0;
    },
    get$iterator(_) {
      var t1 = this.__js_helper$_map;
      return new A.LinkedHashMapKeyIterator(t1, t1.__js_helper$_modifications, t1.__js_helper$_first, this.$ti._eval$1("LinkedHashMapKeyIterator<1>"));
    }
  };
  A.LinkedHashMapKeyIterator.prototype = {
    get$current() {
      return this.__js_helper$_current;
    },
    moveNext$0() {
      var cell, _this = this,
        t1 = _this.__js_helper$_map;
      if (_this.__js_helper$_modifications !== t1.__js_helper$_modifications)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      cell = _this.__js_helper$_cell;
      if (cell == null) {
        _this.__js_helper$_current = null;
        return false;
      } else {
        _this.__js_helper$_current = cell.hashMapCellKey;
        _this.__js_helper$_cell = cell.__js_helper$_next;
        return true;
      }
    },
    $isIterator: 1
  };
  A.LinkedHashMapValuesIterable.prototype = {
    get$length(_) {
      return this.__js_helper$_map.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this.__js_helper$_map.__js_helper$_length === 0;
    },
    get$iterator(_) {
      var t1 = this.__js_helper$_map;
      return new A.LinkedHashMapValueIterator(t1, t1.__js_helper$_modifications, t1.__js_helper$_first, this.$ti._eval$1("LinkedHashMapValueIterator<1>"));
    }
  };
  A.LinkedHashMapValueIterator.prototype = {
    get$current() {
      return this.__js_helper$_current;
    },
    moveNext$0() {
      var cell, _this = this,
        t1 = _this.__js_helper$_map;
      if (_this.__js_helper$_modifications !== t1.__js_helper$_modifications)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      cell = _this.__js_helper$_cell;
      if (cell == null) {
        _this.__js_helper$_current = null;
        return false;
      } else {
        _this.__js_helper$_current = cell.hashMapCellValue;
        _this.__js_helper$_cell = cell.__js_helper$_next;
        return true;
      }
    },
    $isIterator: 1
  };
  A.LinkedHashMapEntriesIterable.prototype = {
    get$length(_) {
      return this.__js_helper$_map.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this.__js_helper$_map.__js_helper$_length === 0;
    },
    get$iterator(_) {
      var t1 = this.__js_helper$_map;
      return new A.LinkedHashMapEntryIterator(t1, t1.__js_helper$_modifications, t1.__js_helper$_first, this.$ti._eval$1("LinkedHashMapEntryIterator<1,2>"));
    }
  };
  A.LinkedHashMapEntryIterator.prototype = {
    get$current() {
      var t1 = this.__js_helper$_current;
      t1.toString;
      return t1;
    },
    moveNext$0() {
      var cell, _this = this,
        t1 = _this.__js_helper$_map;
      if (_this.__js_helper$_modifications !== t1.__js_helper$_modifications)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      cell = _this.__js_helper$_cell;
      if (cell == null) {
        _this.__js_helper$_current = null;
        return false;
      } else {
        _this.__js_helper$_current = new A.MapEntry(cell.hashMapCellKey, cell.hashMapCellValue, _this.$ti._eval$1("MapEntry<1,2>"));
        _this.__js_helper$_cell = cell.__js_helper$_next;
        return true;
      }
    },
    $isIterator: 1
  };
  A.initHooks_closure.prototype = {
    call$1(o) {
      return this.getTag(o);
    },
    $signature: 84
  };
  A.initHooks_closure0.prototype = {
    call$2(o, tag) {
      return this.getUnknownTag(o, tag);
    },
    $signature: 40
  };
  A.initHooks_closure1.prototype = {
    call$1(tag) {
      return this.prototypeForTag(A._asString(tag));
    },
    $signature: 50
  };
  A._Record.prototype = {
    toString$0(_) {
      return this._toString$1(false);
    },
    _toString$1(safe) {
      var t2, separator, i, key, value,
        keys = this._fieldKeys$0(),
        values = this._getFieldValues$0(),
        t1 = keys.length;
      A.assertHelper(t1 === values.length);
      t2 = (safe ? "Record " : "") + "(";
      for (separator = "", i = 0; i < t1; ++i, separator = ", ") {
        t2 += separator;
        key = keys[i];
        if (typeof key == "string")
          t2 = t2 + key + ": ";
        if (!(i < values.length))
          return A.ioore(values, i);
        value = values[i];
        t2 = safe ? t2 + A.Primitives_safeToString(value) : t2 + A.S(value);
      }
      t1 = t2 + ")";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _fieldKeys$0() {
      var t1,
        shapeTag = this.$shape;
      while ($._Record__computedFieldKeys.length <= shapeTag)
        B.JSArray_methods.add$1($._Record__computedFieldKeys, null);
      t1 = $._Record__computedFieldKeys[shapeTag];
      if (t1 == null) {
        t1 = this._computeFieldKeys$0();
        B.JSArray_methods.$indexSet($._Record__computedFieldKeys, shapeTag, t1);
      }
      return t1;
    },
    _computeFieldKeys$0() {
      var i, names, last,
        recipe = this.$recipe,
        position = recipe.indexOf("("),
        joinedNames = recipe.substring(1, position),
        fields = recipe.substring(position),
        arity = fields === "()" ? 0 : fields.replace(/[^,]/g, "").length + 1,
        result = A._setArrayType(new Array(arity), type$.JSArray_Object);
      for (i = 0; i < arity; ++i)
        result[i] = i;
      if (joinedNames !== "") {
        names = joinedNames.split(",");
        i = names.length;
        for (last = arity; i > 0;) {
          --last;
          --i;
          B.JSArray_methods.$indexSet(result, last, names[i]);
        }
      }
      return A.List_List$unmodifiable(result, type$.Object);
    }
  };
  A._Record2.prototype = {
    _getFieldValues$0() {
      return [this._0, this._1];
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A._Record2 && this.$shape === other.$shape && J.$eq$(this._0, other._0) && J.$eq$(this._1, other._1);
    },
    get$hashCode(_) {
      return A.Object_hash(this.$shape, this._0, this._1, B.C_SentinelValue);
    }
  };
  A.JSSyntaxRegExp.prototype = {
    toString$0(_) {
      return "RegExp/" + this.pattern + "/" + this._nativeRegExp.flags;
    },
    get$_nativeGlobalVersion() {
      var _this = this,
        t1 = _this._nativeGlobalRegExp;
      if (t1 != null)
        return t1;
      t1 = _this._nativeRegExp;
      return _this._nativeGlobalRegExp = A.JSSyntaxRegExp_makeNative(_this.pattern, t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, "g");
    },
    get$_nativeAnchoredVersion() {
      var _this = this,
        t1 = _this._nativeAnchoredRegExp;
      if (t1 != null)
        return t1;
      t1 = _this._nativeRegExp;
      return _this._nativeAnchoredRegExp = A.JSSyntaxRegExp_makeNative(_this.pattern, t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, "y");
    },
    _computeHasCaptures$0() {
      var t1, t2;
      A.assertHelper(this._hasCapturesCache == null);
      t1 = this.pattern;
      if (!B.JSString_methods.contains$1(t1, "("))
        return false;
      t2 = this._nativeRegExp.unicode ? "u" : "";
      return new RegExp("(?:)|" + t1, t2).exec("").length > 1;
    },
    firstMatch$1(string) {
      var m = this._nativeRegExp.exec(string);
      if (m == null)
        return null;
      return A._MatchImplementation$(this, m);
    },
    allMatches$2(_, string, start) {
      var t1 = string.length;
      if (start > t1)
        throw A.wrapException(A.RangeError$range(start, 0, t1, null, null));
      return new A._AllMatchesIterable(this, string, start);
    },
    allMatches$1(_, string) {
      return this.allMatches$2(0, string, 0);
    },
    _execGlobal$2(string, start) {
      var match,
        regexp = this.get$_nativeGlobalVersion();
      if (regexp == null)
        regexp = A._asObject(regexp);
      regexp.lastIndex = start;
      match = regexp.exec(string);
      if (match == null)
        return null;
      return A._MatchImplementation$(this, match);
    },
    _execAnchored$2(string, start) {
      var match,
        regexp = this.get$_nativeAnchoredVersion();
      if (regexp == null)
        regexp = A._asObject(regexp);
      regexp.lastIndex = start;
      match = regexp.exec(string);
      if (match == null)
        return null;
      return A._MatchImplementation$(this, match);
    },
    matchAsPrefix$2(_, string, start) {
      if (start < 0 || start > string.length)
        throw A.wrapException(A.RangeError$range(start, 0, string.length, null, null));
      return this._execAnchored$2(string, start);
    },
    $isPattern: 1,
    $isRegExp: 1
  };
  A._MatchImplementation.prototype = {
    get$start() {
      return this._match.index;
    },
    get$end() {
      var t1 = this._match;
      return t1.index + t1[0].length;
    },
    $index(_, index) {
      var t1 = this._match;
      if (!(index < t1.length))
        return A.ioore(t1, index);
      return t1[index];
    },
    namedGroup$1($name) {
      var result,
        groups = this._match.groups;
      if (groups != null) {
        result = groups[$name];
        if (result != null || $name in groups)
          return result;
      }
      throw A.wrapException(A.ArgumentError$value($name, "name", "Not a capture group name"));
    },
    $isMatch: 1,
    $isRegExpMatch: 1
  };
  A._AllMatchesIterable.prototype = {
    get$iterator(_) {
      return new A._AllMatchesIterator(this._re, this.__js_helper$_string, this.__js_helper$_start);
    }
  };
  A._AllMatchesIterator.prototype = {
    get$current() {
      var t1 = this.__js_helper$_current;
      return t1 == null ? type$.RegExpMatch._as(t1) : t1;
    },
    moveNext$0() {
      var t1, t2, t3, match, nextIndex, t4, _this = this,
        string = _this.__js_helper$_string;
      if (string == null)
        return false;
      t1 = _this._nextIndex;
      t2 = string.length;
      if (t1 <= t2) {
        t3 = _this._regExp;
        match = t3._execGlobal$2(string, t1);
        if (match != null) {
          _this.__js_helper$_current = match;
          nextIndex = match.get$end();
          if (match._match.index === nextIndex) {
            t1 = false;
            if (t3._nativeRegExp.unicode) {
              t3 = _this._nextIndex;
              t4 = t3 + 1;
              if (t4 < t2) {
                if (!(t3 >= 0 && t3 < t2))
                  return A.ioore(string, t3);
                t3 = string.charCodeAt(t3);
                if (t3 >= 55296 && t3 <= 56319) {
                  if (!(t4 >= 0))
                    return A.ioore(string, t4);
                  t1 = string.charCodeAt(t4);
                  t1 = t1 >= 56320 && t1 <= 57343;
                }
              }
            }
            nextIndex = (t1 ? nextIndex + 1 : nextIndex) + 1;
          }
          _this._nextIndex = nextIndex;
          return true;
        }
      }
      _this.__js_helper$_string = _this.__js_helper$_current = null;
      return false;
    },
    $isIterator: 1
  };
  A.StringMatch.prototype = {
    get$end() {
      return this.start + this.pattern.length;
    },
    $index(_, g) {
      if (g !== 0)
        A.throwExpression(A.RangeError$value(g, null));
      return this.pattern;
    },
    $isMatch: 1,
    get$start() {
      return this.start;
    }
  };
  A._StringAllMatchesIterable.prototype = {
    get$iterator(_) {
      return new A._StringAllMatchesIterator(this._input, this._pattern, this.__js_helper$_index);
    },
    get$first(_) {
      var t1 = this._pattern,
        index = this._input.indexOf(t1, this.__js_helper$_index);
      if (index >= 0)
        return new A.StringMatch(index, t1);
      throw A.wrapException(A.IterableElementError_noElement());
    }
  };
  A._StringAllMatchesIterator.prototype = {
    moveNext$0() {
      var index, end, _this = this,
        t1 = _this.__js_helper$_index,
        t2 = _this._pattern,
        t3 = t2.length,
        t4 = _this._input,
        t5 = t4.length;
      if (t1 + t3 > t5) {
        _this.__js_helper$_current = null;
        return false;
      }
      index = t4.indexOf(t2, t1);
      if (index < 0) {
        _this.__js_helper$_index = t5 + 1;
        _this.__js_helper$_current = null;
        return false;
      }
      end = index + t3;
      _this.__js_helper$_current = new A.StringMatch(index, t2);
      _this.__js_helper$_index = end === _this.__js_helper$_index ? end + 1 : end;
      return true;
    },
    get$current() {
      var t1 = this.__js_helper$_current;
      t1.toString;
      return t1;
    },
    $isIterator: 1
  };
  A._Cell.prototype = {
    _readField$0() {
      var t1 = this._value;
      if (t1 === this)
        throw A.wrapException(A.LateError$fieldNI(this.__late_helper$_name));
      return t1;
    }
  };
  A.NativeByteBuffer.prototype = {
    get$runtimeType(receiver) {
      return B.Type_ByteBuffer_rqD;
    },
    asUint8List$2(receiver, offsetInBytes, $length) {
      A._checkViewArguments(receiver, offsetInBytes, $length);
      return $length == null ? new Uint8Array(receiver, offsetInBytes) : new Uint8Array(receiver, offsetInBytes, $length);
    },
    asByteData$2(receiver, offsetInBytes, $length) {
      var t1;
      A._checkViewArguments(receiver, offsetInBytes, $length);
      t1 = new DataView(receiver, offsetInBytes);
      return t1;
    },
    asByteData$0(receiver) {
      return this.asByteData$2(receiver, 0, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isNativeByteBuffer: 1,
    $isByteBuffer: 1
  };
  A.NativeArrayBuffer.prototype = {$isNativeArrayBuffer: 1};
  A.NativeTypedData.prototype = {
    get$buffer(receiver) {
      if (((receiver.$flags | 0) & 2) !== 0)
        return new A._UnmodifiableNativeByteBufferView(receiver.buffer);
      else
        return receiver.buffer;
    },
    _invalidPosition$3(receiver, position, $length, $name) {
      var t1 = A.RangeError$range(position, 0, $length, $name, null);
      throw A.wrapException(t1);
    },
    _checkPosition$3(receiver, position, $length, $name) {
      if (position >>> 0 !== position || position > $length)
        this._invalidPosition$3(receiver, position, $length, $name);
    }
  };
  A._UnmodifiableNativeByteBufferView.prototype = {
    asUint8List$2(_, offsetInBytes, $length) {
      var result = A.NativeUint8List_NativeUint8List$view(this.__native_typed_data$_data, offsetInBytes, $length);
      result.$flags = 3;
      return result;
    },
    asByteData$0(_) {
      var result = A.NativeByteData_NativeByteData$view(this.__native_typed_data$_data, 0, null);
      result.$flags = 3;
      return result;
    },
    $isByteBuffer: 1
  };
  A.NativeByteData.prototype = {
    get$runtimeType(receiver) {
      return B.Type_ByteData_9dB;
    },
    $isTrustedGetRuntimeType: 1,
    $isNativeByteData: 1,
    $isByteData: 1
  };
  A.NativeTypedArray.prototype = {
    get$length(receiver) {
      return receiver.length;
    },
    _setRangeFast$4(receiver, start, end, source, skipCount) {
      var count, sourceLength,
        targetLength = receiver.length;
      this._checkPosition$3(receiver, start, targetLength, "start");
      this._checkPosition$3(receiver, end, targetLength, "end");
      if (start > end)
        throw A.wrapException(A.RangeError$range(start, 0, end, null, null));
      count = end - start;
      if (skipCount < 0)
        throw A.wrapException(A.ArgumentError$(skipCount, null));
      sourceLength = source.length;
      if (sourceLength - skipCount < count)
        throw A.wrapException(A.StateError$("Not enough elements"));
      if (skipCount !== 0 || sourceLength !== count)
        source = source.subarray(skipCount, skipCount + count);
      receiver.set(source, start);
    },
    $isJSIndexable: 1,
    $isJavaScriptIndexingBehavior: 1
  };
  A.NativeTypedArrayOfDouble.prototype = {
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    $indexSet(receiver, index, value) {
      A._asDouble(value);
      receiver.$flags & 2 && A.throwUnsupportedOperation(receiver);
      A._checkValidIndex(index, receiver, receiver.length);
      receiver[index] = value;
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      type$.Iterable_double._as(iterable);
      receiver.$flags & 2 && A.throwUnsupportedOperation(receiver, 5);
      if (type$.NativeTypedArrayOfDouble._is(iterable)) {
        this._setRangeFast$4(receiver, start, end, iterable, skipCount);
        return;
      }
      this.super$ListBase$setRange(receiver, start, end, iterable, skipCount);
    },
    setRange$3(receiver, start, end, iterable) {
      return this.setRange$4(receiver, start, end, iterable, 0);
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  A.NativeTypedArrayOfInt.prototype = {
    $indexSet(receiver, index, value) {
      A._asInt(value);
      receiver.$flags & 2 && A.throwUnsupportedOperation(receiver);
      A._checkValidIndex(index, receiver, receiver.length);
      receiver[index] = value;
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      type$.Iterable_int._as(iterable);
      receiver.$flags & 2 && A.throwUnsupportedOperation(receiver, 5);
      if (type$.NativeTypedArrayOfInt._is(iterable)) {
        this._setRangeFast$4(receiver, start, end, iterable, skipCount);
        return;
      }
      this.super$ListBase$setRange(receiver, start, end, iterable, skipCount);
    },
    setRange$3(receiver, start, end, iterable) {
      return this.setRange$4(receiver, start, end, iterable, 0);
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  A.NativeFloat32List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Float32List_9Kz;
    },
    sublist$2(receiver, start, end) {
      return new Float32Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isTypedDataList: 1,
    $isFloat32List: 1
  };
  A.NativeFloat64List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Float64List_9Kz;
    },
    sublist$2(receiver, start, end) {
      return new Float64Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isTypedDataList: 1,
    $isFloat64List: 1
  };
  A.NativeInt16List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Int16List_s5h;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Int16Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isTypedDataList: 1,
    $isInt16List: 1
  };
  A.NativeInt32List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Int32List_O8Z;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Int32Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isNativeInt32List: 1,
    $isTypedDataList: 1,
    $isInt32List: 1
  };
  A.NativeInt8List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Int8List_rFV;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Int8Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isTypedDataList: 1,
    $isInt8List: 1
  };
  A.NativeUint16List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint16List_kmP;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint16Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isTypedDataList: 1,
    $isUint16List: 1
  };
  A.NativeUint32List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint32List_kmP;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint32Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isTypedDataList: 1,
    $isUint32List: 1
  };
  A.NativeUint8ClampedList.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint8ClampedList_04U;
    },
    get$length(receiver) {
      return receiver.length;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint8ClampedArray(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isTypedDataList: 1,
    $isUint8ClampedList: 1
  };
  A.NativeUint8List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint8List_8Eb;
    },
    get$length(receiver) {
      return receiver.length;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint8Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    $isTrustedGetRuntimeType: 1,
    $isNativeUint8List: 1,
    $isTypedDataList: 1,
    $isUint8List: 1
  };
  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {};
  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.prototype = {};
  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
  A.Rti.prototype = {
    _eval$1(recipe) {
      return A._Universe_evalInEnvironment(init.typeUniverse, this, recipe);
    },
    _bind$1(typeOrTuple) {
      return A._Universe_bind(init.typeUniverse, this, typeOrTuple);
    }
  };
  A._FunctionParameters.prototype = {};
  A._Type.prototype = {
    toString$0(_) {
      return A._rtiToString(this._rti, null);
    }
  };
  A._Error.prototype = {
    toString$0(_) {
      return this._message;
    }
  };
  A._TypeError.prototype = {$isTypeError: 1};
  A._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = {
    call$1(__wc0_formal) {
      var t1 = this._box_0,
        f = t1.storedCallback;
      t1.storedCallback = null;
      f.call$0();
    },
    $signature: 35
  };
  A._AsyncRun__initializeScheduleImmediate_closure.prototype = {
    call$1(callback) {
      var t1, t2;
      type$.void_Function._as(callback);
      t1 = this._box_0;
      A.assertHelper(t1.storedCallback == null);
      t1.storedCallback = callback;
      t1 = this.div;
      t2 = this.span;
      t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);
    },
    $signature: 74
  };
  A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
    call$0() {
      this.callback.call$0();
    },
    $signature: 6
  };
  A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {
    call$0() {
      this.callback.call$0();
    },
    $signature: 6
  };
  A._TimerImpl.prototype = {
    _TimerImpl$2(milliseconds, callback) {
      if (self.setTimeout != null)
        self.setTimeout(A.convertDartClosureToJS(new A._TimerImpl_internalCallback(this, callback), 0), milliseconds);
      else
        throw A.wrapException(A.UnsupportedError$("`setTimeout()` not found."));
    },
    _TimerImpl$periodic$2(milliseconds, callback) {
      if (self.setTimeout != null)
        self.setInterval(A.convertDartClosureToJS(new A._TimerImpl$periodic_closure(this, milliseconds, Date.now(), callback), 0), milliseconds);
      else
        throw A.wrapException(A.UnsupportedError$("Periodic timer."));
    },
    $isTimer: 1
  };
  A._TimerImpl_internalCallback.prototype = {
    call$0() {
      this.$this._tick = 1;
      this.callback.call$0();
    },
    $signature: 0
  };
  A._TimerImpl$periodic_closure.prototype = {
    call$0() {
      var duration, _this = this,
        t1 = _this.$this,
        tick = t1._tick + 1,
        t2 = _this.milliseconds;
      if (t2 > 0) {
        duration = Date.now() - _this.start;
        if (duration > (tick + 1) * t2)
          tick = B.JSInt_methods.$tdiv(duration, t2);
      }
      t1._tick = tick;
      _this.callback.call$1(t1);
    },
    $signature: 6
  };
  A._AsyncAwaitCompleter.prototype = {
    complete$1(value) {
      var t2, _this = this,
        t1 = _this.$ti;
      t1._eval$1("1/?")._as(value);
      if (value == null)
        value = t1._precomputed1._as(value);
      if (!_this.isSync)
        _this._future._asyncComplete$1(value);
      else {
        t2 = _this._future;
        if (t1._eval$1("Future<1>")._is(value)) {
          A.assertHelper((t2._state & 24) === 0);
          t2._chainFuture$1(value);
        } else
          t2._completeWithValue$1(value);
      }
    },
    completeError$2(e, st) {
      var t1 = this._future;
      if (this.isSync)
        t1._completeErrorObject$1(new A.AsyncError(e, st));
      else
        t1._asyncCompleteErrorObject$1(new A.AsyncError(e, st));
    },
    $isCompleter: 1
  };
  A._awaitOnObject_closure.prototype = {
    call$1(result) {
      return this.bodyFunction.call$2(0, result);
    },
    $signature: 16
  };
  A._awaitOnObject_closure0.prototype = {
    call$2(error, stackTrace) {
      this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace)));
    },
    $signature: 51
  };
  A._wrapJsFunctionForAsync_closure.prototype = {
    call$2(errorCode, result) {
      this.$protected(A._asInt(errorCode), result);
    },
    $signature: 59
  };
  A._SyncStarIterator.prototype = {
    get$current() {
      var t1 = this._async$_current;
      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
    },
    _resumeBody$2(errorCode, errorValue) {
      var body, t1, exception;
      errorCode = A._asInt(errorCode);
      errorValue = errorValue;
      body = this._body;
      for (;;)
        try {
          t1 = body(this, errorCode, errorValue);
          return t1;
        } catch (exception) {
          errorValue = exception;
          errorCode = 1;
        }
    },
    moveNext$0() {
      var nestedIterator, exception, value, suspendedBodies, _this = this, errorValue = null, errorCode = 0;
      for (;;) {
        nestedIterator = _this._nestedIterator;
        if (nestedIterator != null)
          try {
            if (nestedIterator.moveNext$0()) {
              _this._async$_current = nestedIterator.get$current();
              return true;
            } else
              _this._nestedIterator = null;
          } catch (exception) {
            errorValue = exception;
            errorCode = 1;
            _this._nestedIterator = null;
          }
        value = _this._resumeBody$2(errorCode, errorValue);
        if (1 === value)
          return true;
        if (0 === value) {
          _this._async$_current = null;
          suspendedBodies = _this._suspendedBodies;
          if (suspendedBodies == null || suspendedBodies.length === 0) {
            _this._body = A._SyncStarIterator__terminatedBody;
            return false;
          }
          if (0 >= suspendedBodies.length)
            return A.ioore(suspendedBodies, -1);
          _this._body = suspendedBodies.pop();
          errorCode = 0;
          errorValue = null;
          continue;
        }
        if (2 === value) {
          errorCode = 0;
          errorValue = null;
          continue;
        }
        if (3 === value) {
          errorValue = _this._datum;
          _this._datum = null;
          suspendedBodies = _this._suspendedBodies;
          if (suspendedBodies == null || suspendedBodies.length === 0) {
            _this._async$_current = null;
            _this._body = A._SyncStarIterator__terminatedBody;
            throw errorValue;
            return false;
          }
          if (0 >= suspendedBodies.length)
            return A.ioore(suspendedBodies, -1);
          _this._body = suspendedBodies.pop();
          errorCode = 1;
          continue;
        }
        throw A.wrapException(A.StateError$("sync*"));
      }
      return false;
    },
    _yieldStar$1(iterable) {
      var t1, t2, _this = this;
      if (iterable instanceof A._SyncStarIterable) {
        t1 = iterable._outerHelper();
        t2 = _this._suspendedBodies;
        if (t2 == null)
          t2 = _this._suspendedBodies = [];
        B.JSArray_methods.add$1(t2, _this._body);
        _this._body = t1;
        return 2;
      } else {
        _this._nestedIterator = J.get$iterator$ax(iterable);
        return 2;
      }
    },
    $isIterator: 1
  };
  A._SyncStarIterable.prototype = {
    get$iterator(_) {
      return new A._SyncStarIterator(this._outerHelper(), this.$ti._eval$1("_SyncStarIterator<1>"));
    }
  };
  A.AsyncError.prototype = {
    toString$0(_) {
      return A.S(this.error);
    },
    $isError: 1,
    get$stackTrace() {
      return this.stackTrace;
    }
  };
  A._BroadcastStream.prototype = {};
  A._BroadcastSubscription.prototype = {
    _onPause$0() {
    },
    _onResume$0() {
    },
    set$_async$_next(_next) {
      this._async$_next = this.$ti._eval$1("_BroadcastSubscription<1>?")._as(_next);
    },
    set$_async$_previous(_previous) {
      this._async$_previous = this.$ti._eval$1("_BroadcastSubscription<1>?")._as(_previous);
    }
  };
  A._BroadcastStreamController.prototype = {
    get$_mayAddEvent() {
      return this._state < 4;
    },
    _removeListener$1(subscription) {
      var previous, next, _this = this;
      A._instanceType(_this)._eval$1("_BroadcastSubscription<1>")._as(subscription);
      A.assertHelper(subscription._controller === _this);
      A.assertHelper(subscription._async$_next !== subscription);
      previous = subscription._async$_previous;
      next = subscription._async$_next;
      if (previous == null)
        _this._firstSubscription = next;
      else
        previous.set$_async$_next(next);
      if (next == null)
        _this._lastSubscription = previous;
      else
        next.set$_async$_previous(previous);
      subscription.set$_async$_previous(subscription);
      subscription.set$_async$_next(subscription);
    },
    _subscribe$4(onData, onError, onDone, cancelOnError) {
      var t2, t3, t4, t5, t6, t7, subscription, oldLast, _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("~(1)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      if ((_this._state & 4) !== 0) {
        t2 = $.Zone__current;
        t1 = new A._DoneStreamSubscription(t2, t1._eval$1("_DoneStreamSubscription<1>"));
        A.scheduleMicrotask(t1.get$_onMicrotask());
        if (onDone != null)
          t1._onDone = t2.registerCallback$1$1(onDone, type$.void);
        return t1;
      }
      t2 = $.Zone__current;
      t3 = cancelOnError ? 1 : 0;
      t4 = onError != null ? 32 : 0;
      t5 = A._BufferingStreamSubscription__registerDataHandler(t2, onData, t1._precomputed1);
      t6 = A._BufferingStreamSubscription__registerErrorHandler(t2, onError);
      t7 = onDone == null ? A.async___nullDoneHandler$closure() : onDone;
      t1 = t1._eval$1("_BroadcastSubscription<1>");
      subscription = new A._BroadcastSubscription(_this, t5, t6, t2.registerCallback$1$1(t7, type$.void), t2, t3 | t4, t1);
      subscription._async$_previous = subscription;
      subscription._async$_next = subscription;
      t1._as(subscription);
      subscription._eventState = _this._state & 1;
      oldLast = _this._lastSubscription;
      _this._lastSubscription = subscription;
      subscription.set$_async$_next(null);
      subscription.set$_async$_previous(oldLast);
      if (oldLast == null)
        _this._firstSubscription = subscription;
      else
        oldLast.set$_async$_next(subscription);
      if (_this._firstSubscription == _this._lastSubscription)
        A._runGuarded(_this.onListen);
      return subscription;
    },
    _recordCancel$1(sub) {
      var _this = this,
        t1 = A._instanceType(_this);
      sub = t1._eval$1("_BroadcastSubscription<1>")._as(t1._eval$1("StreamSubscription<1>")._as(sub));
      if (sub._async$_next === sub)
        return null;
      if ((sub._eventState & 2) !== 0)
        sub._eventState |= 4;
      else {
        _this._removeListener$1(sub);
        if ((_this._state & 2) === 0 && _this._firstSubscription == null)
          _this._callOnCancel$0();
      }
      return null;
    },
    _recordPause$1(subscription) {
      A._instanceType(this)._eval$1("StreamSubscription<1>")._as(subscription);
    },
    _recordResume$1(subscription) {
      A._instanceType(this)._eval$1("StreamSubscription<1>")._as(subscription);
    },
    _addEventError$0() {
      var t1 = this._state;
      if ((t1 & 4) !== 0)
        return new A.StateError("Cannot add new events after calling close");
      A.assertHelper((t1 & 8) !== 0);
      return new A.StateError("Cannot add new events while doing an addStream");
    },
    add$1(_, data) {
      var _this = this;
      A._instanceType(_this)._precomputed1._as(data);
      if (!_this.get$_mayAddEvent())
        throw A.wrapException(_this._addEventError$0());
      _this._sendData$1(data);
    },
    addError$2(error, stackTrace) {
      var _0_0;
      if (!this.get$_mayAddEvent())
        throw A.wrapException(this._addEventError$0());
      _0_0 = A._interceptUserError(error, stackTrace);
      this._sendError$2(_0_0.error, _0_0.stackTrace);
    },
    close$0() {
      var t1, doneFuture, _this = this;
      if ((_this._state & 4) !== 0) {
        A.assertHelper(_this._doneFuture != null);
        t1 = _this._doneFuture;
        t1.toString;
        return t1;
      }
      if (!_this.get$_mayAddEvent())
        throw A.wrapException(_this._addEventError$0());
      _this._state |= 4;
      doneFuture = _this._doneFuture;
      if (doneFuture == null)
        doneFuture = _this._doneFuture = new A._Future($.Zone__current, type$._Future_void);
      _this._sendDone$0();
      return doneFuture;
    },
    _forEachListener$1(action) {
      var t1, subscription, id, next, _this = this;
      A._instanceType(_this)._eval$1("~(_BufferingStreamSubscription<1>)")._as(action);
      t1 = _this._state;
      if ((t1 & 2) !== 0)
        throw A.wrapException(A.StateError$(string$.Cannotf));
      subscription = _this._firstSubscription;
      if (subscription == null)
        return;
      id = t1 & 1;
      _this._state = t1 ^ 3;
      while (subscription != null) {
        t1 = subscription._eventState;
        if ((t1 & 1) === id) {
          subscription._eventState = t1 | 2;
          action.call$1(subscription);
          t1 = subscription._eventState ^= 1;
          next = subscription._async$_next;
          if ((t1 & 4) !== 0)
            _this._removeListener$1(subscription);
          subscription._eventState &= 4294967293;
          subscription = next;
        } else
          subscription = subscription._async$_next;
      }
      _this._state &= 4294967293;
      if (_this._firstSubscription == null)
        _this._callOnCancel$0();
    },
    _callOnCancel$0() {
      var doneFuture, _this = this;
      A.assertHelper(_this._firstSubscription == null);
      if ((_this._state & 4) !== 0) {
        doneFuture = _this._doneFuture;
        if ((doneFuture._state & 30) === 0)
          doneFuture._asyncComplete$1(null);
      }
      A._runGuarded(_this.onCancel);
    },
    $isEventSink: 1,
    $isStreamSink: 1,
    $isStreamController: 1,
    $is_StreamControllerLifecycle: 1,
    $is_EventSink: 1,
    $is_EventDispatch: 1
  };
  A._SyncBroadcastStreamController.prototype = {
    get$_mayAddEvent() {
      return A._BroadcastStreamController.prototype.get$_mayAddEvent.call(this) && (this._state & 2) === 0;
    },
    _addEventError$0() {
      if ((this._state & 2) !== 0)
        return new A.StateError(string$.Cannotf);
      return this.super$_BroadcastStreamController$_addEventError();
    },
    _sendData$1(data) {
      var firstSubscription, _this = this;
      _this.$ti._precomputed1._as(data);
      firstSubscription = _this._firstSubscription;
      if (firstSubscription == null)
        return;
      if (firstSubscription == _this._lastSubscription) {
        _this._state |= 2;
        firstSubscription._async$_add$1(data);
        _this._state &= 4294967293;
        if (_this._firstSubscription == null)
          _this._callOnCancel$0();
        return;
      }
      _this._forEachListener$1(new A._SyncBroadcastStreamController__sendData_closure(_this, data));
    },
    _sendError$2(error, stackTrace) {
      if (this._firstSubscription == null)
        return;
      this._forEachListener$1(new A._SyncBroadcastStreamController__sendError_closure(this, error, stackTrace));
    },
    _sendDone$0() {
      var t1, _this = this;
      if (_this._firstSubscription != null)
        _this._forEachListener$1(new A._SyncBroadcastStreamController__sendDone_closure(_this));
      else {
        t1 = _this._doneFuture;
        A.assertHelper(t1 != null && (t1._state & 30) === 0);
        _this._doneFuture._asyncComplete$1(null);
      }
    }
  };
  A._SyncBroadcastStreamController__sendData_closure.prototype = {
    call$1(subscription) {
      this.$this.$ti._eval$1("_BufferingStreamSubscription<1>")._as(subscription)._async$_add$1(this.data);
    },
    $signature() {
      return this.$this.$ti._eval$1("~(_BufferingStreamSubscription<1>)");
    }
  };
  A._SyncBroadcastStreamController__sendError_closure.prototype = {
    call$1(subscription) {
      this.$this.$ti._eval$1("_BufferingStreamSubscription<1>")._as(subscription)._addError$2(this.error, this.stackTrace);
    },
    $signature() {
      return this.$this.$ti._eval$1("~(_BufferingStreamSubscription<1>)");
    }
  };
  A._SyncBroadcastStreamController__sendDone_closure.prototype = {
    call$1(subscription) {
      this.$this.$ti._eval$1("_BufferingStreamSubscription<1>")._as(subscription)._close$0();
    },
    $signature() {
      return this.$this.$ti._eval$1("~(_BufferingStreamSubscription<1>)");
    }
  };
  A.Future_Future_closure.prototype = {
    call$0() {
      var e, s, exception, t1, t2, t3, computationResult = null;
      try {
        computationResult = this.computation.call$0();
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = e;
        t2 = s;
        t3 = A._interceptError(t1, t2);
        if (t3 == null)
          t1 = new A.AsyncError(t1, t2);
        else
          t1 = t3;
        this.result._completeErrorObject$1(t1);
        return;
      }
      this.result._complete$1(computationResult);
    },
    $signature: 0
  };
  A.Future_Future$delayed_closure.prototype = {
    call$0() {
      this.T._as(null);
      this.result._complete$1(null);
    },
    $signature: 0
  };
  A.Future_wait_handleError.prototype = {
    call$2(theError, theStackTrace) {
      var t1, t2, _this = this;
      A._asObject(theError);
      type$.StackTrace._as(theStackTrace);
      t1 = _this._box_0;
      t2 = --t1.remaining;
      if (t1.values != null) {
        t1.values = null;
        t1.error = theError;
        t1.stackTrace = theStackTrace;
        if (t2 === 0 || _this.eagerError)
          _this._future._completeErrorObject$1(new A.AsyncError(theError, theStackTrace));
      } else if (t2 === 0 && !_this.eagerError) {
        t2 = t1.error;
        t2.toString;
        t1 = t1.stackTrace;
        t1.toString;
        _this._future._completeErrorObject$1(new A.AsyncError(t2, t1));
      }
    },
    $signature: 7
  };
  A.Future_wait_closure.prototype = {
    call$1(value) {
      var remainingResults, valueList, t1, value0, t3, t4, _i, t5, _this = this,
        t2 = _this.T;
      t2._as(value);
      t3 = _this._box_0;
      remainingResults = --t3.remaining;
      valueList = t3.values;
      if (valueList != null) {
        t3 = _this.pos;
        A.assertHelper(J.$index$asx(valueList, t3) == null);
        J.$indexSet$ax(valueList, t3, value);
        if (J.$eq$(remainingResults, 0)) {
          t1 = A._setArrayType([], t2._eval$1("JSArray<0>"));
          for (t3 = valueList, t4 = t3.length, _i = 0; _i < t3.length; t3.length === t4 || (0, A.throwConcurrentModificationError)(t3), ++_i) {
            value0 = t3[_i];
            t5 = value0;
            if (t5 == null)
              t5 = t2._as(t5);
            J.add$1$ax(t1, t5);
          }
          _this._future._completeWithValue$1(t1);
        }
      } else if (J.$eq$(remainingResults, 0) && !_this.eagerError) {
        t1 = t3.error;
        t1.toString;
        t3 = t3.stackTrace;
        t3.toString;
        _this._future._completeErrorObject$1(new A.AsyncError(t1, t3));
      }
    },
    $signature() {
      return this.T._eval$1("Null(0)");
    }
  };
  A._Completer.prototype = {
    completeError$2(error, stackTrace) {
      A._asObject(error);
      type$.nullable_StackTrace._as(stackTrace);
      if ((this.future._state & 30) !== 0)
        throw A.wrapException(A.StateError$("Future already completed"));
      this._completeErrorObject$1(A._interceptUserError(error, stackTrace));
    },
    completeError$1(error) {
      return this.completeError$2(error, null);
    },
    $isCompleter: 1
  };
  A._AsyncCompleter.prototype = {
    complete$1(value) {
      var t2,
        t1 = this.$ti;
      t1._eval$1("1/?")._as(value);
      t2 = this.future;
      if ((t2._state & 30) !== 0)
        throw A.wrapException(A.StateError$("Future already completed"));
      t2._asyncComplete$1(t1._eval$1("1/")._as(value));
    },
    complete$0() {
      return this.complete$1(null);
    },
    _completeErrorObject$1(error) {
      this.future._asyncCompleteErrorObject$1(error);
    }
  };
  A._SyncCompleter.prototype = {
    complete$1(value) {
      var t2,
        t1 = this.$ti;
      t1._eval$1("1/?")._as(value);
      t2 = this.future;
      if ((t2._state & 30) !== 0)
        throw A.wrapException(A.StateError$("Future already completed"));
      t2._complete$1(t1._eval$1("1/")._as(value));
    },
    complete$0() {
      return this.complete$1(null);
    },
    _completeErrorObject$1(error) {
      this.future._completeErrorObject$1(error);
    }
  };
  A._FutureListener.prototype = {
    matchesErrorTest$1(asyncError) {
      if ((this.state & 15) !== 6)
        return true;
      return this.result._zone.runUnary$2$2(type$.bool_Function_Object._as(this.callback), asyncError.error, type$.bool, type$.Object);
    },
    handleError$1(asyncError) {
      var result, errorCallback, t2, t3, t4, t5, exception, _this = this,
        t1 = _this.state;
      A.assertHelper((t1 & 2) !== 0 && _this.errorCallback != null);
      errorCallback = _this.errorCallback;
      result = null;
      t2 = type$.dynamic;
      t3 = type$.Object;
      t4 = asyncError.error;
      t5 = _this.result._zone;
      if (type$.dynamic_Function_Object_StackTrace._is(errorCallback))
        result = t5.runBinary$3$3(errorCallback, t4, asyncError.stackTrace, t2, t3, type$.StackTrace);
      else
        result = t5.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), t4, t2, t3);
      try {
        t2 = _this.$ti._eval$1("2/")._as(result);
        return t2;
      } catch (exception) {
        if (type$.TypeError._is(A.unwrapException(exception))) {
          if ((t1 & 1) !== 0)
            throw A.wrapException(A.ArgumentError$("The error handler of Future.then must return a value of the returned future's type", "onError"));
          throw A.wrapException(A.ArgumentError$("The error handler of Future.catchError must return a value of the future's type", "onError"));
        } else
          throw exception;
      }
    }
  };
  A._Future.prototype = {
    then$1$2$onError(f, onError, $R) {
      var currentZone, result, t2,
        t1 = this.$ti;
      t1._bind$1($R)._eval$1("1/(2)")._as(f);
      currentZone = $.Zone__current;
      if (currentZone === B.C__RootZone) {
        if (onError != null && !type$.dynamic_Function_Object_StackTrace._is(onError) && !type$.dynamic_Function_Object._is(onError))
          throw A.wrapException(A.ArgumentError$value(onError, "onError", string$.Error_));
      } else {
        f = currentZone.registerUnaryCallback$2$1(f, $R._eval$1("0/"), t1._precomputed1);
        if (onError != null)
          onError = A._registerErrorHandler(onError, currentZone);
      }
      result = new A._Future($.Zone__current, $R._eval$1("_Future<0>"));
      t2 = onError == null ? 1 : 3;
      this._addListener$1(new A._FutureListener(result, t2, f, onError, t1._eval$1("@<1>")._bind$1($R)._eval$1("_FutureListener<1,2>")));
      return result;
    },
    then$1$1(f, $R) {
      return this.then$1$2$onError(f, null, $R);
    },
    _thenAwait$1$2(f, onError, $E) {
      var result,
        t1 = this.$ti;
      t1._bind$1($E)._eval$1("1/(2)")._as(f);
      result = new A._Future($.Zone__current, $E._eval$1("_Future<0>"));
      this._addListener$1(new A._FutureListener(result, 19, f, onError, t1._eval$1("@<1>")._bind$1($E)._eval$1("_FutureListener<1,2>")));
      return result;
    },
    whenComplete$1(action) {
      var t1, t2, result;
      type$.dynamic_Function._as(action);
      t1 = this.$ti;
      t2 = $.Zone__current;
      result = new A._Future(t2, t1);
      if (t2 !== B.C__RootZone)
        action = t2.registerCallback$1$1(action, type$.dynamic);
      this._addListener$1(new A._FutureListener(result, 8, action, null, t1._eval$1("_FutureListener<1,1>")));
      return result;
    },
    _setPendingComplete$0() {
      A.assertHelper((this._state & 30) === 0);
      this._state ^= 2;
    },
    _setErrorObject$1(error) {
      var _this = this;
      A.assertHelper((_this._state & 24) === 0);
      _this._state = _this._state & 1 | 16;
      _this._resultOrListeners = error;
    },
    _cloneResult$1(source) {
      var _this = this;
      A.assertHelper((_this._state & 24) === 0);
      A.assertHelper((source._state & 24) !== 0);
      _this._state = source._state & 30 | _this._state & 1;
      _this._resultOrListeners = source._resultOrListeners;
    },
    _addListener$1(listener) {
      var t1, source, _this = this;
      A.assertHelper(listener._nextListener == null);
      t1 = _this._state;
      if (t1 <= 3) {
        listener._nextListener = type$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners);
        _this._resultOrListeners = listener;
      } else {
        if ((t1 & 4) !== 0) {
          source = type$._Future_dynamic._as(_this._resultOrListeners);
          if ((source._state & 24) === 0) {
            source._addListener$1(listener);
            return;
          }
          _this._cloneResult$1(source);
        }
        A.assertHelper((_this._state & 24) !== 0);
        _this._zone.scheduleMicrotask$1(new A._Future__addListener_closure(_this, listener));
      }
    },
    _prependListeners$1(listeners) {
      var t1, existingListeners, next, cursor, next0, source, _this = this, _box_0 = {};
      _box_0.listeners = listeners;
      if (listeners == null)
        return;
      t1 = _this._state;
      if (t1 <= 3) {
        existingListeners = type$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners);
        _this._resultOrListeners = listeners;
        if (existingListeners != null) {
          next = listeners._nextListener;
          for (cursor = listeners; next != null; cursor = next, next = next0)
            next0 = next._nextListener;
          cursor._nextListener = existingListeners;
        }
      } else {
        if ((t1 & 4) !== 0) {
          source = type$._Future_dynamic._as(_this._resultOrListeners);
          if ((source._state & 24) === 0) {
            source._prependListeners$1(listeners);
            return;
          }
          _this._cloneResult$1(source);
        }
        A.assertHelper((_this._state & 24) !== 0);
        _box_0.listeners = _this._reverseListeners$1(listeners);
        _this._zone.scheduleMicrotask$1(new A._Future__prependListeners_closure(_box_0, _this));
      }
    },
    _removeListeners$0() {
      var current, _this = this;
      A.assertHelper((_this._state & 24) === 0);
      current = type$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners);
      _this._resultOrListeners = null;
      return _this._reverseListeners$1(current);
    },
    _reverseListeners$1(listeners) {
      var current, prev, next;
      for (current = listeners, prev = null; current != null; prev = current, current = next) {
        next = current._nextListener;
        current._nextListener = prev;
      }
      return prev;
    },
    _complete$1(value) {
      var listeners, _this = this,
        t1 = _this.$ti;
      t1._eval$1("1/")._as(value);
      A.assertHelper((_this._state & 24) === 0);
      if (t1._eval$1("Future<1>")._is(value))
        A._Future__chainCoreFuture(value, _this, true);
      else {
        listeners = _this._removeListeners$0();
        t1._precomputed1._as(value);
        A.assertHelper((_this._state & 24) === 0);
        _this._state = 8;
        _this._resultOrListeners = value;
        A._Future__propagateToListeners(_this, listeners);
      }
    },
    _completeWithValue$1(value) {
      var listeners, _this = this;
      _this.$ti._precomputed1._as(value);
      A.assertHelper((_this._state & 24) === 0);
      listeners = _this._removeListeners$0();
      A.assertHelper((_this._state & 24) === 0);
      _this._state = 8;
      _this._resultOrListeners = value;
      A._Future__propagateToListeners(_this, listeners);
    },
    _completeWithResultOf$1(source) {
      var t1, t2, listeners, _this = this;
      A.assertHelper((source._state & 24) !== 0);
      if ((source._state & 16) !== 0) {
        t1 = _this._zone;
        t2 = source._zone;
        t1 = !(t1 === t2 || t1.get$errorZone() === t2.get$errorZone());
      } else
        t1 = false;
      if (t1)
        return;
      listeners = _this._removeListeners$0();
      _this._cloneResult$1(source);
      A._Future__propagateToListeners(_this, listeners);
    },
    _completeErrorObject$1(error) {
      var listeners, _this = this;
      A.assertHelper((_this._state & 24) === 0);
      listeners = _this._removeListeners$0();
      _this._setErrorObject$1(error);
      A._Future__propagateToListeners(_this, listeners);
    },
    _completeError$2(error, stackTrace) {
      A._asObject(error);
      type$.StackTrace._as(stackTrace);
      this._completeErrorObject$1(new A.AsyncError(error, stackTrace));
    },
    _asyncComplete$1(value) {
      var _this = this,
        t1 = _this.$ti;
      t1._eval$1("1/")._as(value);
      A.assertHelper((_this._state & 24) === 0);
      if (t1._eval$1("Future<1>")._is(value)) {
        _this._chainFuture$1(value);
        return;
      }
      _this._asyncCompleteWithValue$1(value);
    },
    _asyncCompleteWithValue$1(value) {
      var _this = this;
      _this.$ti._precomputed1._as(value);
      _this._setPendingComplete$0();
      _this._zone.scheduleMicrotask$1(new A._Future__asyncCompleteWithValue_closure(_this, value));
    },
    _chainFuture$1(value) {
      this.$ti._eval$1("Future<1>")._as(value);
      A.assertHelper((this._state & 30) === 0);
      A._Future__chainCoreFuture(value, this, false);
      return;
    },
    _asyncCompleteErrorObject$1(error) {
      var _this = this;
      A.assertHelper((_this._state & 24) === 0);
      _this._setPendingComplete$0();
      _this._zone.scheduleMicrotask$1(new A._Future__asyncCompleteErrorObject_closure(_this, error));
    },
    $isFuture: 1
  };
  A._Future__addListener_closure.prototype = {
    call$0() {
      A._Future__propagateToListeners(this.$this, this.listener);
    },
    $signature: 0
  };
  A._Future__prependListeners_closure.prototype = {
    call$0() {
      A._Future__propagateToListeners(this.$this, this._box_0.listeners);
    },
    $signature: 0
  };
  A._Future__chainCoreFuture_closure.prototype = {
    call$0() {
      A._Future__chainCoreFuture(this._box_0.source, this.target, true);
    },
    $signature: 0
  };
  A._Future__asyncCompleteWithValue_closure.prototype = {
    call$0() {
      this.$this._completeWithValue$1(this.value);
    },
    $signature: 0
  };
  A._Future__asyncCompleteErrorObject_closure.prototype = {
    call$0() {
      this.$this._completeErrorObject$1(this.error);
    },
    $signature: 0
  };
  A._Future__propagateToListeners_handleWhenCompleteCallback.prototype = {
    call$0() {
      var completeResult, e, s, t2, t3, exception, originalSource, joinedResult, _this = this,
        t1 = _this._box_0;
      A.assertHelper((t1.listener.state & 1) === 0);
      A.assertHelper((t1.listener.state & 2) === 0);
      completeResult = null;
      try {
        t2 = t1.listener;
        t3 = t2.state;
        A.assertHelper((t3 & 2) === 0);
        A.assertHelper((t3 & 15) === 8);
        completeResult = t2.result._zone.run$1$1(type$.dynamic_Function._as(t2.callback), type$.dynamic);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        if (_this.hasError) {
          t2 = _this._box_1.source;
          A.assertHelper((t2._state & 16) !== 0);
          t2 = type$.AsyncError._as(t2._resultOrListeners).error === e;
        } else
          t2 = false;
        if (t2) {
          t2 = _this._box_1.source;
          A.assertHelper((t2._state & 16) !== 0);
          t1.listenerValueOrError = type$.AsyncError._as(t2._resultOrListeners);
        } else {
          t2 = e;
          t3 = s;
          t1.listenerValueOrError = new A.AsyncError(t2, t3 == null ? A.AsyncError_defaultStackTrace(t2) : t3);
        }
        t1.listenerHasError = true;
        return;
      }
      if (completeResult instanceof A._Future && (completeResult._state & 24) !== 0) {
        if ((completeResult._state & 16) !== 0) {
          t2 = completeResult;
          A.assertHelper((t2._state & 16) !== 0);
          t1.listenerValueOrError = type$.AsyncError._as(t2._resultOrListeners);
          t1.listenerHasError = true;
        }
        return;
      }
      if (completeResult instanceof A._Future) {
        originalSource = _this._box_1.source;
        joinedResult = new A._Future(originalSource._zone, originalSource.$ti);
        completeResult.then$1$2$onError(new A._Future__propagateToListeners_handleWhenCompleteCallback_closure(joinedResult, originalSource), new A._Future__propagateToListeners_handleWhenCompleteCallback_closure0(joinedResult), type$.void);
        t1.listenerValueOrError = joinedResult;
        t1.listenerHasError = false;
      }
    },
    $signature: 0
  };
  A._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = {
    call$1(__wc0_formal) {
      this.joinedResult._completeWithResultOf$1(this.originalSource);
    },
    $signature: 35
  };
  A._Future__propagateToListeners_handleWhenCompleteCallback_closure0.prototype = {
    call$2(e, s) {
      A._asObject(e);
      type$.StackTrace._as(s);
      this.joinedResult._completeErrorObject$1(new A.AsyncError(e, s));
    },
    $signature: 76
  };
  A._Future__propagateToListeners_handleValueCallback.prototype = {
    call$0() {
      var e, s, t1, t2, t3, t4, t5, exception;
      try {
        t1 = this._box_0;
        t2 = t1.listener;
        t3 = t2.$ti;
        t4 = t3._precomputed1;
        t5 = t4._as(this.sourceResult);
        A.assertHelper((t2.state & 1) !== 0);
        t1.listenerValueOrError = t2.result._zone.runUnary$2$2(t3._eval$1("2/(1)")._as(t2.callback), t5, t3._eval$1("2/"), t4);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = e;
        t2 = s;
        if (t2 == null)
          t2 = A.AsyncError_defaultStackTrace(t1);
        t3 = this._box_0;
        t3.listenerValueOrError = new A.AsyncError(t1, t2);
        t3.listenerHasError = true;
      }
    },
    $signature: 0
  };
  A._Future__propagateToListeners_handleError.prototype = {
    call$0() {
      var asyncError, e, s, t1, t2, exception, t3, _this = this;
      try {
        t1 = _this._box_1.source;
        A.assertHelper((t1._state & 16) !== 0);
        asyncError = type$.AsyncError._as(t1._resultOrListeners);
        t1 = _this._box_0;
        if (t1.listener.matchesErrorTest$1(asyncError)) {
          t2 = t1.listener;
          A.assertHelper((t2.state & 2) !== 0);
          t2 = t2.errorCallback != null;
        } else
          t2 = false;
        if (t2) {
          t1.listenerValueOrError = t1.listener.handleError$1(asyncError);
          t1.listenerHasError = false;
        }
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = _this._box_1;
        t2 = t1.source;
        A.assertHelper((t2._state & 16) !== 0);
        t3 = type$.AsyncError;
        if (t3._as(t2._resultOrListeners).error === e) {
          t1 = t1.source;
          A.assertHelper((t1._state & 16) !== 0);
          t2 = _this._box_0;
          t2.listenerValueOrError = t3._as(t1._resultOrListeners);
          t1 = t2;
        } else {
          t1 = e;
          t2 = s;
          if (t2 == null)
            t2 = A.AsyncError_defaultStackTrace(t1);
          t3 = _this._box_0;
          t3.listenerValueOrError = new A.AsyncError(t1, t2);
          t1 = t3;
        }
        t1.listenerHasError = true;
      }
    },
    $signature: 0
  };
  A._AsyncCallbackEntry.prototype = {};
  A.Stream.prototype = {
    get$length(_) {
      var t1 = {},
        future = new A._Future($.Zone__current, type$._Future_int);
      t1.count = 0;
      this.listen$4$cancelOnError$onDone$onError(new A.Stream_length_closure(t1, this), true, new A.Stream_length_closure0(t1, future), future.get$_completeError());
      return future;
    },
    get$first(_) {
      var future = new A._Future($.Zone__current, A._instanceType(this)._eval$1("_Future<Stream.T>")),
        subscription = this.listen$4$cancelOnError$onDone$onError(null, true, new A.Stream_first_closure(future), future.get$_completeError());
      subscription.onData$1(new A.Stream_first_closure0(this, subscription, future));
      return future;
    },
    firstWhere$1(_, test) {
      var future, subscription, _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("bool(Stream.T)")._as(test);
      future = new A._Future($.Zone__current, t1._eval$1("_Future<Stream.T>"));
      subscription = _this.listen$4$cancelOnError$onDone$onError(null, true, new A.Stream_firstWhere_closure(_this, null, future), future.get$_completeError());
      subscription.onData$1(new A.Stream_firstWhere_closure0(_this, test, subscription, future));
      return future;
    }
  };
  A.Stream_length_closure.prototype = {
    call$1(__wc0_formal) {
      A._instanceType(this.$this)._eval$1("Stream.T")._as(__wc0_formal);
      ++this._box_0.count;
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(Stream.T)");
    }
  };
  A.Stream_length_closure0.prototype = {
    call$0() {
      this.future._complete$1(this._box_0.count);
    },
    $signature: 0
  };
  A.Stream_first_closure.prototype = {
    call$0() {
      var t1,
        error = new A.StateError("No element");
      A.Primitives_trySetStackTrace(error, B._StringStackTrace_OdL);
      t1 = A._interceptError(error, B._StringStackTrace_OdL);
      if (t1 == null)
        t1 = new A.AsyncError(error, B._StringStackTrace_OdL);
      this.future._completeErrorObject$1(t1);
    },
    $signature: 0
  };
  A.Stream_first_closure0.prototype = {
    call$1(value) {
      A._cancelAndValue(this.subscription, this.future, A._instanceType(this.$this)._eval$1("Stream.T")._as(value));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(Stream.T)");
    }
  };
  A.Stream_firstWhere_closure.prototype = {
    call$0() {
      var t1,
        error = new A.StateError("No element");
      A.Primitives_trySetStackTrace(error, B._StringStackTrace_OdL);
      t1 = A._interceptError(error, B._StringStackTrace_OdL);
      if (t1 == null)
        t1 = new A.AsyncError(error, B._StringStackTrace_OdL);
      this.future._completeErrorObject$1(t1);
    },
    $signature: 0
  };
  A.Stream_firstWhere_closure0.prototype = {
    call$1(value) {
      var t1, t2, _this = this;
      A._instanceType(_this.$this)._eval$1("Stream.T")._as(value);
      t1 = _this.subscription;
      t2 = _this.future;
      A._runUserCode(new A.Stream_firstWhere__closure(_this.test, value), new A.Stream_firstWhere__closure0(t1, t2, value), A._cancelAndErrorClosure(t1, t2), type$.bool);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(Stream.T)");
    }
  };
  A.Stream_firstWhere__closure.prototype = {
    call$0() {
      return this.test.call$1(this.value);
    },
    $signature: 34
  };
  A.Stream_firstWhere__closure0.prototype = {
    call$1(isMatch) {
      if (A._asBool(isMatch))
        A._cancelAndValue(this.subscription, this.future, this.value);
    },
    $signature: 38
  };
  A.StreamTransformerBase.prototype = {$isStreamTransformer: 1};
  A._StreamController.prototype = {
    get$_pendingEvents() {
      var t1, _this = this;
      A.assertHelper((_this._state & 3) === 0);
      if ((_this._state & 8) === 0)
        return A._instanceType(_this)._eval$1("_PendingEvents<1>?")._as(_this._varData);
      t1 = A._instanceType(_this);
      return t1._eval$1("_PendingEvents<1>?")._as(t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).get$_varData());
    },
    _ensurePendingEvents$0() {
      var events, t1, _this = this;
      A.assertHelper((_this._state & 3) === 0);
      if ((_this._state & 8) === 0) {
        events = _this._varData;
        if (events == null)
          events = _this._varData = new A._PendingEvents(A._instanceType(_this)._eval$1("_PendingEvents<1>"));
        return A._instanceType(_this)._eval$1("_PendingEvents<1>")._as(events);
      }
      t1 = A._instanceType(_this);
      events = t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).get$_varData();
      return t1._eval$1("_PendingEvents<1>")._as(events);
    },
    get$_subscription() {
      var varData, _this = this;
      A.assertHelper((_this._state & 1) !== 0);
      varData = _this._varData;
      if ((_this._state & 8) !== 0)
        varData = type$._StreamControllerAddStreamState_nullable_Object._as(varData).get$_varData();
      return A._instanceType(_this)._eval$1("_ControllerSubscription<1>")._as(varData);
    },
    _badEventState$0() {
      var t1 = this._state;
      if ((t1 & 4) !== 0)
        return new A.StateError("Cannot add event after closing");
      A.assertHelper((t1 & 8) !== 0);
      return new A.StateError("Cannot add event while adding a stream");
    },
    _ensureDoneFuture$0() {
      var t1 = this._doneFuture;
      if (t1 == null)
        t1 = this._doneFuture = (this._state & 2) !== 0 ? $.$get$Future__nullFuture() : new A._Future($.Zone__current, type$._Future_void);
      return t1;
    },
    add$1(_, value) {
      var t2, _this = this,
        t1 = A._instanceType(_this);
      t1._precomputed1._as(value);
      t2 = _this._state;
      if (t2 >= 4)
        throw A.wrapException(_this._badEventState$0());
      if ((t2 & 1) !== 0)
        _this._sendData$1(value);
      else if ((t2 & 3) === 0)
        _this._ensurePendingEvents$0().add$1(0, new A._DelayedData(value, t1._eval$1("_DelayedData<1>")));
    },
    addError$2(error, stackTrace) {
      var _0_0, t1, _this = this;
      A._asObject(error);
      type$.nullable_StackTrace._as(stackTrace);
      if (_this._state >= 4)
        throw A.wrapException(_this._badEventState$0());
      _0_0 = A._interceptUserError(error, stackTrace);
      error = _0_0.error;
      stackTrace = _0_0.stackTrace;
      t1 = _this._state;
      if ((t1 & 1) !== 0)
        _this._sendError$2(error, stackTrace);
      else if ((t1 & 3) === 0)
        _this._ensurePendingEvents$0().add$1(0, new A._DelayedError(error, stackTrace));
    },
    addError$1(error) {
      return this.addError$2(error, null);
    },
    close$0() {
      var _this = this,
        t1 = _this._state;
      if ((t1 & 4) !== 0)
        return _this._ensureDoneFuture$0();
      if (t1 >= 4)
        throw A.wrapException(_this._badEventState$0());
      t1 = _this._state = t1 | 4;
      if ((t1 & 1) !== 0)
        _this._sendDone$0();
      else if ((t1 & 3) === 0)
        _this._ensurePendingEvents$0().add$1(0, B.C__DelayedDone);
      return _this._ensureDoneFuture$0();
    },
    _subscribe$4(onData, onError, onDone, cancelOnError) {
      var subscription, pendingEvents, addState, _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("~(1)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      if ((_this._state & 3) !== 0)
        throw A.wrapException(A.StateError$("Stream has already been listened to."));
      subscription = A._ControllerSubscription$(_this, onData, onError, onDone, cancelOnError, t1._precomputed1);
      pendingEvents = _this.get$_pendingEvents();
      if (((_this._state |= 1) & 8) !== 0) {
        addState = t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData);
        addState.set$_varData(subscription);
        addState.resume$0();
      } else
        _this._varData = subscription;
      subscription._setPendingEvents$1(pendingEvents);
      subscription._guardCallback$1(new A._StreamController__subscribe_closure(_this));
      return subscription;
    },
    _recordCancel$1(subscription) {
      var result, onCancel, cancelResult, e, s, exception, result0, t2, _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("StreamSubscription<1>")._as(subscription);
      result = null;
      if ((_this._state & 8) !== 0)
        result = t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).cancel$0();
      _this._varData = null;
      _this._state = _this._state & 4294967286 | 2;
      onCancel = _this.onCancel;
      if (onCancel != null)
        if (result == null)
          try {
            cancelResult = onCancel.call$0();
            if (cancelResult instanceof A._Future)
              result = cancelResult;
          } catch (exception) {
            e = A.unwrapException(exception);
            s = A.getTraceFromException(exception);
            result0 = new A._Future($.Zone__current, type$._Future_void);
            t1 = A._asObject(e);
            t2 = type$.StackTrace._as(s);
            result0._asyncCompleteErrorObject$1(new A.AsyncError(t1, t2));
            result = result0;
          }
        else
          result = result.whenComplete$1(onCancel);
      t1 = new A._StreamController__recordCancel_complete(_this);
      if (result != null)
        result = result.whenComplete$1(t1);
      else
        t1.call$0();
      return result;
    },
    _recordPause$1(subscription) {
      var _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("StreamSubscription<1>")._as(subscription);
      if ((_this._state & 8) !== 0)
        t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).pause$0();
      A._runGuarded(_this.onPause);
    },
    _recordResume$1(subscription) {
      var _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("StreamSubscription<1>")._as(subscription);
      if ((_this._state & 8) !== 0)
        t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).resume$0();
      A._runGuarded(_this.onResume);
    },
    set$onListen(onListen) {
      this.onListen = type$.nullable_void_Function._as(onListen);
    },
    set$onResume(onResume) {
      this.onResume = type$.nullable_void_Function._as(onResume);
    },
    $isEventSink: 1,
    $isStreamSink: 1,
    $isStreamController: 1,
    $is_StreamControllerLifecycle: 1,
    $is_EventSink: 1,
    $is_EventDispatch: 1
  };
  A._StreamController__subscribe_closure.prototype = {
    call$0() {
      A._runGuarded(this.$this.onListen);
    },
    $signature: 0
  };
  A._StreamController__recordCancel_complete.prototype = {
    call$0() {
      var doneFuture = this.$this._doneFuture;
      if (doneFuture != null && (doneFuture._state & 30) === 0)
        doneFuture._asyncComplete$1(null);
    },
    $signature: 0
  };
  A._SyncStreamControllerDispatch.prototype = {
    _sendData$1(data) {
      this.$ti._precomputed1._as(data);
      this.get$_subscription()._async$_add$1(data);
    },
    _sendError$2(error, stackTrace) {
      this.get$_subscription()._addError$2(error, stackTrace);
    },
    _sendDone$0() {
      this.get$_subscription()._close$0();
    }
  };
  A._AsyncStreamControllerDispatch.prototype = {
    _sendData$1(data) {
      var t1 = this.$ti;
      t1._precomputed1._as(data);
      this.get$_subscription()._addPending$1(new A._DelayedData(data, t1._eval$1("_DelayedData<1>")));
    },
    _sendError$2(error, stackTrace) {
      this.get$_subscription()._addPending$1(new A._DelayedError(error, stackTrace));
    },
    _sendDone$0() {
      this.get$_subscription()._addPending$1(B.C__DelayedDone);
    }
  };
  A._AsyncStreamController.prototype = {};
  A._SyncStreamController.prototype = {};
  A._ControllerStream.prototype = {
    get$hashCode(_) {
      return (A.Primitives_objectHashCode(this._controller) ^ 892482866) >>> 0;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      if (this === other)
        return true;
      return other instanceof A._ControllerStream && other._controller === this._controller;
    }
  };
  A._ControllerSubscription.prototype = {
    _onCancel$0() {
      return this._controller._recordCancel$1(this);
    },
    _onPause$0() {
      this._controller._recordPause$1(this);
    },
    _onResume$0() {
      this._controller._recordResume$1(this);
    }
  };
  A._StreamSinkWrapper.prototype = {
    add$1(_, data) {
      this._async$_target.add$1(0, this.$ti._precomputed1._as(data));
    },
    addError$2(error, stackTrace) {
      this._async$_target.addError$2(error, stackTrace);
    },
    close$0() {
      return this._async$_target.close$0();
    },
    $isEventSink: 1,
    $isStreamSink: 1
  };
  A._BufferingStreamSubscription.prototype = {
    _setPendingEvents$1(pendingEvents) {
      var _this = this;
      A._instanceType(_this)._eval$1("_PendingEvents<_BufferingStreamSubscription.T>?")._as(pendingEvents);
      A.assertHelper(_this._pending == null);
      if (pendingEvents == null)
        return;
      _this._pending = pendingEvents;
      if (pendingEvents.lastPendingEvent != null) {
        _this._state = (_this._state | 128) >>> 0;
        pendingEvents.schedule$1(_this);
      }
    },
    onData$1(handleData) {
      var t1 = A._instanceType(this);
      this._async$_onData = A._BufferingStreamSubscription__registerDataHandler(this._zone, t1._eval$1("~(_BufferingStreamSubscription.T)?")._as(handleData), t1._eval$1("_BufferingStreamSubscription.T"));
    },
    onError$1(handleError) {
      var _this = this;
      _this._state = (_this._state & 4294967263) >>> 0;
      _this._onError = A._BufferingStreamSubscription__registerErrorHandler(_this._zone, handleError);
    },
    pause$0() {
      var t2, t3, _this = this,
        t1 = _this._state;
      if ((t1 & 8) !== 0)
        return;
      t2 = (t1 + 256 | 4) >>> 0;
      _this._state = t2;
      if (t1 < 256) {
        t3 = _this._pending;
        if (t3 != null)
          if (t3._state === 1)
            t3._state = 3;
      }
      if ((t1 & 4) === 0 && (t2 & 64) === 0)
        _this._guardCallback$1(_this.get$_onPause());
    },
    resume$0() {
      var _this = this,
        t1 = _this._state;
      if ((t1 & 8) !== 0)
        return;
      if (t1 >= 256) {
        t1 = _this._state -= 256;
        if (t1 < 256)
          if ((t1 & 128) !== 0 && _this._pending.lastPendingEvent != null)
            _this._pending.schedule$1(_this);
          else {
            A.assertHelper(_this.get$_mayResumeInput());
            t1 = (_this._state & 4294967291) >>> 0;
            _this._state = t1;
            if ((t1 & 64) === 0)
              _this._guardCallback$1(_this.get$_onResume());
          }
      }
    },
    cancel$0() {
      var _this = this,
        t1 = (_this._state & 4294967279) >>> 0;
      _this._state = t1;
      if ((t1 & 8) === 0)
        _this._cancel$0();
      t1 = _this._cancelFuture;
      return t1 == null ? $.$get$Future__nullFuture() : t1;
    },
    get$_mayResumeInput() {
      if (this._state < 256) {
        var t1 = this._pending;
        t1 = t1 == null ? null : t1.lastPendingEvent == null;
        t1 = t1 !== false;
      } else
        t1 = false;
      return t1;
    },
    _cancel$0() {
      var t2, _this = this,
        t1 = _this._state = (_this._state | 8) >>> 0;
      if ((t1 & 128) !== 0) {
        t2 = _this._pending;
        if (t2._state === 1)
          t2._state = 3;
      }
      if ((t1 & 64) === 0)
        _this._pending = null;
      _this._cancelFuture = _this._onCancel$0();
    },
    _async$_add$1(data) {
      var t2, _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("_BufferingStreamSubscription.T")._as(data);
      A.assertHelper((_this._state & 2) === 0);
      t2 = _this._state;
      if ((t2 & 8) !== 0)
        return;
      if (t2 < 64)
        _this._sendData$1(data);
      else
        _this._addPending$1(new A._DelayedData(data, t1._eval$1("_DelayedData<_BufferingStreamSubscription.T>")));
    },
    _addError$2(error, stackTrace) {
      var t1;
      if (type$.Error._is(error))
        A.Primitives_trySetStackTrace(error, stackTrace);
      t1 = this._state;
      if ((t1 & 8) !== 0)
        return;
      if (t1 < 64)
        this._sendError$2(error, stackTrace);
      else
        this._addPending$1(new A._DelayedError(error, stackTrace));
    },
    _close$0() {
      var t1, _this = this;
      A.assertHelper((_this._state & 2) === 0);
      t1 = _this._state;
      if ((t1 & 8) !== 0)
        return;
      t1 = (t1 | 2) >>> 0;
      _this._state = t1;
      if (t1 < 64)
        _this._sendDone$0();
      else
        _this._addPending$1(B.C__DelayedDone);
    },
    _onPause$0() {
      A.assertHelper((this._state & 4) !== 0);
    },
    _onResume$0() {
      A.assertHelper((this._state & 4) === 0);
    },
    _onCancel$0() {
      A.assertHelper((this._state & 8) !== 0);
      return null;
    },
    _addPending$1($event) {
      var t1, _this = this,
        pending = _this._pending;
      if (pending == null)
        pending = _this._pending = new A._PendingEvents(A._instanceType(_this)._eval$1("_PendingEvents<_BufferingStreamSubscription.T>"));
      pending.add$1(0, $event);
      t1 = _this._state;
      if ((t1 & 128) === 0) {
        t1 = (t1 | 128) >>> 0;
        _this._state = t1;
        if (t1 < 256)
          pending.schedule$1(_this);
      }
    },
    _sendData$1(data) {
      var t2, _this = this,
        t1 = A._instanceType(_this)._eval$1("_BufferingStreamSubscription.T");
      t1._as(data);
      A.assertHelper((_this._state & 8) === 0);
      A.assertHelper(_this._state < 256);
      A.assertHelper((_this._state & 64) === 0);
      t2 = _this._state;
      _this._state = (t2 | 64) >>> 0;
      _this._zone.runUnaryGuarded$1$2(_this._async$_onData, data, t1);
      _this._state = (_this._state & 4294967231) >>> 0;
      _this._checkState$1((t2 & 4) !== 0);
    },
    _sendError$2(error, stackTrace) {
      var t1, t2, cancelFuture, _this = this;
      A.assertHelper((_this._state & 8) === 0);
      A.assertHelper(_this._state < 256);
      A.assertHelper((_this._state & 64) === 0);
      t1 = _this._state;
      t2 = new A._BufferingStreamSubscription__sendError_sendError(_this, error, stackTrace);
      if ((t1 & 1) !== 0) {
        _this._state = (t1 | 16) >>> 0;
        _this._cancel$0();
        cancelFuture = _this._cancelFuture;
        if (cancelFuture != null && cancelFuture !== $.$get$Future__nullFuture())
          cancelFuture.whenComplete$1(t2);
        else
          t2.call$0();
      } else {
        t2.call$0();
        _this._checkState$1((t1 & 4) !== 0);
      }
    },
    _sendDone$0() {
      var t1, cancelFuture, _this = this;
      A.assertHelper((_this._state & 8) === 0);
      A.assertHelper(_this._state < 256);
      A.assertHelper((_this._state & 64) === 0);
      t1 = new A._BufferingStreamSubscription__sendDone_sendDone(_this);
      _this._cancel$0();
      _this._state = (_this._state | 16) >>> 0;
      cancelFuture = _this._cancelFuture;
      if (cancelFuture != null && cancelFuture !== $.$get$Future__nullFuture())
        cancelFuture.whenComplete$1(t1);
      else
        t1.call$0();
    },
    _guardCallback$1(callback) {
      var t1, _this = this;
      type$.void_Function._as(callback);
      A.assertHelper((_this._state & 64) === 0);
      t1 = _this._state;
      _this._state = (t1 | 64) >>> 0;
      callback.call$0();
      _this._state = (_this._state & 4294967231) >>> 0;
      _this._checkState$1((t1 & 4) !== 0);
    },
    _checkState$1(wasInputPaused) {
      var t1, isInputPaused, _this = this;
      A.assertHelper((_this._state & 64) === 0);
      t1 = _this._state;
      if ((t1 & 128) !== 0 && _this._pending.lastPendingEvent == null) {
        t1 = _this._state = (t1 & 4294967167) >>> 0;
        if ((t1 & 4) !== 0 && _this.get$_mayResumeInput()) {
          t1 = (t1 & 4294967291) >>> 0;
          _this._state = t1;
        }
      }
      for (;; wasInputPaused = isInputPaused) {
        if ((t1 & 8) !== 0) {
          _this._pending = null;
          return;
        }
        isInputPaused = (t1 & 4) !== 0;
        if (wasInputPaused === isInputPaused)
          break;
        _this._state = (t1 ^ 64) >>> 0;
        if (isInputPaused)
          _this._onPause$0();
        else
          _this._onResume$0();
        t1 = (_this._state & 4294967231) >>> 0;
        _this._state = t1;
      }
      if ((t1 & 128) !== 0 && t1 < 256)
        _this._pending.schedule$1(_this);
    },
    $isStreamSubscription: 1,
    $is_EventSink: 1,
    $is_EventDispatch: 1
  };
  A._BufferingStreamSubscription__sendError_sendError.prototype = {
    call$0() {
      var onError, t3, t4,
        t1 = this.$this,
        t2 = t1._state;
      if ((t2 & 8) !== 0 && (t2 & 16) === 0)
        return;
      t1._state = (t2 | 64) >>> 0;
      onError = t1._onError;
      t2 = this.error;
      t3 = type$.Object;
      t4 = t1._zone;
      if (type$.void_Function_Object_StackTrace._is(onError))
        t4.runBinaryGuarded$2$3(onError, t2, this.stackTrace, t3, type$.StackTrace);
      else
        t4.runUnaryGuarded$1$2(type$.void_Function_Object._as(onError), t2, t3);
      t1._state = (t1._state & 4294967231) >>> 0;
    },
    $signature: 0
  };
  A._BufferingStreamSubscription__sendDone_sendDone.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._state;
      if ((t2 & 16) === 0)
        return;
      t1._state = (t2 | 74) >>> 0;
      t1._zone.runGuarded$1(t1._onDone);
      t1._state = (t1._state & 4294967231) >>> 0;
    },
    $signature: 0
  };
  A._StreamImpl.prototype = {
    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
      var t1 = A._instanceType(this);
      t1._eval$1("~(1)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      return this._controller._subscribe$4(t1._eval$1("~(1)?")._as(onData), onError, onDone, cancelOnError === true);
    },
    listen$3$onDone$onError(onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
    },
    listen$1(onData) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, null, null);
    },
    listen$2$onDone(onData, onDone) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, null);
    }
  };
  A._DelayedEvent.prototype = {
    set$next(next) {
      this.next = type$.nullable__DelayedEvent_dynamic._as(next);
    },
    get$next() {
      return this.next;
    }
  };
  A._DelayedData.prototype = {
    perform$1(dispatch) {
      this.$ti._eval$1("_EventDispatch<1>")._as(dispatch)._sendData$1(this.value);
    }
  };
  A._DelayedError.prototype = {
    perform$1(dispatch) {
      dispatch._sendError$2(this.error, this.stackTrace);
    }
  };
  A._DelayedDone.prototype = {
    perform$1(dispatch) {
      dispatch._sendDone$0();
    },
    get$next() {
      return null;
    },
    set$next(__wc0_formal) {
      throw A.wrapException(A.StateError$("No events after a done."));
    },
    $is_DelayedEvent: 1
  };
  A._PendingEvents.prototype = {
    schedule$1(dispatch) {
      var t1, _this = this;
      _this.$ti._eval$1("_EventDispatch<1>")._as(dispatch);
      if (_this._state === 1)
        return;
      A.assertHelper(_this.lastPendingEvent != null);
      t1 = _this._state;
      if (t1 >= 1) {
        A.assertHelper(t1 === 3);
        _this._state = 1;
        return;
      }
      A.scheduleMicrotask(new A._PendingEvents_schedule_closure(_this, dispatch));
      _this._state = 1;
    },
    add$1(_, $event) {
      var _this = this,
        lastEvent = _this.lastPendingEvent;
      if (lastEvent == null)
        _this.firstPendingEvent = _this.lastPendingEvent = $event;
      else {
        lastEvent.set$next($event);
        _this.lastPendingEvent = $event;
      }
    }
  };
  A._PendingEvents_schedule_closure.prototype = {
    call$0() {
      var t2, $event, nextEvent,
        t1 = this.$this,
        oldState = t1._state;
      t1._state = 0;
      if (oldState === 3)
        return;
      t2 = t1.$ti._eval$1("_EventDispatch<1>")._as(this.dispatch);
      A.assertHelper(t1.lastPendingEvent != null);
      $event = t1.firstPendingEvent;
      nextEvent = $event.get$next();
      t1.firstPendingEvent = nextEvent;
      if (nextEvent == null)
        t1.lastPendingEvent = null;
      $event.perform$1(t2);
    },
    $signature: 0
  };
  A._DoneStreamSubscription.prototype = {
    onData$1(handleData) {
      this.$ti._eval$1("~(1)?")._as(handleData);
    },
    onError$1(handleError) {
    },
    pause$0() {
      var t1 = this._state;
      if (t1 >= 0)
        this._state = t1 + 2;
    },
    resume$0() {
      var _this = this,
        resumeState = _this._state - 2;
      if (resumeState < 0)
        return;
      if (resumeState === 0) {
        _this._state = 1;
        A.scheduleMicrotask(_this.get$_onMicrotask());
      } else
        _this._state = resumeState;
    },
    cancel$0() {
      this._state = -1;
      this._onDone = null;
      return $.$get$Future__nullFuture();
    },
    _onMicrotask$0() {
      var _0_0, _this = this,
        unscheduledState = _this._state - 1;
      if (unscheduledState === 0) {
        _this._state = -1;
        _0_0 = _this._onDone;
        if (_0_0 != null) {
          _this._onDone = null;
          _this._zone.runGuarded$1(_0_0);
        }
      } else
        _this._state = unscheduledState;
    },
    $isStreamSubscription: 1
  };
  A._StreamIterator.prototype = {
    get$current() {
      var _this = this;
      if (_this._async$_hasValue)
        return _this.$ti._precomputed1._as(_this._stateData);
      return _this.$ti._precomputed1._as(null);
    },
    moveNext$0() {
      var future, _this = this,
        subscription = _this._subscription;
      if (subscription != null) {
        if (_this._async$_hasValue) {
          future = new A._Future($.Zone__current, type$._Future_bool);
          _this._stateData = future;
          _this._async$_hasValue = false;
          subscription.resume$0();
          return future;
        }
        throw A.wrapException(A.StateError$("Already waiting for next."));
      }
      return _this._initializeOrDone$0();
    },
    _initializeOrDone$0() {
      var stateData, future, subscription, _this = this;
      A.assertHelper(_this._subscription == null);
      stateData = _this._stateData;
      if (stateData != null) {
        _this.$ti._eval$1("Stream<1>")._as(stateData);
        future = new A._Future($.Zone__current, type$._Future_bool);
        _this._stateData = future;
        subscription = stateData.listen$4$cancelOnError$onDone$onError(_this.get$_async$_onData(), true, _this.get$_onDone(), _this.get$_onError());
        if (_this._stateData != null)
          _this._subscription = subscription;
        return future;
      }
      return $.$get$Future__falseFuture();
    },
    cancel$0() {
      var _this = this,
        subscription = _this._subscription,
        stateData = _this._stateData;
      _this._stateData = null;
      if (subscription != null) {
        _this._subscription = null;
        if (!_this._async$_hasValue)
          type$._Future_bool._as(stateData)._asyncComplete$1(false);
        else
          _this._async$_hasValue = false;
        return subscription.cancel$0();
      }
      return $.$get$Future__nullFuture();
    },
    _async$_onData$1(data) {
      var moveNextFuture, t1, _this = this;
      _this.$ti._precomputed1._as(data);
      if (_this._subscription == null)
        return;
      moveNextFuture = type$._Future_bool._as(_this._stateData);
      _this._stateData = data;
      _this._async$_hasValue = true;
      moveNextFuture._complete$1(true);
      if (_this._async$_hasValue) {
        t1 = _this._subscription;
        if (t1 != null)
          t1.pause$0();
      }
    },
    _onError$2(error, stackTrace) {
      var subscription, moveNextFuture, _this = this;
      A._asObject(error);
      type$.StackTrace._as(stackTrace);
      subscription = _this._subscription;
      moveNextFuture = type$._Future_bool._as(_this._stateData);
      _this._stateData = _this._subscription = null;
      if (subscription != null)
        moveNextFuture._completeErrorObject$1(new A.AsyncError(error, stackTrace));
      else
        moveNextFuture._asyncCompleteErrorObject$1(new A.AsyncError(error, stackTrace));
    },
    _onDone$0() {
      var _this = this,
        subscription = _this._subscription,
        moveNextFuture = type$._Future_bool._as(_this._stateData);
      _this._stateData = _this._subscription = null;
      if (subscription != null)
        moveNextFuture._completeWithValue$1(false);
      else
        moveNextFuture._asyncCompleteWithValue$1(false);
    }
  };
  A._cancelAndError_closure.prototype = {
    call$0() {
      return this.future._completeErrorObject$1(this.error);
    },
    $signature: 0
  };
  A._cancelAndErrorClosure_closure.prototype = {
    call$2(error, stackTrace) {
      type$.StackTrace._as(stackTrace);
      A._cancelAndError(this.subscription, this.future, new A.AsyncError(error, stackTrace));
    },
    $signature: 7
  };
  A._cancelAndValue_closure.prototype = {
    call$0() {
      return this.future._complete$1(this.value);
    },
    $signature: 0
  };
  A._ForwardingStream.prototype = {
    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
      var t2, t3, t4, t5, t6,
        t1 = this.$ti;
      t1._eval$1("~(2)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      t2 = $.Zone__current;
      t3 = cancelOnError === true ? 1 : 0;
      t4 = onError != null ? 32 : 0;
      t5 = A._BufferingStreamSubscription__registerDataHandler(t2, onData, t1._rest[1]);
      t6 = A._BufferingStreamSubscription__registerErrorHandler(t2, onError);
      t1 = new A._ForwardingStreamSubscription(this, t5, t6, t2.registerCallback$1$1(onDone, type$.void), t2, t3 | t4, t1._eval$1("_ForwardingStreamSubscription<1,2>"));
      t1._subscription = this._async$_source.listen$3$onDone$onError(t1.get$_handleData(), t1.get$_handleDone(), t1.get$_handleError());
      return t1;
    },
    listen$3$onDone$onError(onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
    }
  };
  A._ForwardingStreamSubscription.prototype = {
    _async$_add$1(data) {
      this.$ti._rest[1]._as(data);
      if ((this._state & 2) !== 0)
        return;
      this.super$_BufferingStreamSubscription$_add(data);
    },
    _addError$2(error, stackTrace) {
      if ((this._state & 2) !== 0)
        return;
      this.super$_BufferingStreamSubscription$_addError(error, stackTrace);
    },
    _onPause$0() {
      var t1 = this._subscription;
      if (t1 != null)
        t1.pause$0();
    },
    _onResume$0() {
      var t1 = this._subscription;
      if (t1 != null)
        t1.resume$0();
    },
    _onCancel$0() {
      var subscription = this._subscription;
      if (subscription != null) {
        this._subscription = null;
        return subscription.cancel$0();
      }
      return null;
    },
    _handleData$1(data) {
      this._stream._handleData$2(this.$ti._precomputed1._as(data), this);
    },
    _handleError$2(error, stackTrace) {
      var t1;
      type$.StackTrace._as(stackTrace);
      t1 = error == null ? A._asObject(error) : error;
      this._stream.$ti._eval$1("_EventSink<2>")._as(this)._addError$2(t1, stackTrace);
    },
    _handleDone$0() {
      this._stream.$ti._eval$1("_EventSink<2>")._as(this)._close$0();
    }
  };
  A._MapStream.prototype = {
    _handleData$2(inputEvent, sink) {
      var outputEvent, e, s, exception, error, stackTrace, replacement,
        t1 = this.$ti;
      t1._precomputed1._as(inputEvent);
      t1._eval$1("_EventSink<2>")._as(sink);
      outputEvent = null;
      try {
        outputEvent = this._transform.call$1(inputEvent);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        error = e;
        stackTrace = s;
        replacement = A._interceptError(error, stackTrace);
        if (replacement != null) {
          error = replacement.error;
          stackTrace = replacement.stackTrace;
        }
        sink._addError$2(error, stackTrace);
        return;
      }
      sink._async$_add$1(outputEvent);
    }
  };
  A._EventSinkWrapper.prototype = {
    add$1(_, data) {
      var t1 = this._async$_sink;
      data = t1.$ti._rest[1]._as(this.$ti._precomputed1._as(data));
      if ((t1._state & 2) !== 0)
        A.throwExpression(A.StateError$("Stream is already closed"));
      t1.super$_BufferingStreamSubscription$_add(data);
    },
    addError$2(error, stackTrace) {
      var t1 = this._async$_sink;
      if ((t1._state & 2) !== 0)
        A.throwExpression(A.StateError$("Stream is already closed"));
      t1.super$_BufferingStreamSubscription$_addError(error, stackTrace);
    },
    close$0() {
      var t1 = this._async$_sink;
      if ((t1._state & 2) !== 0)
        A.throwExpression(A.StateError$("Stream is already closed"));
      t1.super$_BufferingStreamSubscription$_close();
    },
    $isEventSink: 1
  };
  A._SinkTransformerStreamSubscription.prototype = {
    _onPause$0() {
      var t1 = this._subscription;
      if (t1 != null)
        t1.pause$0();
    },
    _onResume$0() {
      var t1 = this._subscription;
      if (t1 != null)
        t1.resume$0();
    },
    _onCancel$0() {
      var subscription = this._subscription;
      if (subscription != null) {
        this._subscription = null;
        return subscription.cancel$0();
      }
      return null;
    },
    _handleData$1(data) {
      var e, s, t1, exception, t2, _this = this;
      _this.$ti._precomputed1._as(data);
      try {
        t1 = _this.___SinkTransformerStreamSubscription__transformerSink_A;
        t1 === $ && A.throwLateFieldNI("_transformerSink");
        t1.add$1(0, data);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = A._asObject(e);
        t2 = type$.StackTrace._as(s);
        if ((_this._state & 2) !== 0)
          A.throwExpression(A.StateError$("Stream is already closed"));
        _this.super$_BufferingStreamSubscription$_addError(t1, t2);
      }
    },
    _handleError$2(error, stackTrace) {
      var e, s, t1, t2, exception, _this = this,
        _s24_ = "Stream is already closed";
      A._asObject(error);
      t1 = type$.StackTrace;
      t1._as(stackTrace);
      try {
        t2 = _this.___SinkTransformerStreamSubscription__transformerSink_A;
        t2 === $ && A.throwLateFieldNI("_transformerSink");
        t2.addError$2(error, stackTrace);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        if (e === error) {
          if ((_this._state & 2) !== 0)
            A.throwExpression(A.StateError$(_s24_));
          _this.super$_BufferingStreamSubscription$_addError(error, stackTrace);
        } else {
          t2 = A._asObject(e);
          t1 = t1._as(s);
          if ((_this._state & 2) !== 0)
            A.throwExpression(A.StateError$(_s24_));
          _this.super$_BufferingStreamSubscription$_addError(t2, t1);
        }
      }
    },
    _handleDone$0() {
      var e, s, t1, exception, t2, _this = this;
      try {
        _this._subscription = null;
        t1 = _this.___SinkTransformerStreamSubscription__transformerSink_A;
        t1 === $ && A.throwLateFieldNI("_transformerSink");
        t1.close$0();
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = A._asObject(e);
        t2 = type$.StackTrace._as(s);
        if ((_this._state & 2) !== 0)
          A.throwExpression(A.StateError$("Stream is already closed"));
        _this.super$_BufferingStreamSubscription$_addError(t1, t2);
      }
    }
  };
  A._StreamSinkTransformer.prototype = {
    bind$1(stream) {
      var t1 = this.$ti;
      return new A._BoundSinkStream(this._sinkMapper, t1._eval$1("Stream<1>")._as(stream), t1._eval$1("_BoundSinkStream<1,2>"));
    }
  };
  A._BoundSinkStream.prototype = {
    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
      var t2, t3, t4, t5, t6, subscription,
        t1 = this.$ti;
      t1._eval$1("~(2)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      t2 = $.Zone__current;
      t3 = cancelOnError === true ? 1 : 0;
      t4 = onError != null ? 32 : 0;
      t5 = A._BufferingStreamSubscription__registerDataHandler(t2, onData, t1._rest[1]);
      t6 = A._BufferingStreamSubscription__registerErrorHandler(t2, onError);
      subscription = new A._SinkTransformerStreamSubscription(t5, t6, t2.registerCallback$1$1(onDone, type$.void), t2, t3 | t4, t1._eval$1("_SinkTransformerStreamSubscription<1,2>"));
      subscription.___SinkTransformerStreamSubscription__transformerSink_A = t1._eval$1("EventSink<1>")._as(this._sinkMapper.call$1(new A._EventSinkWrapper(subscription, t1._eval$1("_EventSinkWrapper<2>"))));
      subscription._subscription = this._stream.listen$3$onDone$onError(subscription.get$_handleData(), subscription.get$_handleDone(), subscription.get$_handleError());
      return subscription;
    },
    listen$3$onDone$onError(onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
    }
  };
  A._HandlerEventSink.prototype = {
    add$1(_, data) {
      var sink,
        t1 = this.$ti;
      t1._precomputed1._as(data);
      sink = this._async$_sink;
      if (sink == null)
        throw A.wrapException(A.StateError$("Sink is closed"));
      data = sink.$ti._precomputed1._as(t1._rest[1]._as(data));
      t1 = sink._async$_sink;
      t1.$ti._rest[1]._as(data);
      if ((t1._state & 2) !== 0)
        A.throwExpression(A.StateError$("Stream is already closed"));
      t1.super$_BufferingStreamSubscription$_add(data);
    },
    addError$2(error, stackTrace) {
      var sink = this._async$_sink;
      if (sink == null)
        throw A.wrapException(A.StateError$("Sink is closed"));
      sink.addError$2(error, stackTrace);
    },
    close$0() {
      var sink = this._async$_sink;
      if (sink == null)
        return;
      this._async$_sink = null;
      this._handleDone.call$1(sink);
    },
    $isEventSink: 1
  };
  A._StreamHandlerTransformer.prototype = {
    bind$1(stream) {
      return this.super$_StreamSinkTransformer$bind(this.$ti._eval$1("Stream<1>")._as(stream));
    }
  };
  A._StreamHandlerTransformer_closure.prototype = {
    call$1(outputSink) {
      var _this = this,
        t1 = _this.T;
      return new A._HandlerEventSink(_this.handleData, _this.handleError, _this.handleDone, t1._eval$1("EventSink<0>")._as(outputSink), _this.S._eval$1("@<0>")._bind$1(t1)._eval$1("_HandlerEventSink<1,2>"));
    },
    $signature() {
      return this.S._eval$1("@<0>")._bind$1(this.T)._eval$1("_HandlerEventSink<1,2>(EventSink<2>)");
    }
  };
  A._ZoneFunction.prototype = {};
  A._ZoneSpecification.prototype = {$isZoneSpecification: 1};
  A._ZoneDelegate.prototype = {$isZoneDelegate: 1};
  A._Zone.prototype = {
    _processUncaughtError$3(zone, error, stackTrace) {
      var implZone, handler, parentDelegate, parentZone, currentZone, e, s, implementation, t1, exception;
      type$.StackTrace._as(stackTrace);
      implementation = this.get$_handleUncaughtError();
      implZone = implementation.zone;
      if (implZone === B.C__RootZone) {
        A._rootHandleError(error, stackTrace);
        return;
      }
      handler = implementation.$function;
      parentDelegate = implZone.get$_parentDelegate();
      t1 = implZone.get$parent();
      t1.toString;
      parentZone = t1;
      currentZone = $.Zone__current;
      try {
        $.Zone__current = parentZone;
        handler.call$5(implZone, parentDelegate, zone, error, stackTrace);
        $.Zone__current = currentZone;
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        $.Zone__current = currentZone;
        t1 = error === e ? stackTrace : s;
        parentZone._processUncaughtError$3(implZone, e, t1);
      }
    },
    $isZone: 1
  };
  A._CustomZone.prototype = {
    get$_async$_delegate() {
      var t1 = this._delegateCache;
      return t1 == null ? this._delegateCache = new A._ZoneDelegate(this) : t1;
    },
    get$_parentDelegate() {
      return this.parent.get$_async$_delegate();
    },
    get$errorZone() {
      return this._handleUncaughtError.zone;
    },
    runGuarded$1(f) {
      var e, s, exception;
      type$.void_Function._as(f);
      try {
        this.run$1$1(f, type$.void);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        this._processUncaughtError$3(this, A._asObject(e), type$.StackTrace._as(s));
      }
    },
    runUnaryGuarded$1$2(f, arg, $T) {
      var e, s, exception;
      $T._eval$1("~(0)")._as(f);
      $T._as(arg);
      try {
        this.runUnary$2$2(f, arg, type$.void, $T);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        this._processUncaughtError$3(this, A._asObject(e), type$.StackTrace._as(s));
      }
    },
    runBinaryGuarded$2$3(f, arg1, arg2, $T1, $T2) {
      var e, s, exception;
      $T1._eval$1("@<0>")._bind$1($T2)._eval$1("~(1,2)")._as(f);
      $T1._as(arg1);
      $T2._as(arg2);
      try {
        this.runBinary$3$3(f, arg1, arg2, type$.void, $T1, $T2);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        this._processUncaughtError$3(this, A._asObject(e), type$.StackTrace._as(s));
      }
    },
    bindCallback$1$1(f, $R) {
      return new A._CustomZone_bindCallback_closure(this, this.registerCallback$1$1($R._eval$1("0()")._as(f), $R), $R);
    },
    bindUnaryCallback$2$1(f, $R, $T) {
      return new A._CustomZone_bindUnaryCallback_closure(this, this.registerUnaryCallback$2$1($R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f), $R, $T), $T, $R);
    },
    bindCallbackGuarded$1(f) {
      return new A._CustomZone_bindCallbackGuarded_closure(this, this.registerCallback$1$1(type$.void_Function._as(f), type$.void));
    },
    bindUnaryCallbackGuarded$1$1(f, $T) {
      return new A._CustomZone_bindUnaryCallbackGuarded_closure(this, this.registerUnaryCallback$2$1($T._eval$1("~(0)")._as(f), type$.void, $T), $T);
    },
    $index(_, key) {
      var value,
        t1 = this._map,
        result = t1.$index(0, key);
      if (result != null || t1.containsKey$1(key))
        return result;
      value = this.parent.$index(0, key);
      if (value != null)
        t1.$indexSet(0, key, value);
      return value;
    },
    handleUncaughtError$2(error, stackTrace) {
      this._processUncaughtError$3(this, error, type$.StackTrace._as(stackTrace));
    },
    fork$2$specification$zoneValues(specification, zoneValues) {
      var implementation = this._fork,
        t1 = implementation.zone;
      return implementation.$function.call$5(t1, t1.get$_parentDelegate(), this, specification, zoneValues);
    },
    run$1$1(f, $R) {
      var implementation, t1;
      $R._eval$1("0()")._as(f);
      implementation = this._run;
      t1 = implementation.zone;
      return implementation.$function.call$1$4(t1, t1.get$_parentDelegate(), this, f, $R);
    },
    runUnary$2$2(f, arg, $R, $T) {
      var implementation, t1;
      $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f);
      $T._as(arg);
      implementation = this._runUnary;
      t1 = implementation.zone;
      return implementation.$function.call$2$5(t1, t1.get$_parentDelegate(), this, f, arg, $R, $T);
    },
    runBinary$3$3(f, arg1, arg2, $R, $T1, $T2) {
      var implementation, t1;
      $R._eval$1("@<0>")._bind$1($T1)._bind$1($T2)._eval$1("1(2,3)")._as(f);
      $T1._as(arg1);
      $T2._as(arg2);
      implementation = this._runBinary;
      t1 = implementation.zone;
      return implementation.$function.call$3$6(t1, t1.get$_parentDelegate(), this, f, arg1, arg2, $R, $T1, $T2);
    },
    registerCallback$1$1(callback, $R) {
      var implementation, t1;
      $R._eval$1("0()")._as(callback);
      implementation = this._registerCallback;
      t1 = implementation.zone;
      return implementation.$function.call$1$4(t1, t1.get$_parentDelegate(), this, callback, $R);
    },
    registerUnaryCallback$2$1(callback, $R, $T) {
      var implementation, t1;
      $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(callback);
      implementation = this._registerUnaryCallback;
      t1 = implementation.zone;
      return implementation.$function.call$2$4(t1, t1.get$_parentDelegate(), this, callback, $R, $T);
    },
    registerBinaryCallback$3$1(callback, $R, $T1, $T2) {
      var implementation, t1;
      $R._eval$1("@<0>")._bind$1($T1)._bind$1($T2)._eval$1("1(2,3)")._as(callback);
      implementation = this._registerBinaryCallback;
      t1 = implementation.zone;
      return implementation.$function.call$3$4(t1, t1.get$_parentDelegate(), this, callback, $R, $T1, $T2);
    },
    errorCallback$2(error, stackTrace) {
      var implementation = this._errorCallback,
        implementationZone = implementation.zone;
      if (implementationZone === B.C__RootZone)
        return null;
      return implementation.$function.call$5(implementationZone, implementationZone.get$_parentDelegate(), this, error, stackTrace);
    },
    scheduleMicrotask$1(f) {
      var implementation, t1;
      type$.void_Function._as(f);
      implementation = this._scheduleMicrotask;
      t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, f);
    },
    createTimer$2(duration, f) {
      var implementation, t1;
      type$.void_Function._as(f);
      implementation = this._createTimer;
      t1 = implementation.zone;
      return implementation.$function.call$5(t1, t1.get$_parentDelegate(), this, duration, f);
    },
    print$1(line) {
      var implementation = this._print,
        t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, line);
    },
    get$_run() {
      return this._run;
    },
    get$_runUnary() {
      return this._runUnary;
    },
    get$_runBinary() {
      return this._runBinary;
    },
    get$_registerCallback() {
      return this._registerCallback;
    },
    get$_registerUnaryCallback() {
      return this._registerUnaryCallback;
    },
    get$_registerBinaryCallback() {
      return this._registerBinaryCallback;
    },
    get$_errorCallback() {
      return this._errorCallback;
    },
    get$_scheduleMicrotask() {
      return this._scheduleMicrotask;
    },
    get$_createTimer() {
      return this._createTimer;
    },
    get$_createPeriodicTimer() {
      return this._createPeriodicTimer;
    },
    get$_print() {
      return this._print;
    },
    get$_fork() {
      return this._fork;
    },
    get$_handleUncaughtError() {
      return this._handleUncaughtError;
    },
    get$parent() {
      return this.parent;
    },
    get$_map() {
      return this._map;
    }
  };
  A._CustomZone_bindCallback_closure.prototype = {
    call$0() {
      return this.$this.run$1$1(this.registered, this.R);
    },
    $signature() {
      return this.R._eval$1("0()");
    }
  };
  A._CustomZone_bindUnaryCallback_closure.prototype = {
    call$1(arg) {
      var _this = this,
        t1 = _this.T;
      return _this.$this.runUnary$2$2(_this.registered, t1._as(arg), _this.R, t1);
    },
    $signature() {
      return this.R._eval$1("@<0>")._bind$1(this.T)._eval$1("1(2)");
    }
  };
  A._CustomZone_bindCallbackGuarded_closure.prototype = {
    call$0() {
      return this.$this.runGuarded$1(this.registered);
    },
    $signature: 0
  };
  A._CustomZone_bindUnaryCallbackGuarded_closure.prototype = {
    call$1(arg) {
      var t1 = this.T;
      return this.$this.runUnaryGuarded$1$2(this.registered, t1._as(arg), t1);
    },
    $signature() {
      return this.T._eval$1("~(0)");
    }
  };
  A._rootHandleError_closure.prototype = {
    call$0() {
      A.Error_throwWithStackTrace(this.error, this.stackTrace);
    },
    $signature: 0
  };
  A._RootZone.prototype = {
    get$_run() {
      return B._ZoneFunction__RootZone__rootRun;
    },
    get$_runUnary() {
      return B._ZoneFunction__RootZone__rootRunUnary;
    },
    get$_runBinary() {
      return B._ZoneFunction__RootZone__rootRunBinary;
    },
    get$_registerCallback() {
      return B._ZoneFunction__RootZone__rootRegisterCallback;
    },
    get$_registerUnaryCallback() {
      return B._ZoneFunction_Xkh;
    },
    get$_registerBinaryCallback() {
      return B._ZoneFunction_e9o;
    },
    get$_errorCallback() {
      return B._ZoneFunction__RootZone__rootErrorCallback;
    },
    get$_scheduleMicrotask() {
      return B._ZoneFunction__RootZone__rootScheduleMicrotask;
    },
    get$_createTimer() {
      return B._ZoneFunction__RootZone__rootCreateTimer;
    },
    get$_createPeriodicTimer() {
      return B._ZoneFunction_PAY;
    },
    get$_print() {
      return B._ZoneFunction__RootZone__rootPrint;
    },
    get$_fork() {
      return B._ZoneFunction__RootZone__rootFork;
    },
    get$_handleUncaughtError() {
      return B._ZoneFunction_KjJ;
    },
    get$parent() {
      return null;
    },
    get$_map() {
      return $.$get$_RootZone__rootMap();
    },
    get$_async$_delegate() {
      var t1 = $._RootZone__rootDelegate;
      return t1 == null ? $._RootZone__rootDelegate = new A._ZoneDelegate(this) : t1;
    },
    get$_parentDelegate() {
      var t1 = $._RootZone__rootDelegate;
      return t1 == null ? $._RootZone__rootDelegate = new A._ZoneDelegate(this) : t1;
    },
    get$errorZone() {
      return this;
    },
    runGuarded$1(f) {
      var e, s, exception;
      type$.void_Function._as(f);
      try {
        if (B.C__RootZone === $.Zone__current) {
          f.call$0();
          return;
        }
        A._rootRun(null, null, this, f, type$.void);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        A._rootHandleError(A._asObject(e), type$.StackTrace._as(s));
      }
    },
    runUnaryGuarded$1$2(f, arg, $T) {
      var e, s, exception;
      $T._eval$1("~(0)")._as(f);
      $T._as(arg);
      try {
        if (B.C__RootZone === $.Zone__current) {
          f.call$1(arg);
          return;
        }
        A._rootRunUnary(null, null, this, f, arg, type$.void, $T);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        A._rootHandleError(A._asObject(e), type$.StackTrace._as(s));
      }
    },
    runBinaryGuarded$2$3(f, arg1, arg2, $T1, $T2) {
      var e, s, exception;
      $T1._eval$1("@<0>")._bind$1($T2)._eval$1("~(1,2)")._as(f);
      $T1._as(arg1);
      $T2._as(arg2);
      try {
        if (B.C__RootZone === $.Zone__current) {
          f.call$2(arg1, arg2);
          return;
        }
        A._rootRunBinary(null, null, this, f, arg1, arg2, type$.void, $T1, $T2);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        A._rootHandleError(A._asObject(e), type$.StackTrace._as(s));
      }
    },
    bindCallback$1$1(f, $R) {
      return new A._RootZone_bindCallback_closure(this, $R._eval$1("0()")._as(f), $R);
    },
    bindUnaryCallback$2$1(f, $R, $T) {
      return new A._RootZone_bindUnaryCallback_closure(this, $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f), $T, $R);
    },
    bindCallbackGuarded$1(f) {
      return new A._RootZone_bindCallbackGuarded_closure(this, type$.void_Function._as(f));
    },
    bindUnaryCallbackGuarded$1$1(f, $T) {
      return new A._RootZone_bindUnaryCallbackGuarded_closure(this, $T._eval$1("~(0)")._as(f), $T);
    },
    $index(_, key) {
      return null;
    },
    handleUncaughtError$2(error, stackTrace) {
      A._rootHandleError(error, type$.StackTrace._as(stackTrace));
    },
    fork$2$specification$zoneValues(specification, zoneValues) {
      return A._rootFork(null, null, this, specification, zoneValues);
    },
    run$1$1(f, $R) {
      $R._eval$1("0()")._as(f);
      if ($.Zone__current === B.C__RootZone)
        return f.call$0();
      return A._rootRun(null, null, this, f, $R);
    },
    runUnary$2$2(f, arg, $R, $T) {
      $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f);
      $T._as(arg);
      if ($.Zone__current === B.C__RootZone)
        return f.call$1(arg);
      return A._rootRunUnary(null, null, this, f, arg, $R, $T);
    },
    runBinary$3$3(f, arg1, arg2, $R, $T1, $T2) {
      $R._eval$1("@<0>")._bind$1($T1)._bind$1($T2)._eval$1("1(2,3)")._as(f);
      $T1._as(arg1);
      $T2._as(arg2);
      if ($.Zone__current === B.C__RootZone)
        return f.call$2(arg1, arg2);
      return A._rootRunBinary(null, null, this, f, arg1, arg2, $R, $T1, $T2);
    },
    registerCallback$1$1(f, $R) {
      return $R._eval$1("0()")._as(f);
    },
    registerUnaryCallback$2$1(f, $R, $T) {
      return $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f);
    },
    registerBinaryCallback$3$1(f, $R, $T1, $T2) {
      return $R._eval$1("@<0>")._bind$1($T1)._bind$1($T2)._eval$1("1(2,3)")._as(f);
    },
    errorCallback$2(error, stackTrace) {
      return null;
    },
    scheduleMicrotask$1(f) {
      A._rootScheduleMicrotask(null, null, this, type$.void_Function._as(f));
    },
    createTimer$2(duration, f) {
      return A.Timer__createTimer(duration, type$.void_Function._as(f));
    },
    print$1(line) {
      A.printString(line);
    }
  };
  A._RootZone_bindCallback_closure.prototype = {
    call$0() {
      return this.$this.run$1$1(this.f, this.R);
    },
    $signature() {
      return this.R._eval$1("0()");
    }
  };
  A._RootZone_bindUnaryCallback_closure.prototype = {
    call$1(arg) {
      var _this = this,
        t1 = _this.T;
      return _this.$this.runUnary$2$2(_this.f, t1._as(arg), _this.R, t1);
    },
    $signature() {
      return this.R._eval$1("@<0>")._bind$1(this.T)._eval$1("1(2)");
    }
  };
  A._RootZone_bindCallbackGuarded_closure.prototype = {
    call$0() {
      return this.$this.runGuarded$1(this.f);
    },
    $signature: 0
  };
  A._RootZone_bindUnaryCallbackGuarded_closure.prototype = {
    call$1(arg) {
      var t1 = this.T;
      return this.$this.runUnaryGuarded$1$2(this.f, t1._as(arg), t1);
    },
    $signature() {
      return this.T._eval$1("~(0)");
    }
  };
  A._HashMap.prototype = {
    get$length(_) {
      return this._collection$_length;
    },
    get$isEmpty(_) {
      return this._collection$_length === 0;
    },
    get$keys() {
      return new A._HashMapKeyIterable(this, A._instanceType(this)._eval$1("_HashMapKeyIterable<1>"));
    },
    get$values() {
      var t1 = A._instanceType(this);
      return A.MappedIterable_MappedIterable(new A._HashMapKeyIterable(this, t1._eval$1("_HashMapKeyIterable<1>")), new A._HashMap_values_closure(this), t1._precomputed1, t1._rest[1]);
    },
    containsKey$1(key) {
      var strings, nums;
      if (typeof key == "string" && key !== "__proto__") {
        strings = this._strings;
        return strings == null ? false : strings[key] != null;
      } else if (typeof key == "number" && (key & 1073741823) === key) {
        nums = this._nums;
        return nums == null ? false : nums[key] != null;
      } else
        return this._containsKey$1(key);
    },
    _containsKey$1(key) {
      var rest = this._collection$_rest;
      if (rest == null)
        return false;
      return this._findBucketIndex$2(this._getBucket$2(rest, key), key) >= 0;
    },
    $index(_, key) {
      var strings, t1, nums;
      if (typeof key == "string" && key !== "__proto__") {
        strings = this._strings;
        t1 = strings == null ? null : A._HashMap__getTableEntry(strings, key);
        return t1;
      } else if (typeof key == "number" && (key & 1073741823) === key) {
        nums = this._nums;
        t1 = nums == null ? null : A._HashMap__getTableEntry(nums, key);
        return t1;
      } else
        return this._get$1(key);
    },
    _get$1(key) {
      var bucket, index,
        rest = this._collection$_rest;
      if (rest == null)
        return null;
      bucket = this._getBucket$2(rest, key);
      index = this._findBucketIndex$2(bucket, key);
      return index < 0 ? null : bucket[index + 1];
    },
    $indexSet(_, key, value) {
      var strings, nums, _this = this,
        t1 = A._instanceType(_this);
      t1._precomputed1._as(key);
      t1._rest[1]._as(value);
      if (typeof key == "string" && key !== "__proto__") {
        strings = _this._strings;
        _this._addHashTableEntry$3(strings == null ? _this._strings = A._HashMap__newHashTable() : strings, key, value);
      } else if (typeof key == "number" && (key & 1073741823) === key) {
        nums = _this._nums;
        _this._addHashTableEntry$3(nums == null ? _this._nums = A._HashMap__newHashTable() : nums, key, value);
      } else
        _this._set$2(key, value);
    },
    _set$2(key, value) {
      var rest, hash, bucket, index, _this = this,
        t1 = A._instanceType(_this);
      t1._precomputed1._as(key);
      t1._rest[1]._as(value);
      rest = _this._collection$_rest;
      if (rest == null)
        rest = _this._collection$_rest = A._HashMap__newHashTable();
      hash = _this._computeHashCode$1(key);
      bucket = rest[hash];
      if (bucket == null) {
        A._HashMap__setTableEntry(rest, hash, [key, value]);
        ++_this._collection$_length;
        _this._keys = null;
      } else {
        index = _this._findBucketIndex$2(bucket, key);
        if (index >= 0)
          bucket[index + 1] = value;
        else {
          bucket.push(key, value);
          ++_this._collection$_length;
          _this._keys = null;
        }
      }
    },
    forEach$1(_, action) {
      var keys, $length, t2, i, key, t3, _this = this,
        t1 = A._instanceType(_this);
      t1._eval$1("~(1,2)")._as(action);
      keys = _this._computeKeys$0();
      for ($length = keys.length, t2 = t1._precomputed1, t1 = t1._rest[1], i = 0; i < $length; ++i) {
        key = keys[i];
        t2._as(key);
        t3 = _this.$index(0, key);
        action.call$2(key, t3 == null ? t1._as(t3) : t3);
        if (keys !== _this._keys)
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
    },
    _computeKeys$0() {
      var strings, index, names, entries, i, nums, rest, bucket, $length, i0, _this = this,
        result = _this._keys;
      if (result != null)
        return result;
      result = A.List_List$filled(_this._collection$_length, null, false, type$.dynamic);
      strings = _this._strings;
      index = 0;
      if (strings != null) {
        names = Object.getOwnPropertyNames(strings);
        entries = names.length;
        for (i = 0; i < entries; ++i) {
          result[index] = names[i];
          ++index;
        }
      }
      nums = _this._nums;
      if (nums != null) {
        names = Object.getOwnPropertyNames(nums);
        entries = names.length;
        for (i = 0; i < entries; ++i) {
          result[index] = +names[i];
          ++index;
        }
      }
      rest = _this._collection$_rest;
      if (rest != null) {
        names = Object.getOwnPropertyNames(rest);
        entries = names.length;
        for (i = 0; i < entries; ++i) {
          bucket = rest[names[i]];
          $length = bucket.length;
          for (i0 = 0; i0 < $length; i0 += 2) {
            result[index] = bucket[i0];
            ++index;
          }
        }
      }
      A.assertHelper(index === _this._collection$_length);
      return _this._keys = result;
    },
    _addHashTableEntry$3(table, key, value) {
      var t1 = A._instanceType(this);
      t1._precomputed1._as(key);
      t1._rest[1]._as(value);
      if (table[key] == null) {
        ++this._collection$_length;
        this._keys = null;
      }
      A._HashMap__setTableEntry(table, key, value);
    },
    _computeHashCode$1(key) {
      return J.get$hashCode$(key) & 1073741823;
    },
    _getBucket$2(table, key) {
      return table[this._computeHashCode$1(key)];
    },
    _findBucketIndex$2(bucket, key) {
      var $length, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; i += 2)
        if (J.$eq$(bucket[i], key))
          return i;
      return -1;
    }
  };
  A._HashMap_values_closure.prototype = {
    call$1(each) {
      var t1 = this.$this,
        t2 = A._instanceType(t1);
      t1 = t1.$index(0, t2._precomputed1._as(each));
      return t1 == null ? t2._rest[1]._as(t1) : t1;
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("2(1)");
    }
  };
  A._IdentityHashMap.prototype = {
    _computeHashCode$1(key) {
      return A.objectHashCode(key) & 1073741823;
    },
    _findBucketIndex$2(bucket, key) {
      var $length, i, t1;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; i += 2) {
        t1 = bucket[i];
        if (t1 == null ? key == null : t1 === key)
          return i;
      }
      return -1;
    }
  };
  A._HashMapKeyIterable.prototype = {
    get$length(_) {
      return this._collection$_map._collection$_length;
    },
    get$isEmpty(_) {
      return this._collection$_map._collection$_length === 0;
    },
    get$iterator(_) {
      var t1 = this._collection$_map;
      return new A._HashMapKeyIterator(t1, t1._computeKeys$0(), this.$ti._eval$1("_HashMapKeyIterator<1>"));
    }
  };
  A._HashMapKeyIterator.prototype = {
    get$current() {
      var t1 = this._collection$_current;
      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var _this = this,
        keys = _this._keys,
        offset = _this._offset,
        t1 = _this._collection$_map;
      if (keys !== t1._keys)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      else if (offset >= keys.length) {
        _this._collection$_current = null;
        return false;
      } else {
        _this._collection$_current = keys[offset];
        _this._offset = offset + 1;
        return true;
      }
    },
    $isIterator: 1
  };
  A._LinkedHashSet.prototype = {
    get$iterator(_) {
      var _this = this,
        t1 = new A._LinkedHashSetIterator(_this, _this._modifications, _this.$ti._eval$1("_LinkedHashSetIterator<1>"));
      t1._cell = _this._first;
      return t1;
    },
    get$length(_) {
      return this._collection$_length;
    },
    get$isEmpty(_) {
      return this._collection$_length === 0;
    },
    contains$1(_, object) {
      var strings, t1;
      if (object !== "__proto__") {
        strings = this._strings;
        if (strings == null)
          return false;
        return type$.nullable__LinkedHashSetCell._as(strings[object]) != null;
      } else {
        t1 = this._contains$1(object);
        return t1;
      }
    },
    _contains$1(object) {
      var rest = this._collection$_rest;
      if (rest == null)
        return false;
      return this._findBucketIndex$2(rest[B.JSString_methods.get$hashCode(object) & 1073741823], object) >= 0;
    },
    get$first(_) {
      var first = this._first;
      if (first == null)
        throw A.wrapException(A.StateError$("No elements"));
      return this.$ti._precomputed1._as(first._element);
    },
    get$last(_) {
      var last = this._collection$_last;
      if (last == null)
        throw A.wrapException(A.StateError$("No elements"));
      return this.$ti._precomputed1._as(last._element);
    },
    add$1(_, element) {
      var strings, nums, _this = this;
      _this.$ti._precomputed1._as(element);
      if (typeof element == "string" && element !== "__proto__") {
        strings = _this._strings;
        return _this._addHashTableEntry$2(strings == null ? _this._strings = A._LinkedHashSet__newHashTable() : strings, element);
      } else if (typeof element == "number" && (element & 1073741823) === element) {
        nums = _this._nums;
        return _this._addHashTableEntry$2(nums == null ? _this._nums = A._LinkedHashSet__newHashTable() : nums, element);
      } else
        return _this._add$1(element);
    },
    _add$1(element) {
      var rest, hash, bucket, t1, _this = this;
      _this.$ti._precomputed1._as(element);
      rest = _this._collection$_rest;
      if (rest == null)
        rest = _this._collection$_rest = A._LinkedHashSet__newHashTable();
      hash = J.get$hashCode$(element) & 1073741823;
      bucket = rest[hash];
      if (bucket == null) {
        t1 = [_this._newLinkedCell$1(element)];
        A.assertHelper(t1 != null);
        rest[hash] = t1;
      } else {
        if (_this._findBucketIndex$2(bucket, element) >= 0)
          return false;
        bucket.push(_this._newLinkedCell$1(element));
      }
      return true;
    },
    remove$1(_, object) {
      var t1;
      if (typeof object == "string" && object !== "__proto__")
        return this._removeHashTableEntry$2(this._strings, object);
      else {
        t1 = this._remove$1(object);
        return t1;
      }
    },
    _remove$1(object) {
      var hash, bucket, index, cell,
        rest = this._collection$_rest;
      if (rest == null)
        return false;
      hash = J.get$hashCode$(object) & 1073741823;
      bucket = rest[hash];
      index = this._findBucketIndex$2(bucket, object);
      if (index < 0)
        return false;
      cell = bucket.splice(index, 1)[0];
      if (0 === bucket.length)
        delete rest[hash];
      this._unlinkCell$1(cell);
      return true;
    },
    _addHashTableEntry$2(table, element) {
      this.$ti._precomputed1._as(element);
      if (type$.nullable__LinkedHashSetCell._as(table[element]) != null)
        return false;
      table[element] = this._newLinkedCell$1(element);
      return true;
    },
    _removeHashTableEntry$2(table, element) {
      var cell;
      if (table == null)
        return false;
      cell = type$.nullable__LinkedHashSetCell._as(table[element]);
      if (cell == null)
        return false;
      this._unlinkCell$1(cell);
      delete table[element];
      return true;
    },
    _modified$0() {
      this._modifications = this._modifications + 1 & 1073741823;
    },
    _newLinkedCell$1(element) {
      var t1, _this = this,
        cell = new A._LinkedHashSetCell(_this.$ti._precomputed1._as(element));
      if (_this._first == null)
        _this._first = _this._collection$_last = cell;
      else {
        t1 = _this._collection$_last;
        t1.toString;
        cell._previous = t1;
        _this._collection$_last = t1._next = cell;
      }
      ++_this._collection$_length;
      _this._modified$0();
      return cell;
    },
    _unlinkCell$1(cell) {
      var _this = this,
        previous = cell._previous,
        next = cell._next;
      if (previous == null) {
        A.assertHelper(cell === _this._first);
        _this._first = next;
      } else
        previous._next = next;
      if (next == null) {
        A.assertHelper(cell === _this._collection$_last);
        _this._collection$_last = previous;
      } else
        next._previous = previous;
      --_this._collection$_length;
      _this._modified$0();
    },
    _findBucketIndex$2(bucket, element) {
      var $length, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; ++i)
        if (J.$eq$(bucket[i]._element, element))
          return i;
      return -1;
    }
  };
  A._LinkedHashSetCell.prototype = {};
  A._LinkedHashSetIterator.prototype = {
    get$current() {
      var t1 = this._collection$_current;
      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var _this = this,
        cell = _this._cell,
        t1 = _this._set;
      if (_this._modifications !== t1._modifications)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      else if (cell == null) {
        _this._collection$_current = null;
        return false;
      } else {
        _this._collection$_current = _this.$ti._eval$1("1?")._as(cell._element);
        _this._cell = cell._next;
        return true;
      }
    },
    $isIterator: 1
  };
  A.HashMap_HashMap$from_closure.prototype = {
    call$2(k, v) {
      this.result.$indexSet(0, this.K._as(k), this.V._as(v));
    },
    $signature: 46
  };
  A.LinkedList.prototype = {
    remove$1(_, entry) {
      this.$ti._precomputed1._as(entry);
      if (entry._list !== this)
        return false;
      this._unlink$1(entry);
      return true;
    },
    get$iterator(_) {
      var _this = this;
      return new A._LinkedListIterator(_this, _this._modificationCount, _this._first, _this.$ti._eval$1("_LinkedListIterator<1>"));
    },
    get$length(_) {
      return this._collection$_length;
    },
    get$first(_) {
      var t1;
      if (this._collection$_length === 0)
        throw A.wrapException(A.StateError$("No such element"));
      t1 = this._first;
      t1.toString;
      return t1;
    },
    get$last(_) {
      var t1;
      if (this._collection$_length === 0)
        throw A.wrapException(A.StateError$("No such element"));
      t1 = this._first._previous;
      t1.toString;
      return t1;
    },
    get$isEmpty(_) {
      return this._collection$_length === 0;
    },
    _insertBefore$3$updateFirst(entry, newEntry, updateFirst) {
      var _this = this,
        t1 = _this.$ti;
      t1._eval$1("1?")._as(entry);
      t1._precomputed1._as(newEntry);
      if (newEntry._list != null)
        throw A.wrapException(A.StateError$("LinkedListEntry is already in a LinkedList"));
      ++_this._modificationCount;
      newEntry.set$_list(_this);
      if (_this._collection$_length === 0) {
        A.assertHelper(entry == null);
        newEntry.set$_next(newEntry);
        newEntry.set$_previous(newEntry);
        _this._first = newEntry;
        ++_this._collection$_length;
        return;
      }
      t1 = entry._previous;
      t1.toString;
      newEntry.set$_previous(t1);
      newEntry.set$_next(entry);
      t1.set$_next(newEntry);
      entry.set$_previous(newEntry);
      ++_this._collection$_length;
    },
    _unlink$1(entry) {
      var t1, next, _this = this;
      _this.$ti._precomputed1._as(entry);
      ++_this._modificationCount;
      entry._next.set$_previous(entry._previous);
      t1 = entry._previous;
      next = entry._next;
      t1.set$_next(next);
      --_this._collection$_length;
      entry.set$_previous(null);
      entry.set$_next(null);
      entry.set$_list(null);
      if (_this._collection$_length === 0)
        _this._first = null;
      else if (entry === _this._first)
        _this._first = next;
    }
  };
  A._LinkedListIterator.prototype = {
    get$current() {
      var t1 = this._collection$_current;
      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var _this = this,
        t1 = _this._list;
      if (_this._modificationCount !== t1._modificationCount)
        throw A.wrapException(A.ConcurrentModificationError$(_this));
      if (t1._collection$_length !== 0)
        t1 = _this._visitedFirst && _this._next === t1.get$first(0);
      else
        t1 = true;
      if (t1) {
        _this._collection$_current = null;
        return false;
      }
      _this._visitedFirst = true;
      t1 = _this._next;
      _this._collection$_current = t1;
      _this._next = t1._next;
      return true;
    },
    $isIterator: 1
  };
  A.LinkedListEntry.prototype = {
    get$previous() {
      var t1 = this._list;
      if (t1 == null || this === t1.get$first(0))
        return null;
      return this._previous;
    },
    set$_list(_list) {
      this._list = A._instanceType(this)._eval$1("LinkedList<LinkedListEntry.E>?")._as(_list);
    },
    set$_next(_next) {
      this._next = A._instanceType(this)._eval$1("LinkedListEntry.E?")._as(_next);
    },
    set$_previous(_previous) {
      this._previous = A._instanceType(this)._eval$1("LinkedListEntry.E?")._as(_previous);
    }
  };
  A.ListBase.prototype = {
    get$iterator(receiver) {
      return new A.ListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("ListIterator<ListBase.E>"));
    },
    elementAt$1(receiver, index) {
      return this.$index(receiver, index);
    },
    get$isEmpty(receiver) {
      return this.get$length(receiver) === 0;
    },
    get$first(receiver) {
      if (this.get$length(receiver) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return this.$index(receiver, 0);
    },
    get$last(receiver) {
      if (this.get$length(receiver) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return this.$index(receiver, this.get$length(receiver) - 1);
    },
    map$1$1(receiver, f, $T) {
      var t1 = A.instanceType(receiver);
      return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(ListBase.E)")._as(f), t1._eval$1("@<ListBase.E>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
    },
    skip$1(receiver, count) {
      return A.SubListIterable$(receiver, count, null, A.instanceType(receiver)._eval$1("ListBase.E"));
    },
    take$1(receiver, count) {
      return A.SubListIterable$(receiver, 0, A.checkNotNullable(count, "count", type$.int), A.instanceType(receiver)._eval$1("ListBase.E"));
    },
    toList$1$growable(receiver, growable) {
      var t1, first, result, i, _this = this;
      if (_this.get$isEmpty(receiver)) {
        t1 = J.JSArray_JSArray$growable(0, A.instanceType(receiver)._eval$1("ListBase.E"));
        return t1;
      }
      first = _this.$index(receiver, 0);
      result = A.List_List$filled(_this.get$length(receiver), first, true, A.instanceType(receiver)._eval$1("ListBase.E"));
      for (i = 1; i < _this.get$length(receiver); ++i)
        B.JSArray_methods.$indexSet(result, i, _this.$index(receiver, i));
      return result;
    },
    toList$0(receiver) {
      return this.toList$1$growable(receiver, true);
    },
    cast$1$0(receiver, $R) {
      return new A.CastList(receiver, A.instanceType(receiver)._eval$1("@<ListBase.E>")._bind$1($R)._eval$1("CastList<1,2>"));
    },
    sublist$2(receiver, start, end) {
      var t1,
        listLength = this.get$length(receiver);
      A.RangeError_checkValidRange(start, end, listLength);
      t1 = A.List_List$_of(this.getRange$2(receiver, start, end), A.instanceType(receiver)._eval$1("ListBase.E"));
      return t1;
    },
    getRange$2(receiver, start, end) {
      A.RangeError_checkValidRange(start, end, this.get$length(receiver));
      return A.SubListIterable$(receiver, start, end, A.instanceType(receiver)._eval$1("ListBase.E"));
    },
    fillRange$3(receiver, start, end, fill) {
      var i;
      A.instanceType(receiver)._eval$1("ListBase.E?")._as(fill);
      A.RangeError_checkValidRange(start, end, this.get$length(receiver));
      for (i = start; i < end; ++i)
        this.$indexSet(receiver, i, fill);
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      var $length, otherStart, otherList, t1, i;
      A.instanceType(receiver)._eval$1("Iterable<ListBase.E>")._as(iterable);
      A.RangeError_checkValidRange(start, end, this.get$length(receiver));
      $length = end - start;
      if ($length === 0)
        return;
      A.RangeError_checkNotNegative(skipCount, "skipCount");
      if (type$.List_dynamic._is(iterable)) {
        otherStart = skipCount;
        otherList = iterable;
      } else {
        otherList = J.skip$1$ax(iterable, skipCount).toList$1$growable(0, false);
        otherStart = 0;
      }
      t1 = J.getInterceptor$asx(otherList);
      if (otherStart + $length > t1.get$length(otherList))
        throw A.wrapException(A.IterableElementError_tooFew());
      if (otherStart < start)
        for (i = $length - 1; i >= 0; --i)
          this.$indexSet(receiver, start + i, t1.$index(otherList, otherStart + i));
      else
        for (i = 0; i < $length; ++i)
          this.$indexSet(receiver, start + i, t1.$index(otherList, otherStart + i));
    },
    setRange$3(receiver, start, end, iterable) {
      return this.setRange$4(receiver, start, end, iterable, 0);
    },
    setAll$2(receiver, index, iterable) {
      var t1, index0;
      A.instanceType(receiver)._eval$1("Iterable<ListBase.E>")._as(iterable);
      if (type$.List_dynamic._is(iterable))
        this.setRange$3(receiver, index, index + iterable.length, iterable);
      else
        for (t1 = J.get$iterator$ax(iterable); t1.moveNext$0(); index = index0) {
          index0 = index + 1;
          this.$indexSet(receiver, index, t1.get$current());
        }
    },
    toString$0(receiver) {
      return A.Iterable_iterableToFullString(receiver, "[", "]");
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  A.MapBase.prototype = {
    forEach$1(_, action) {
      var t2, key, t3,
        t1 = A._instanceType(this);
      t1._eval$1("~(MapBase.K,MapBase.V)")._as(action);
      for (t2 = J.get$iterator$ax(this.get$keys()), t1 = t1._eval$1("MapBase.V"); t2.moveNext$0();) {
        key = t2.get$current();
        t3 = this.$index(0, key);
        action.call$2(key, t3 == null ? t1._as(t3) : t3);
      }
    },
    get$entries() {
      return J.map$1$1$ax(this.get$keys(), new A.MapBase_entries_closure(this), A._instanceType(this)._eval$1("MapEntry<MapBase.K,MapBase.V>"));
    },
    get$length(_) {
      return J.get$length$asx(this.get$keys());
    },
    get$isEmpty(_) {
      return J.get$isEmpty$asx(this.get$keys());
    },
    get$values() {
      return new A._MapBaseValueIterable(this, A._instanceType(this)._eval$1("_MapBaseValueIterable<MapBase.K,MapBase.V>"));
    },
    toString$0(_) {
      return A.MapBase_mapToString(this);
    },
    $isMap: 1
  };
  A.MapBase_entries_closure.prototype = {
    call$1(key) {
      var t1 = this.$this,
        t2 = A._instanceType(t1);
      t2._eval$1("MapBase.K")._as(key);
      t1 = t1.$index(0, key);
      if (t1 == null)
        t1 = t2._eval$1("MapBase.V")._as(t1);
      return new A.MapEntry(key, t1, t2._eval$1("MapEntry<MapBase.K,MapBase.V>"));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("MapEntry<MapBase.K,MapBase.V>(MapBase.K)");
    }
  };
  A.MapBase_mapToString_closure.prototype = {
    call$2(k, v) {
      var t2,
        t1 = this._box_0;
      if (!t1.first)
        this.result._contents += ", ";
      t1.first = false;
      t1 = this.result;
      t2 = A.S(k);
      t1._contents = (t1._contents += t2) + ": ";
      t2 = A.S(v);
      t1._contents += t2;
    },
    $signature: 49
  };
  A._MapBaseValueIterable.prototype = {
    get$length(_) {
      var t1 = this._collection$_map;
      return t1.get$length(t1);
    },
    get$isEmpty(_) {
      var t1 = this._collection$_map;
      return t1.get$isEmpty(t1);
    },
    get$first(_) {
      var t1 = this._collection$_map;
      t1 = t1.$index(0, J.get$first$ax(t1.get$keys()));
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    get$last(_) {
      var t1 = this._collection$_map;
      t1 = t1.$index(0, J.get$last$ax(t1.get$keys()));
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    get$iterator(_) {
      var t1 = this._collection$_map;
      return new A._MapBaseValueIterator(J.get$iterator$ax(t1.get$keys()), t1, this.$ti._eval$1("_MapBaseValueIterator<1,2>"));
    }
  };
  A._MapBaseValueIterator.prototype = {
    moveNext$0() {
      var _this = this,
        t1 = _this._keys;
      if (t1.moveNext$0()) {
        _this._collection$_current = _this._collection$_map.$index(0, t1.get$current());
        return true;
      }
      _this._collection$_current = null;
      return false;
    },
    get$current() {
      var t1 = this._collection$_current;
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    $isIterator: 1
  };
  A.SetBase.prototype = {
    get$isEmpty(_) {
      return this._collection$_length === 0;
    },
    map$1$1(_, f, $T) {
      var t1 = this.$ti;
      return new A.EfficientLengthMappedIterable(this, t1._bind$1($T)._eval$1("1(2)")._as(f), t1._eval$1("@<1>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>"));
    },
    toString$0(_) {
      return A.Iterable_iterableToFullString(this, "{", "}");
    },
    take$1(_, n) {
      return A.TakeIterable_TakeIterable(this, n, this.$ti._precomputed1);
    },
    skip$1(_, n) {
      return A.SkipIterable_SkipIterable(this, n, this.$ti._precomputed1);
    },
    get$first(_) {
      var t1,
        it = A._LinkedHashSetIterator$(this, this._modifications, this.$ti._precomputed1);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      t1 = it._collection$_current;
      return t1 == null ? it.$ti._precomputed1._as(t1) : t1;
    },
    get$last(_) {
      var t1, result,
        it = A._LinkedHashSetIterator$(this, this._modifications, this.$ti._precomputed1);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      t1 = it.$ti._precomputed1;
      do {
        result = it._collection$_current;
        if (result == null)
          result = t1._as(result);
      } while (it.moveNext$0());
      return result;
    },
    elementAt$1(_, index) {
      var iterator, skipCount, t1, _this = this;
      A.RangeError_checkNotNegative(index, "index");
      iterator = A._LinkedHashSetIterator$(_this, _this._modifications, _this.$ti._precomputed1);
      for (skipCount = index; iterator.moveNext$0();) {
        if (skipCount === 0) {
          t1 = iterator._collection$_current;
          return t1 == null ? iterator.$ti._precomputed1._as(t1) : t1;
        }
        --skipCount;
      }
      throw A.wrapException(A.IndexError$withLength(index, index - skipCount, _this, null, "index"));
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isSet: 1
  };
  A._SetBase.prototype = {};
  A._Utf8Decoder__decoder_closure.prototype = {
    call$0() {
      var t1, exception;
      try {
        t1 = new TextDecoder("utf-8", {fatal: true});
        return t1;
      } catch (exception) {
      }
      return null;
    },
    $signature: 33
  };
  A._Utf8Decoder__decoderNonfatal_closure.prototype = {
    call$0() {
      var t1, exception;
      try {
        t1 = new TextDecoder("utf-8", {fatal: false});
        return t1;
      } catch (exception) {
      }
      return null;
    },
    $signature: 33
  };
  A.AsciiCodec.prototype = {
    encode$1(source) {
      return B.AsciiEncoder_127.convert$1(source);
    }
  };
  A._UnicodeSubsetEncoder.prototype = {
    convert$1(string) {
      var stringLength, end, result, t1, i, codeUnit;
      A._asString(string);
      stringLength = string.length;
      end = A.RangeError_checkValidRange(0, null, stringLength);
      result = new Uint8Array(end);
      for (t1 = ~this._subsetMask, i = 0; i < end; ++i) {
        if (!(i < stringLength))
          return A.ioore(string, i);
        codeUnit = string.charCodeAt(i);
        if ((codeUnit & t1) !== 0)
          throw A.wrapException(A.ArgumentError$value(string, "string", "Contains invalid characters."));
        if (!(i < end))
          return A.ioore(result, i);
        result[i] = codeUnit;
      }
      return result;
    }
  };
  A.AsciiEncoder.prototype = {};
  A.Base64Codec.prototype = {
    normalize$3(source, start, end) {
      var inverseAlphabet, t2, i, sliceStart, buffer, firstPadding, firstPaddingSourceIndex, paddingCount, i0, char, i1, digit1, t3, digit2, char0, value, t4, endLength, $length,
        _s64_ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
        _s31_ = "Invalid base64 encoding length ",
        t1 = source.length;
      end = A.RangeError_checkValidRange(start, end, t1);
      inverseAlphabet = $.$get$_Base64Decoder__inverseAlphabet();
      for (t2 = inverseAlphabet.length, i = start, sliceStart = i, buffer = null, firstPadding = -1, firstPaddingSourceIndex = -1, paddingCount = 0; i < end; i = i0) {
        i0 = i + 1;
        if (!(i < t1))
          return A.ioore(source, i);
        char = source.charCodeAt(i);
        if (char === 37) {
          i1 = i0 + 2;
          if (i1 <= end) {
            A.assertHelper(i1 <= t1);
            if (!(i0 < t1))
              return A.ioore(source, i0);
            digit1 = A.hexDigitValue(source.charCodeAt(i0));
            t3 = i0 + 1;
            if (!(t3 < t1))
              return A.ioore(source, t3);
            digit2 = A.hexDigitValue(source.charCodeAt(t3));
            char0 = digit1 * 16 + digit2 - (digit2 & 256);
            if (char0 === 37)
              char0 = -1;
            i0 = i1;
          } else
            char0 = -1;
        } else
          char0 = char;
        if (0 <= char0 && char0 <= 127) {
          if (!(char0 >= 0 && char0 < t2))
            return A.ioore(inverseAlphabet, char0);
          value = inverseAlphabet[char0];
          if (value >= 0) {
            if (!(value < 64))
              return A.ioore(_s64_, value);
            char0 = _s64_.charCodeAt(value);
            if (char0 === char)
              continue;
            char = char0;
          } else {
            if (value === -1) {
              if (firstPadding < 0) {
                t3 = buffer == null ? null : buffer._contents.length;
                if (t3 == null)
                  t3 = 0;
                firstPadding = t3 + (i - sliceStart);
                firstPaddingSourceIndex = i;
              }
              ++paddingCount;
              if (char === 61)
                continue;
            }
            char = char0;
          }
          if (value !== -2) {
            if (buffer == null) {
              buffer = new A.StringBuffer("");
              t3 = buffer;
            } else
              t3 = buffer;
            t3._contents += B.JSString_methods.substring$2(source, sliceStart, i);
            t4 = A.Primitives_stringFromCharCode(char);
            t3._contents += t4;
            sliceStart = i0;
            continue;
          }
        }
        throw A.wrapException(A.FormatException$("Invalid base64 data", source, i));
      }
      if (buffer != null) {
        t1 = B.JSString_methods.substring$2(source, sliceStart, end);
        t1 = buffer._contents += t1;
        t2 = t1.length;
        if (firstPadding >= 0)
          A.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, t2);
        else {
          endLength = B.JSInt_methods.$mod(t2 - 1, 4) + 1;
          if (endLength === 1)
            throw A.wrapException(A.FormatException$(_s31_, source, end));
          while (endLength < 4) {
            t1 += "=";
            buffer._contents = t1;
            ++endLength;
          }
        }
        t1 = buffer._contents;
        return B.JSString_methods.replaceRange$3(source, start, end, t1.charCodeAt(0) == 0 ? t1 : t1);
      }
      $length = end - start;
      if (firstPadding >= 0)
        A.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, $length);
      else {
        endLength = B.JSInt_methods.$mod($length, 4);
        if (endLength === 1)
          throw A.wrapException(A.FormatException$(_s31_, source, end));
        if (endLength > 1)
          source = B.JSString_methods.replaceRange$3(source, end, end, endLength === 2 ? "==" : "=");
      }
      return source;
    }
  };
  A.Base64Encoder.prototype = {};
  A.Codec.prototype = {};
  A._FusedCodec.prototype = {};
  A.Converter.prototype = {$isStreamTransformer: 1};
  A.Encoding.prototype = {};
  A.Utf8Codec.prototype = {
    decode$1(codeUnits) {
      type$.List_int._as(codeUnits);
      return new A._Utf8Decoder(false)._convertGeneral$4(codeUnits, 0, null, true);
    }
  };
  A.Utf8Encoder.prototype = {
    convert$1(string) {
      var stringLength, end, t1, encoder, endPosition, t2;
      A._asString(string);
      stringLength = string.length;
      end = A.RangeError_checkValidRange(0, null, stringLength);
      if (end === 0)
        return new Uint8Array(0);
      t1 = new Uint8Array(end * 3);
      encoder = new A._Utf8Encoder(t1);
      endPosition = encoder._fillBuffer$3(string, 0, end);
      t2 = end - 1;
      A.assertHelper(endPosition >= t2);
      if (endPosition !== end) {
        if (!(t2 >= 0 && t2 < stringLength))
          return A.ioore(string, t2);
        A.assertHelper((string.charCodeAt(t2) & 64512) === 55296);
        encoder._writeReplacementCharacter$0();
      }
      return B.NativeUint8List_methods.sublist$2(t1, 0, encoder._bufferIndex);
    }
  };
  A._Utf8Encoder.prototype = {
    _writeReplacementCharacter$0() {
      var t4, _this = this,
        t1 = _this._buffer,
        t2 = _this._bufferIndex,
        t3 = _this._bufferIndex = t2 + 1;
      t1.$flags & 2 && A.throwUnsupportedOperation(t1);
      t4 = t1.length;
      if (!(t2 < t4))
        return A.ioore(t1, t2);
      t1[t2] = 239;
      t2 = _this._bufferIndex = t3 + 1;
      if (!(t3 < t4))
        return A.ioore(t1, t3);
      t1[t3] = 191;
      _this._bufferIndex = t2 + 1;
      if (!(t2 < t4))
        return A.ioore(t1, t2);
      t1[t2] = 189;
    },
    _writeSurrogate$2(leadingSurrogate, nextCodeUnit) {
      var rune, t1, t2, t3, t4, _this = this;
      if ((nextCodeUnit & 64512) === 56320) {
        rune = 65536 + ((leadingSurrogate & 1023) << 10) | nextCodeUnit & 1023;
        A.assertHelper(rune > 65535);
        A.assertHelper(rune <= 1114111);
        t1 = _this._buffer;
        t2 = _this._bufferIndex;
        t3 = _this._bufferIndex = t2 + 1;
        t1.$flags & 2 && A.throwUnsupportedOperation(t1);
        t4 = t1.length;
        if (!(t2 < t4))
          return A.ioore(t1, t2);
        t1[t2] = rune >>> 18 | 240;
        t2 = _this._bufferIndex = t3 + 1;
        if (!(t3 < t4))
          return A.ioore(t1, t3);
        t1[t3] = rune >>> 12 & 63 | 128;
        t3 = _this._bufferIndex = t2 + 1;
        if (!(t2 < t4))
          return A.ioore(t1, t2);
        t1[t2] = rune >>> 6 & 63 | 128;
        _this._bufferIndex = t3 + 1;
        if (!(t3 < t4))
          return A.ioore(t1, t3);
        t1[t3] = rune & 63 | 128;
        return true;
      } else {
        _this._writeReplacementCharacter$0();
        return false;
      }
    },
    _fillBuffer$3(str, start, end) {
      var t1, t2, t3, t4, stringIndex, codeUnit, t5, t6, _this = this;
      if (start !== end) {
        t1 = end - 1;
        if (!(t1 >= 0 && t1 < str.length))
          return A.ioore(str, t1);
        t1 = (str.charCodeAt(t1) & 64512) === 55296;
      } else
        t1 = false;
      if (t1)
        --end;
      for (t1 = _this._buffer, t2 = t1.$flags | 0, t3 = t1.length, t4 = str.length, stringIndex = start; stringIndex < end; ++stringIndex) {
        if (!(stringIndex < t4))
          return A.ioore(str, stringIndex);
        codeUnit = str.charCodeAt(stringIndex);
        if (codeUnit <= 127) {
          t5 = _this._bufferIndex;
          if (t5 >= t3)
            break;
          _this._bufferIndex = t5 + 1;
          t2 & 2 && A.throwUnsupportedOperation(t1);
          t1[t5] = codeUnit;
        } else {
          t5 = codeUnit & 64512;
          if (t5 === 55296) {
            if (_this._bufferIndex + 4 > t3)
              break;
            t5 = stringIndex + 1;
            if (!(t5 < t4))
              return A.ioore(str, t5);
            if (_this._writeSurrogate$2(codeUnit, str.charCodeAt(t5)))
              stringIndex = t5;
          } else if (t5 === 56320) {
            if (_this._bufferIndex + 3 > t3)
              break;
            _this._writeReplacementCharacter$0();
          } else if (codeUnit <= 2047) {
            t5 = _this._bufferIndex;
            t6 = t5 + 1;
            if (t6 >= t3)
              break;
            _this._bufferIndex = t6;
            t2 & 2 && A.throwUnsupportedOperation(t1);
            if (!(t5 < t3))
              return A.ioore(t1, t5);
            t1[t5] = codeUnit >>> 6 | 192;
            _this._bufferIndex = t6 + 1;
            t1[t6] = codeUnit & 63 | 128;
          } else {
            A.assertHelper(codeUnit <= 65535);
            t5 = _this._bufferIndex;
            if (t5 + 2 >= t3)
              break;
            t6 = _this._bufferIndex = t5 + 1;
            t2 & 2 && A.throwUnsupportedOperation(t1);
            if (!(t5 < t3))
              return A.ioore(t1, t5);
            t1[t5] = codeUnit >>> 12 | 224;
            t5 = _this._bufferIndex = t6 + 1;
            if (!(t6 < t3))
              return A.ioore(t1, t6);
            t1[t6] = codeUnit >>> 6 & 63 | 128;
            _this._bufferIndex = t5 + 1;
            if (!(t5 < t3))
              return A.ioore(t1, t5);
            t1[t5] = codeUnit & 63 | 128;
          }
        }
      }
      return stringIndex;
    }
  };
  A._Utf8Decoder.prototype = {
    _convertGeneral$4(codeUnits, start, maybeEnd, single) {
      var end, casted, bytes, errorOffset, t1, result, message, _this = this;
      type$.List_int._as(codeUnits);
      end = A.RangeError_checkValidRange(start, maybeEnd, J.get$length$asx(codeUnits));
      if (start === end)
        return "";
      if (codeUnits instanceof Uint8Array) {
        casted = codeUnits;
        bytes = casted;
        errorOffset = 0;
      } else {
        bytes = A._Utf8Decoder__makeNativeUint8List(codeUnits, start, end);
        end -= start;
        errorOffset = start;
        start = 0;
      }
      if (single && end - start >= 15) {
        t1 = _this.allowMalformed;
        result = A._Utf8Decoder__convertInterceptedUint8List(t1, bytes, start, end);
        if (result != null) {
          if (!t1)
            return result;
          if (result.indexOf("\ufffd") < 0)
            return result;
        }
      }
      result = _this._decodeRecursive$4(bytes, start, end, single);
      t1 = _this._convert$_state;
      if ((t1 & 1) !== 0) {
        message = A._Utf8Decoder_errorDescription(t1);
        _this._convert$_state = 0;
        throw A.wrapException(A.FormatException$(message, codeUnits, errorOffset + _this._charOrIndex));
      }
      return result;
    },
    _decodeRecursive$4(bytes, start, end, single) {
      var mid, s1, _this = this;
      if (end - start > 1000) {
        mid = B.JSInt_methods._tdivFast$1(start + end, 2);
        s1 = _this._decodeRecursive$4(bytes, start, mid, false);
        if ((_this._convert$_state & 1) !== 0)
          return s1;
        return s1 + _this._decodeRecursive$4(bytes, mid, end, single);
      }
      return _this.decodeGeneral$4(bytes, start, end, single);
    },
    decodeGeneral$4(bytes, start, end, single) {
      var byte, t2, type, t3, i0, markEnd, i1, m, _this = this,
        _s256_ = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE",
        _s144_ = " \x000:XECCCCCN:lDb \x000:XECCCCCNvlDb \x000:XECCCCCN:lDb AAAAA\x00\x00\x00\x00\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\x800AAAAA\x00\x00\x00\x00 AAAAA",
        _65533 = 65533,
        state = _this._convert$_state,
        char = _this._charOrIndex,
        buffer = new A.StringBuffer(""),
        i = start + 1,
        t1 = bytes.length;
      if (!(start >= 0 && start < t1))
        return A.ioore(bytes, start);
      byte = bytes[start];
      $label0$0:
        for (t2 = _this.allowMalformed;;) {
          for (;; i = i0) {
            if (!(byte >= 0 && byte < 256))
              return A.ioore(_s256_, byte);
            type = _s256_.charCodeAt(byte) & 31;
            char = state <= 32 ? byte & 61694 >>> type : (byte & 63 | char << 6) >>> 0;
            t3 = state + type;
            if (!(t3 >= 0 && t3 < 144))
              return A.ioore(_s144_, t3);
            state = _s144_.charCodeAt(t3);
            if (state === 0) {
              t3 = A.Primitives_stringFromCharCode(char);
              buffer._contents += t3;
              if (i === end)
                break $label0$0;
              break;
            } else if ((state & 1) !== 0) {
              if (t2)
                switch (state) {
                  case 69:
                  case 67:
                    t3 = A.Primitives_stringFromCharCode(_65533);
                    buffer._contents += t3;
                    break;
                  case 65:
                    t3 = A.Primitives_stringFromCharCode(_65533);
                    buffer._contents += t3;
                    --i;
                    break;
                  default:
                    t3 = A.Primitives_stringFromCharCode(_65533);
                    buffer._contents = (buffer._contents += t3) + t3;
                    break;
                }
              else {
                _this._convert$_state = state;
                _this._charOrIndex = i - 1;
                return "";
              }
              state = 0;
            }
            if (i === end)
              break $label0$0;
            i0 = i + 1;
            if (!(i >= 0 && i < t1))
              return A.ioore(bytes, i);
            byte = bytes[i];
          }
          i0 = i + 1;
          if (!(i >= 0 && i < t1))
            return A.ioore(bytes, i);
          byte = bytes[i];
          if (byte < 128) {
            for (;;) {
              if (!(i0 < end)) {
                markEnd = end;
                break;
              }
              i1 = i0 + 1;
              if (!(i0 >= 0 && i0 < t1))
                return A.ioore(bytes, i0);
              byte = bytes[i0];
              if (byte >= 128) {
                markEnd = i1 - 1;
                i0 = i1;
                break;
              }
              i0 = i1;
            }
            A.assertHelper(i < markEnd);
            if (markEnd - i < 20)
              for (m = i; m < markEnd; ++m) {
                if (!(m < t1))
                  return A.ioore(bytes, m);
                t3 = A.Primitives_stringFromCharCode(bytes[m]);
                buffer._contents += t3;
              }
            else {
              t3 = A.String_String$fromCharCodes(bytes, i, markEnd);
              buffer._contents += t3;
            }
            if (markEnd === end)
              break $label0$0;
            i = i0;
          } else
            i = i0;
        }
      if (single && state > 32)
        if (t2) {
          t1 = A.Primitives_stringFromCharCode(_65533);
          buffer._contents += t1;
        } else {
          _this._convert$_state = 77;
          _this._charOrIndex = end;
          return "";
        }
      _this._convert$_state = state;
      _this._charOrIndex = char;
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A._BigIntImpl.prototype = {
    $negate(_) {
      var t2, t3, _this = this,
        t1 = _this._used;
      if (t1 === 0)
        return _this;
      t2 = !_this._isNegative;
      t3 = _this._digits;
      t1 = A._BigIntImpl__normalize(t1, t3);
      return new A._BigIntImpl(t1 === 0 ? false : t2, t3, t1);
    },
    _dlShift$1(n) {
      var resultUsed, digits, resultDigits, i, t1, t2, t3,
        used = this._used;
      if (used === 0)
        return $.$get$_BigIntImpl_zero();
      resultUsed = used + n;
      digits = this._digits;
      resultDigits = new Uint16Array(resultUsed);
      for (i = used - 1, t1 = digits.length; i >= 0; --i) {
        t2 = i + n;
        if (!(i < t1))
          return A.ioore(digits, i);
        t3 = digits[i];
        if (!(t2 >= 0 && t2 < resultUsed))
          return A.ioore(resultDigits, t2);
        resultDigits[t2] = t3;
      }
      t1 = this._isNegative;
      t2 = A._BigIntImpl__normalize(resultUsed, resultDigits);
      return new A._BigIntImpl(t2 === 0 ? false : t1, resultDigits, t2);
    },
    _drShift$1(n) {
      var resultUsed, digits, resultDigits, t1, i, t2, t3, result, _this = this,
        used = _this._used;
      if (used === 0)
        return $.$get$_BigIntImpl_zero();
      resultUsed = used - n;
      if (resultUsed <= 0)
        return _this._isNegative ? $.$get$_BigIntImpl__minusOne() : $.$get$_BigIntImpl_zero();
      digits = _this._digits;
      resultDigits = new Uint16Array(resultUsed);
      for (t1 = digits.length, i = n; i < used; ++i) {
        t2 = i - n;
        if (!(i >= 0 && i < t1))
          return A.ioore(digits, i);
        t3 = digits[i];
        if (!(t2 < resultUsed))
          return A.ioore(resultDigits, t2);
        resultDigits[t2] = t3;
      }
      t2 = _this._isNegative;
      t3 = A._BigIntImpl__normalize(resultUsed, resultDigits);
      result = new A._BigIntImpl(t3 === 0 ? false : t2, resultDigits, t3);
      if (t2)
        for (i = 0; i < n; ++i) {
          if (!(i < t1))
            return A.ioore(digits, i);
          if (digits[i] !== 0)
            return result.$sub(0, $.$get$_BigIntImpl_one());
        }
      return result;
    },
    $shl(_, shiftAmount) {
      var t1, digitShift, resultUsed, resultDigits, t2, _this = this;
      if (shiftAmount < 0)
        throw A.wrapException(A.ArgumentError$("shift-amount must be posititve " + shiftAmount, null));
      t1 = _this._used;
      if (t1 === 0)
        return _this;
      digitShift = B.JSInt_methods._tdivFast$1(shiftAmount, 16);
      if (B.JSInt_methods.$mod(shiftAmount, 16) === 0)
        return _this._dlShift$1(digitShift);
      resultUsed = t1 + digitShift + 1;
      resultDigits = new Uint16Array(resultUsed);
      A._BigIntImpl__lsh(_this._digits, t1, shiftAmount, resultDigits);
      t1 = _this._isNegative;
      t2 = A._BigIntImpl__normalize(resultUsed, resultDigits);
      return new A._BigIntImpl(t2 === 0 ? false : t1, resultDigits, t2);
    },
    $shr(_, shiftAmount) {
      var t1, digitShift, bitShift, resultUsed, digits, resultDigits, t2, result, i, _this = this;
      if (shiftAmount < 0)
        throw A.wrapException(A.ArgumentError$("shift-amount must be posititve " + shiftAmount, null));
      t1 = _this._used;
      if (t1 === 0)
        return _this;
      digitShift = B.JSInt_methods._tdivFast$1(shiftAmount, 16);
      bitShift = B.JSInt_methods.$mod(shiftAmount, 16);
      if (bitShift === 0)
        return _this._drShift$1(digitShift);
      resultUsed = t1 - digitShift;
      if (resultUsed <= 0)
        return _this._isNegative ? $.$get$_BigIntImpl__minusOne() : $.$get$_BigIntImpl_zero();
      digits = _this._digits;
      resultDigits = new Uint16Array(resultUsed);
      A._BigIntImpl__rsh(digits, t1, shiftAmount, resultDigits);
      t1 = _this._isNegative;
      t2 = A._BigIntImpl__normalize(resultUsed, resultDigits);
      result = new A._BigIntImpl(t2 === 0 ? false : t1, resultDigits, t2);
      if (t1) {
        t1 = digits.length;
        if (!(digitShift >= 0 && digitShift < t1))
          return A.ioore(digits, digitShift);
        if ((digits[digitShift] & B.JSInt_methods.$shl(1, bitShift) - 1) >>> 0 !== 0)
          return result.$sub(0, $.$get$_BigIntImpl_one());
        for (i = 0; i < digitShift; ++i) {
          if (!(i < t1))
            return A.ioore(digits, i);
          if (digits[i] !== 0)
            return result.$sub(0, $.$get$_BigIntImpl_one());
        }
      }
      return result;
    },
    compareTo$1(_, other) {
      var t1, result;
      type$._BigIntImpl._as(other);
      t1 = this._isNegative;
      if (t1 === other._isNegative) {
        result = A._BigIntImpl__compareDigits(this._digits, this._used, other._digits, other._used);
        return t1 ? 0 - result : result;
      }
      return t1 ? -1 : 1;
    },
    _absAddSetSign$2(other, isNegative) {
      var resultUsed, resultDigits, t1, _this = this,
        used = _this._used,
        otherUsed = other._used;
      if (used < otherUsed)
        return other._absAddSetSign$2(_this, isNegative);
      if (used === 0) {
        A.assertHelper(!isNegative);
        return $.$get$_BigIntImpl_zero();
      }
      if (otherUsed === 0)
        return _this._isNegative === isNegative ? _this : _this.$negate(0);
      resultUsed = used + 1;
      resultDigits = new Uint16Array(resultUsed);
      A._BigIntImpl__absAdd(_this._digits, used, other._digits, otherUsed, resultDigits);
      t1 = A._BigIntImpl__normalize(resultUsed, resultDigits);
      return new A._BigIntImpl(t1 === 0 ? false : isNegative, resultDigits, t1);
    },
    _absSubSetSign$2(other, isNegative) {
      var resultDigits, _this = this,
        t1 = _this._digits,
        t2 = _this._used,
        t3 = other._digits,
        t4 = other._used;
      A.assertHelper(A._BigIntImpl__compareDigits(t1, t2, t3, t4) >= 0);
      if (t2 === 0) {
        A.assertHelper(!isNegative);
        return $.$get$_BigIntImpl_zero();
      }
      if (t4 === 0)
        return _this._isNegative === isNegative ? _this : _this.$negate(0);
      resultDigits = new Uint16Array(t2);
      A._BigIntImpl__absSub(t1, t2, t3, t4, resultDigits);
      t1 = A._BigIntImpl__normalize(t2, resultDigits);
      return new A._BigIntImpl(t1 === 0 ? false : isNegative, resultDigits, t1);
    },
    $add(_, other) {
      var t2, isNegative, _this = this,
        t1 = _this._used;
      if (t1 === 0)
        return other;
      t2 = other._used;
      if (t2 === 0)
        return _this;
      isNegative = _this._isNegative;
      if (isNegative === other._isNegative)
        return _this._absAddSetSign$2(other, isNegative);
      if (A._BigIntImpl__compareDigits(_this._digits, t1, other._digits, t2) >= 0)
        return _this._absSubSetSign$2(other, isNegative);
      return other._absSubSetSign$2(_this, !isNegative);
    },
    $sub(_, other) {
      var t2, isNegative, _this = this,
        t1 = _this._used;
      if (t1 === 0)
        return other.$negate(0);
      t2 = other._used;
      if (t2 === 0)
        return _this;
      isNegative = _this._isNegative;
      if (isNegative !== other._isNegative)
        return _this._absAddSetSign$2(other, isNegative);
      if (A._BigIntImpl__compareDigits(_this._digits, t1, other._digits, t2) >= 0)
        return _this._absSubSetSign$2(other, isNegative);
      return other._absSubSetSign$2(_this, !isNegative);
    },
    $mul(_, other) {
      var resultUsed, digits, otherDigits, resultDigits, t1, i, t2,
        used = this._used,
        otherUsed = other._used;
      if (used === 0 || otherUsed === 0)
        return $.$get$_BigIntImpl_zero();
      resultUsed = used + otherUsed;
      digits = this._digits;
      otherDigits = other._digits;
      resultDigits = new Uint16Array(resultUsed);
      for (t1 = otherDigits.length, i = 0; i < otherUsed;) {
        if (!(i < t1))
          return A.ioore(otherDigits, i);
        A._BigIntImpl__mulAdd(otherDigits[i], digits, 0, resultDigits, i, used);
        ++i;
      }
      t1 = this._isNegative !== other._isNegative;
      t2 = A._BigIntImpl__normalize(resultUsed, resultDigits);
      return new A._BigIntImpl(t2 === 0 ? false : t1, resultDigits, t2);
    },
    _div$1(other) {
      var lastQuo_used, quo_digits, quo,
        t1 = other._used;
      A.assertHelper(t1 > 0);
      if (this._used < t1)
        return $.$get$_BigIntImpl_zero();
      this._divRem$1(other);
      lastQuo_used = $._BigIntImpl____lastQuoRemUsed._readField$0() - $._BigIntImpl____lastRemUsed._readField$0();
      quo_digits = A._BigIntImpl__cloneDigits($._BigIntImpl____lastQuoRemDigits._readField$0(), $._BigIntImpl____lastRemUsed._readField$0(), $._BigIntImpl____lastQuoRemUsed._readField$0(), lastQuo_used);
      t1 = A._BigIntImpl__normalize(lastQuo_used, quo_digits);
      quo = new A._BigIntImpl(false, quo_digits, t1);
      return this._isNegative !== other._isNegative && t1 > 0 ? quo.$negate(0) : quo;
    },
    _rem$1(other) {
      var remDigits, rem, _this = this,
        t1 = other._used;
      A.assertHelper(t1 > 0);
      if (_this._used < t1)
        return _this;
      _this._divRem$1(other);
      remDigits = A._BigIntImpl__cloneDigits($._BigIntImpl____lastQuoRemDigits._readField$0(), 0, $._BigIntImpl____lastRemUsed._readField$0(), $._BigIntImpl____lastRemUsed._readField$0());
      t1 = A._BigIntImpl__normalize($._BigIntImpl____lastRemUsed._readField$0(), remDigits);
      rem = new A._BigIntImpl(false, remDigits, t1);
      if ($._BigIntImpl____lastRem_nsh._readField$0() > 0)
        rem = rem.$shr(0, $._BigIntImpl____lastRem_nsh._readField$0());
      return _this._isNegative && rem._used > 0 ? rem.$negate(0) : rem;
    },
    _divRem$1(other) {
      var yUsed, yDigits, t1, nsh, yDigits0, yUsed0, resultDigits, resultUsed0, topDigitDivisor, j, tmpDigits, tmpUsed, resultUsed1, nyDigits, i, estimatedQuotientDigit, _this = this,
        resultUsed = _this._used;
      if (resultUsed === $._BigIntImpl__lastDividendUsed && other._used === $._BigIntImpl__lastDivisorUsed && _this._digits === $._BigIntImpl__lastDividendDigits && other._digits === $._BigIntImpl__lastDivisorDigits)
        return;
      yUsed = other._used;
      A.assertHelper(resultUsed >= yUsed);
      yDigits = other._digits;
      t1 = yUsed - 1;
      if (!(t1 >= 0 && t1 < yDigits.length))
        return A.ioore(yDigits, t1);
      nsh = 16 - B.JSInt_methods.get$bitLength(yDigits[t1]);
      if (nsh > 0) {
        yDigits0 = new Uint16Array(yUsed + 5);
        yUsed0 = A._BigIntImpl__lShiftDigits(yDigits, yUsed, nsh, yDigits0);
        resultDigits = new Uint16Array(resultUsed + 5);
        resultUsed0 = A._BigIntImpl__lShiftDigits(_this._digits, resultUsed, nsh, resultDigits);
      } else {
        resultDigits = A._BigIntImpl__cloneDigits(_this._digits, 0, resultUsed, resultUsed + 2);
        yUsed0 = yUsed;
        yDigits0 = yDigits;
        resultUsed0 = resultUsed;
      }
      t1 = yUsed0 - 1;
      if (!(t1 >= 0 && t1 < yDigits0.length))
        return A.ioore(yDigits0, t1);
      topDigitDivisor = yDigits0[t1];
      j = resultUsed0 - yUsed0;
      tmpDigits = new Uint16Array(resultUsed0);
      tmpUsed = A._BigIntImpl__dlShiftDigits(yDigits0, yUsed0, j, tmpDigits);
      resultUsed1 = resultUsed0 + 1;
      t1 = resultDigits.$flags | 0;
      if (A._BigIntImpl__compareDigits(resultDigits, resultUsed0, tmpDigits, tmpUsed) >= 0) {
        t1 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(resultUsed0 >= 0 && resultUsed0 < resultDigits.length))
          return A.ioore(resultDigits, resultUsed0);
        resultDigits[resultUsed0] = 1;
        A._BigIntImpl__absSub(resultDigits, resultUsed1, tmpDigits, tmpUsed, resultDigits);
      } else {
        t1 & 2 && A.throwUnsupportedOperation(resultDigits);
        if (!(resultUsed0 >= 0 && resultUsed0 < resultDigits.length))
          return A.ioore(resultDigits, resultUsed0);
        resultDigits[resultUsed0] = 0;
      }
      t1 = yUsed0 + 2;
      nyDigits = new Uint16Array(t1);
      if (!(yUsed0 >= 0 && yUsed0 < t1))
        return A.ioore(nyDigits, yUsed0);
      nyDigits[yUsed0] = 1;
      A._BigIntImpl__absSub(nyDigits, yUsed0 + 1, yDigits0, yUsed0, nyDigits);
      i = resultUsed0 - 1;
      for (t1 = resultDigits.length; j > 0;) {
        estimatedQuotientDigit = A._BigIntImpl__estimateQuotientDigit(topDigitDivisor, resultDigits, i);
        --j;
        A._BigIntImpl__mulAdd(estimatedQuotientDigit, nyDigits, 0, resultDigits, j, yUsed0);
        if (!(i >= 0 && i < t1))
          return A.ioore(resultDigits, i);
        if (resultDigits[i] < estimatedQuotientDigit) {
          tmpUsed = A._BigIntImpl__dlShiftDigits(nyDigits, yUsed0, j, tmpDigits);
          A._BigIntImpl__absSub(resultDigits, resultUsed1, tmpDigits, tmpUsed, resultDigits);
          while (--estimatedQuotientDigit, resultDigits[i] < estimatedQuotientDigit)
            A._BigIntImpl__absSub(resultDigits, resultUsed1, tmpDigits, tmpUsed, resultDigits);
        }
        --i;
      }
      $._BigIntImpl__lastDividendDigits = _this._digits;
      $._BigIntImpl__lastDividendUsed = resultUsed;
      $._BigIntImpl__lastDivisorDigits = yDigits;
      $._BigIntImpl__lastDivisorUsed = yUsed;
      $._BigIntImpl____lastQuoRemDigits._value = resultDigits;
      $._BigIntImpl____lastQuoRemUsed._value = resultUsed1;
      $._BigIntImpl____lastRemUsed._value = yUsed0;
      $._BigIntImpl____lastRem_nsh._value = nsh;
    },
    get$hashCode(_) {
      var hash, t2, t3, i,
        combine = new A._BigIntImpl_hashCode_combine(),
        t1 = this._used;
      if (t1 === 0)
        return 6707;
      hash = this._isNegative ? 83585 : 429689;
      for (t2 = this._digits, t3 = t2.length, i = 0; i < t1; ++i) {
        if (!(i < t3))
          return A.ioore(t2, i);
        hash = combine.call$2(hash, t2[i]);
      }
      return new A._BigIntImpl_hashCode_finish().call$1(hash);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A._BigIntImpl && this.compareTo$1(0, other) === 0;
    },
    toString$0(_) {
      var decimalDigitChunks, rest, t2, digits4, t3, _this = this,
        t1 = _this._used;
      if (t1 === 0)
        return "0";
      if (t1 === 1) {
        if (_this._isNegative) {
          t1 = _this._digits;
          if (0 >= t1.length)
            return A.ioore(t1, 0);
          return B.JSInt_methods.toString$0(-t1[0]);
        }
        t1 = _this._digits;
        if (0 >= t1.length)
          return A.ioore(t1, 0);
        return B.JSInt_methods.toString$0(t1[0]);
      }
      decimalDigitChunks = A._setArrayType([], type$.JSArray_String);
      t1 = _this._isNegative;
      rest = t1 ? _this.$negate(0) : _this;
      while (rest._used > 1) {
        t2 = $.$get$_BigIntImpl__bigInt10000();
        if (t2._used === 0)
          A.throwExpression(B.C_IntegerDivisionByZeroException);
        digits4 = rest._rem$1(t2).toString$0(0);
        B.JSArray_methods.add$1(decimalDigitChunks, digits4);
        t3 = digits4.length;
        if (t3 === 1)
          B.JSArray_methods.add$1(decimalDigitChunks, "000");
        if (t3 === 2)
          B.JSArray_methods.add$1(decimalDigitChunks, "00");
        if (t3 === 3)
          B.JSArray_methods.add$1(decimalDigitChunks, "0");
        rest = rest._div$1(t2);
      }
      t2 = rest._digits;
      if (0 >= t2.length)
        return A.ioore(t2, 0);
      B.JSArray_methods.add$1(decimalDigitChunks, B.JSInt_methods.toString$0(t2[0]));
      if (t1)
        B.JSArray_methods.add$1(decimalDigitChunks, "-");
      return new A.ReversedListIterable(decimalDigitChunks, type$.ReversedListIterable_String).join$0(0);
    },
    $isBigInt: 1,
    $isComparable: 1
  };
  A._BigIntImpl_hashCode_combine.prototype = {
    call$2(hash, value) {
      hash = hash + value & 536870911;
      hash = hash + ((hash & 524287) << 10) & 536870911;
      return hash ^ hash >>> 6;
    },
    $signature: 4
  };
  A._BigIntImpl_hashCode_finish.prototype = {
    call$1(hash) {
      hash = hash + ((hash & 67108863) << 3) & 536870911;
      hash ^= hash >>> 11;
      return hash + ((hash & 16383) << 15) & 536870911;
    },
    $signature: 13
  };
  A._FinalizationRegistryWrapper.prototype = {
    detach$1(detachToken) {
      var t1 = this._registry;
      if (t1 != null)
        t1.unregister(detachToken);
    }
  };
  A.DateTime.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.DateTime && this._core$_value === other._core$_value && this._microsecond === other._microsecond && this.isUtc === other.isUtc;
    },
    get$hashCode(_) {
      return A.Object_hash(this._core$_value, this._microsecond, B.C_SentinelValue, B.C_SentinelValue);
    },
    compareTo$1(_, other) {
      var r;
      type$.DateTime._as(other);
      r = B.JSInt_methods.compareTo$1(this._core$_value, other._core$_value);
      if (r !== 0)
        return r;
      return B.JSInt_methods.compareTo$1(this._microsecond, other._microsecond);
    },
    toString$0(_) {
      var _this = this,
        y = A.DateTime__fourDigits(A.Primitives_getYear(_this)),
        m = A.DateTime__twoDigits(A.Primitives_getMonth(_this)),
        d = A.DateTime__twoDigits(A.Primitives_getDay(_this)),
        h = A.DateTime__twoDigits(A.Primitives_getHours(_this)),
        min = A.DateTime__twoDigits(A.Primitives_getMinutes(_this)),
        sec = A.DateTime__twoDigits(A.Primitives_getSeconds(_this)),
        ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this)),
        t1 = _this._microsecond,
        us = t1 === 0 ? "" : A.DateTime__threeDigits(t1);
      t1 = y + "-" + m;
      if (_this.isUtc)
        return t1 + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + us + "Z";
      else
        return t1 + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + us;
    },
    $isComparable: 1
  };
  A.Duration.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.Duration && this._duration === other._duration;
    },
    get$hashCode(_) {
      return B.JSInt_methods.get$hashCode(this._duration);
    },
    compareTo$1(_, other) {
      return B.JSInt_methods.compareTo$1(this._duration, type$.Duration._as(other)._duration);
    },
    toString$0(_) {
      var sign, minutes, minutesPadding, seconds, secondsPadding,
        microseconds = this._duration,
        hours = B.JSInt_methods._tdivFast$1(microseconds, 3600000000),
        microseconds0 = microseconds % 3600000000;
      if (microseconds < 0) {
        hours = 0 - hours;
        microseconds = 0 - microseconds0;
        sign = "-";
      } else {
        microseconds = microseconds0;
        sign = "";
      }
      minutes = B.JSInt_methods._tdivFast$1(microseconds, 60000000);
      microseconds %= 60000000;
      minutesPadding = minutes < 10 ? "0" : "";
      seconds = B.JSInt_methods._tdivFast$1(microseconds, 1000000);
      secondsPadding = seconds < 10 ? "0" : "";
      return sign + hours + ":" + minutesPadding + minutes + ":" + secondsPadding + seconds + "." + B.JSString_methods.padLeft$2(B.JSInt_methods.toString$0(microseconds % 1000000), 6, "0");
    },
    $isComparable: 1
  };
  A._Enum.prototype = {
    toString$0(_) {
      return this._enumToString$0();
    },
    $isEnum: 1
  };
  A.Error.prototype = {
    get$stackTrace() {
      return A.Primitives_extractStackTrace(this);
    }
  };
  A.AssertionError.prototype = {
    toString$0(_) {
      var t1 = this.message;
      if (t1 != null)
        return "Assertion failed: " + A.Error_safeToString(t1);
      return "Assertion failed";
    }
  };
  A.TypeError.prototype = {};
  A.ArgumentError.prototype = {
    get$_errorName() {
      return "Invalid argument" + (!this._hasValue ? "(s)" : "");
    },
    get$_errorExplanation() {
      return "";
    },
    toString$0(_) {
      var _this = this,
        $name = _this.name,
        nameString = $name == null ? "" : " (" + $name + ")",
        message = _this.message,
        messageString = message == null ? "" : ": " + A.S(message),
        prefix = _this.get$_errorName() + nameString + messageString;
      if (!_this._hasValue)
        return prefix;
      return prefix + _this.get$_errorExplanation() + ": " + A.Error_safeToString(_this.get$invalidValue());
    },
    get$invalidValue() {
      return this.invalidValue;
    }
  };
  A.RangeError.prototype = {
    get$invalidValue() {
      return A._asNumQ(this.invalidValue);
    },
    get$_errorName() {
      return "RangeError";
    },
    get$_errorExplanation() {
      var start, end, explanation;
      A.assertHelper(this._hasValue);
      start = this.start;
      end = this.end;
      if (start == null)
        explanation = end != null ? ": Not less than or equal to " + A.S(end) : "";
      else if (end == null)
        explanation = ": Not greater than or equal to " + A.S(start);
      else if (end > start)
        explanation = ": Not in inclusive range " + A.S(start) + ".." + A.S(end);
      else
        explanation = end < start ? ": Valid value range is empty" : ": Only valid value is " + A.S(start);
      return explanation;
    }
  };
  A.IndexError.prototype = {
    get$invalidValue() {
      return A._asInt(this.invalidValue);
    },
    get$_errorName() {
      return "RangeError";
    },
    get$_errorExplanation() {
      A.assertHelper(this._hasValue);
      if (A._asInt(this.invalidValue) < 0)
        return ": index must not be negative";
      var t1 = this.length;
      if (t1 === 0)
        return ": no indices are valid";
      return ": index should be less than " + t1;
    },
    get$length(receiver) {
      return this.length;
    }
  };
  A.UnsupportedError.prototype = {
    toString$0(_) {
      return "Unsupported operation: " + this.message;
    }
  };
  A.UnimplementedError.prototype = {
    toString$0(_) {
      return "UnimplementedError: " + this.message;
    }
  };
  A.StateError.prototype = {
    toString$0(_) {
      return "Bad state: " + this.message;
    }
  };
  A.ConcurrentModificationError.prototype = {
    toString$0(_) {
      var t1 = this.modifiedObject;
      if (t1 == null)
        return "Concurrent modification during iteration.";
      return "Concurrent modification during iteration: " + A.Error_safeToString(t1) + ".";
    }
  };
  A.OutOfMemoryError.prototype = {
    toString$0(_) {
      return "Out of Memory";
    },
    get$stackTrace() {
      return null;
    },
    $isError: 1
  };
  A.StackOverflowError.prototype = {
    toString$0(_) {
      return "Stack Overflow";
    },
    get$stackTrace() {
      return null;
    },
    $isError: 1
  };
  A._Exception.prototype = {
    toString$0(_) {
      return "Exception: " + this.message;
    },
    $isException: 1
  };
  A.FormatException.prototype = {
    toString$0(_) {
      var t1, lineEnd, lineNum, lineStart, previousCharWasCR, i, char, prefix, postfix, end, start,
        message = this.message,
        report = "" !== message ? "FormatException: " + message : "FormatException",
        offset = this.offset,
        source = this.source;
      if (typeof source == "string") {
        if (offset != null)
          t1 = offset < 0 || offset > source.length;
        else
          t1 = false;
        if (t1)
          offset = null;
        if (offset == null) {
          if (source.length > 78)
            source = B.JSString_methods.substring$2(source, 0, 75) + "...";
          return report + "\n" + source;
        }
        for (lineEnd = source.length, lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) {
          if (!(i < lineEnd))
            return A.ioore(source, i);
          char = source.charCodeAt(i);
          if (char === 10) {
            if (lineStart !== i || !previousCharWasCR)
              ++lineNum;
            lineStart = i + 1;
            previousCharWasCR = false;
          } else if (char === 13) {
            ++lineNum;
            lineStart = i + 1;
            previousCharWasCR = true;
          }
        }
        report = lineNum > 1 ? report + (" (at line " + lineNum + ", character " + (offset - lineStart + 1) + ")\n") : report + (" (at character " + (offset + 1) + ")\n");
        for (i = offset; i < lineEnd; ++i) {
          if (!(i >= 0))
            return A.ioore(source, i);
          char = source.charCodeAt(i);
          if (char === 10 || char === 13) {
            lineEnd = i;
            break;
          }
        }
        prefix = "";
        if (lineEnd - lineStart > 78) {
          postfix = "...";
          if (offset - lineStart < 75) {
            end = lineStart + 75;
            start = lineStart;
          } else {
            if (lineEnd - offset < 75) {
              start = lineEnd - 75;
              end = lineEnd;
              postfix = "";
            } else {
              start = offset - 36;
              end = offset + 36;
            }
            prefix = "...";
          }
        } else {
          end = lineEnd;
          start = lineStart;
          postfix = "";
        }
        return report + prefix + B.JSString_methods.substring$2(source, start, end) + postfix + "\n" + B.JSString_methods.$mul(" ", offset - start + prefix.length) + "^\n";
      } else
        return offset != null ? report + (" (at offset " + A.S(offset) + ")") : report;
    },
    $isException: 1
  };
  A.IntegerDivisionByZeroException.prototype = {
    get$stackTrace() {
      return null;
    },
    toString$0(_) {
      return "IntegerDivisionByZeroException";
    },
    $isError: 1,
    $isException: 1
  };
  A.Iterable.prototype = {
    cast$1$0(_, $R) {
      return A.CastIterable_CastIterable(this, A._instanceType(this)._eval$1("Iterable.E"), $R);
    },
    map$1$1(_, toElement, $T) {
      var t1 = A._instanceType(this);
      return A.MappedIterable_MappedIterable(this, t1._bind$1($T)._eval$1("1(Iterable.E)")._as(toElement), t1._eval$1("Iterable.E"), $T);
    },
    toList$1$growable(_, growable) {
      var t1 = A._instanceType(this)._eval$1("Iterable.E");
      if (growable)
        t1 = A.List_List$_of(this, t1);
      else {
        t1 = A.List_List$_of(this, t1);
        t1.$flags = 1;
        t1 = t1;
      }
      return t1;
    },
    toList$0(_) {
      return this.toList$1$growable(0, true);
    },
    get$length(_) {
      var it, count;
      A.assertHelper(!type$.EfficientLengthIterable_dynamic._is(this));
      it = this.get$iterator(this);
      for (count = 0; it.moveNext$0();)
        ++count;
      return count;
    },
    get$isEmpty(_) {
      return !this.get$iterator(this).moveNext$0();
    },
    take$1(_, count) {
      return A.TakeIterable_TakeIterable(this, count, A._instanceType(this)._eval$1("Iterable.E"));
    },
    skip$1(_, count) {
      return A.SkipIterable_SkipIterable(this, count, A._instanceType(this)._eval$1("Iterable.E"));
    },
    skipWhile$1(_, test) {
      var t1 = A._instanceType(this);
      return new A.SkipWhileIterable(this, t1._eval$1("bool(Iterable.E)")._as(test), t1._eval$1("SkipWhileIterable<Iterable.E>"));
    },
    get$first(_) {
      var it = this.get$iterator(this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      return it.get$current();
    },
    get$last(_) {
      var result,
        it = this.get$iterator(this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      do
        result = it.get$current();
      while (it.moveNext$0());
      return result;
    },
    elementAt$1(_, index) {
      var iterator, skipCount;
      A.RangeError_checkNotNegative(index, "index");
      iterator = this.get$iterator(this);
      for (skipCount = index; iterator.moveNext$0();) {
        if (skipCount === 0)
          return iterator.get$current();
        --skipCount;
      }
      throw A.wrapException(A.IndexError$withLength(index, index - skipCount, this, null, "index"));
    },
    toString$0(_) {
      return A.Iterable_iterableToShortString(this, "(", ")");
    }
  };
  A.MapEntry.prototype = {
    toString$0(_) {
      return "MapEntry(" + A.S(this.key) + ": " + A.S(this.value) + ")";
    }
  };
  A.Null.prototype = {
    get$hashCode(_) {
      return A.Object.prototype.get$hashCode.call(this, 0);
    },
    toString$0(_) {
      return "null";
    }
  };
  A.Object.prototype = {$isObject: 1,
    $eq(_, other) {
      return this === other;
    },
    get$hashCode(_) {
      return A.Primitives_objectHashCode(this);
    },
    toString$0(_) {
      return "Instance of '" + A.Primitives_objectTypeName(this) + "'";
    },
    get$runtimeType(_) {
      return A.getRuntimeTypeOfDartObject(this);
    },
    toString() {
      return this.toString$0(this);
    }
  };
  A._StringStackTrace.prototype = {
    toString$0(_) {
      return this._stackTrace;
    },
    $isStackTrace: 1
  };
  A.StringBuffer.prototype = {
    get$length(_) {
      return this._contents.length;
    },
    toString$0(_) {
      var t1 = this._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isStringSink: 1
  };
  A.Uri_parseIPv6Address_error.prototype = {
    call$2(msg, position) {
      throw A.wrapException(A.FormatException$("Illegal IPv6 address, " + msg, this.host, position));
    },
    $signature: 72
  };
  A._Uri.prototype = {
    get$_text() {
      var t1, t2, t3, t4, _this = this,
        value = _this.___Uri__text_FI;
      if (value === $) {
        t1 = _this.scheme;
        t2 = t1.length !== 0 ? t1 + ":" : "";
        t3 = _this._host;
        t4 = t3 == null;
        if (!t4 || t1 === "file") {
          t1 = t2 + "//";
          t2 = _this._userInfo;
          if (t2.length !== 0)
            t1 = t1 + t2 + "@";
          if (!t4)
            t1 += t3;
          t2 = _this._port;
          if (t2 != null)
            t1 = t1 + ":" + A.S(t2);
        } else
          t1 = t2;
        t1 += _this.path;
        t2 = _this._query;
        if (t2 != null)
          t1 = t1 + "?" + t2;
        t2 = _this._fragment;
        if (t2 != null)
          t1 = t1 + "#" + t2;
        value = _this.___Uri__text_FI = t1.charCodeAt(0) == 0 ? t1 : t1;
      }
      return value;
    },
    get$pathSegments() {
      var pathToSplit, t1, result, _this = this,
        value = _this.___Uri_pathSegments_FI;
      if (value === $) {
        pathToSplit = _this.path;
        t1 = pathToSplit.length;
        if (t1 !== 0) {
          if (0 >= t1)
            return A.ioore(pathToSplit, 0);
          t1 = pathToSplit.charCodeAt(0) === 47;
        } else
          t1 = false;
        if (t1)
          pathToSplit = B.JSString_methods.substring$1(pathToSplit, 1);
        result = pathToSplit.length === 0 ? B.List_empty0 : A.List_List$unmodifiable(new A.MappedListIterable(A._setArrayType(pathToSplit.split("/"), type$.JSArray_String), type$.dynamic_Function_String._as(A.core_Uri_decodeComponent$closure()), type$.MappedListIterable_String_dynamic), type$.String);
        _this.___Uri_pathSegments_FI !== $ && A.throwLateFieldADI("pathSegments");
        value = _this.___Uri_pathSegments_FI = result;
      }
      return value;
    },
    get$hashCode(_) {
      var result, _this = this,
        value = _this.___Uri_hashCode_FI;
      if (value === $) {
        result = B.JSString_methods.get$hashCode(_this.get$_text());
        _this.___Uri_hashCode_FI !== $ && A.throwLateFieldADI("hashCode");
        _this.___Uri_hashCode_FI = result;
        value = result;
      }
      return value;
    },
    get$userInfo() {
      return this._userInfo;
    },
    get$host() {
      var host = this._host;
      if (host == null)
        return "";
      if (B.JSString_methods.startsWith$1(host, "[") && !B.JSString_methods.startsWith$2(host, "v", 1))
        return B.JSString_methods.substring$2(host, 1, host.length - 1);
      return host;
    },
    get$port() {
      var t1 = this._port;
      return t1 == null ? A._Uri__defaultPort(this.scheme) : t1;
    },
    get$query() {
      var t1 = this._query;
      return t1 == null ? "" : t1;
    },
    get$fragment() {
      var t1 = this._fragment;
      return t1 == null ? "" : t1;
    },
    isScheme$1(scheme) {
      var thisScheme = this.scheme;
      if (scheme.length !== thisScheme.length)
        return false;
      return A._caseInsensitiveCompareStart(scheme, thisScheme, 0) >= 0;
    },
    replace$1$scheme(scheme) {
      var isFile, userInfo, port, host, currentPath, t1, path, _this = this;
      scheme = A._Uri__makeScheme(scheme, 0, scheme.length);
      isFile = scheme === "file";
      userInfo = _this._userInfo;
      port = _this._port;
      if (scheme !== _this.scheme)
        port = A._Uri__makePort(port, scheme);
      host = _this._host;
      if (!(host != null))
        host = userInfo.length !== 0 || port != null || isFile ? "" : null;
      currentPath = _this.path;
      if (!isFile)
        t1 = host != null && currentPath.length !== 0;
      else
        t1 = true;
      if (t1 && !B.JSString_methods.startsWith$1(currentPath, "/"))
        currentPath = "/" + currentPath;
      path = currentPath;
      return A._Uri$_internal(scheme, userInfo, host, port, path, _this._query, _this._fragment);
    },
    get$isAbsolute() {
      if (this.scheme !== "") {
        var t1 = this._fragment;
        t1 = (t1 == null ? "" : t1) === "";
      } else
        t1 = false;
      return t1;
    },
    _mergePaths$2(base, reference) {
      var backCount, refStart, baseEnd, t1, newEnd, delta, t2, t3, t4;
      for (backCount = 0, refStart = 0; B.JSString_methods.startsWith$2(reference, "../", refStart);) {
        refStart += 3;
        ++backCount;
      }
      baseEnd = B.JSString_methods.lastIndexOf$1(base, "/");
      t1 = base.length;
      for (;;) {
        if (!(baseEnd > 0 && backCount > 0))
          break;
        newEnd = B.JSString_methods.lastIndexOf$2(base, "/", baseEnd - 1);
        if (newEnd < 0)
          break;
        delta = baseEnd - newEnd;
        t2 = delta !== 2;
        t3 = false;
        if (!t2 || delta === 3) {
          t4 = newEnd + 1;
          if (!(t4 < t1))
            return A.ioore(base, t4);
          if (base.charCodeAt(t4) === 46)
            if (t2) {
              t2 = newEnd + 2;
              if (!(t2 < t1))
                return A.ioore(base, t2);
              t2 = base.charCodeAt(t2) === 46;
            } else
              t2 = true;
          else
            t2 = t3;
        } else
          t2 = t3;
        if (t2)
          break;
        --backCount;
        baseEnd = newEnd;
      }
      return B.JSString_methods.replaceRange$3(base, baseEnd + 1, null, B.JSString_methods.substring$1(reference, refStart - 3 * backCount));
    },
    resolve$1(reference) {
      return this.resolveUri$1(A.Uri_parse(reference));
    },
    resolveUri$1(reference) {
      var targetScheme, t1, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, packageNameEnd, packageName, mergedPath, fragment, _this = this;
      if (reference.get$scheme().length !== 0)
        return reference;
      else {
        targetScheme = _this.scheme;
        if (reference.get$hasAuthority()) {
          t1 = reference.replace$1$scheme(targetScheme);
          return t1;
        } else {
          targetUserInfo = _this._userInfo;
          targetHost = _this._host;
          targetPort = _this._port;
          targetPath = _this.path;
          if (reference.get$hasEmptyPath())
            targetQuery = reference.get$hasQuery() ? reference.get$query() : _this._query;
          else {
            packageNameEnd = A._Uri__packageNameEnd(_this, targetPath);
            if (packageNameEnd > 0) {
              A.assertHelper(targetScheme === "package");
              A.assertHelper(targetHost == null);
              A.assertHelper(targetPath.length !== 0);
              packageName = B.JSString_methods.substring$2(targetPath, 0, packageNameEnd);
              targetPath = reference.get$hasAbsolutePath() ? packageName + A._Uri__removeDotSegments(reference.get$path()) : packageName + A._Uri__removeDotSegments(_this._mergePaths$2(B.JSString_methods.substring$1(targetPath, packageName.length), reference.get$path()));
            } else if (reference.get$hasAbsolutePath())
              targetPath = A._Uri__removeDotSegments(reference.get$path());
            else if (targetPath.length === 0)
              if (targetHost == null)
                targetPath = targetScheme.length === 0 ? reference.get$path() : A._Uri__removeDotSegments(reference.get$path());
              else
                targetPath = A._Uri__removeDotSegments("/" + reference.get$path());
            else {
              mergedPath = _this._mergePaths$2(targetPath, reference.get$path());
              t1 = targetScheme.length === 0;
              if (!t1 || targetHost != null || B.JSString_methods.startsWith$1(targetPath, "/"))
                targetPath = A._Uri__removeDotSegments(mergedPath);
              else
                targetPath = A._Uri__normalizeRelativePath(mergedPath, !t1 || targetHost != null);
            }
            targetQuery = reference.get$hasQuery() ? reference.get$query() : null;
          }
        }
      }
      fragment = reference.get$hasFragment() ? reference.get$fragment() : null;
      return A._Uri$_internal(targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, fragment);
    },
    get$hasAuthority() {
      return this._host != null;
    },
    get$hasQuery() {
      return this._query != null;
    },
    get$hasFragment() {
      return this._fragment != null;
    },
    get$hasEmptyPath() {
      return this.path.length === 0;
    },
    get$hasAbsolutePath() {
      return B.JSString_methods.startsWith$1(this.path, "/");
    },
    toFilePath$0() {
      var pathSegments, _this = this,
        t1 = _this.scheme;
      if (t1 !== "" && t1 !== "file")
        throw A.wrapException(A.UnsupportedError$("Cannot extract a file path from a " + t1 + " URI"));
      t1 = _this._query;
      if ((t1 == null ? "" : t1) !== "")
        throw A.wrapException(A.UnsupportedError$(string$.Cannotefq));
      t1 = _this._fragment;
      if ((t1 == null ? "" : t1) !== "")
        throw A.wrapException(A.UnsupportedError$(string$.Cannoteff));
      if (_this._host != null && _this.get$host() !== "")
        A.throwExpression(A.UnsupportedError$(string$.Cannoten));
      pathSegments = _this.get$pathSegments();
      A._Uri__checkNonWindowsPathReservedCharacters(pathSegments, false);
      t1 = A.StringBuffer__writeAll(B.JSString_methods.startsWith$1(_this.path, "/") ? "/" : "", pathSegments, "/");
      t1 = t1.charCodeAt(0) == 0 ? t1 : t1;
      return t1;
    },
    toString$0(_) {
      return this.get$_text();
    },
    $eq(_, other) {
      var t1, t2, t3, _this = this;
      if (other == null)
        return false;
      if (_this === other)
        return true;
      t1 = false;
      if (type$.Uri._is(other))
        if (_this.scheme === other.get$scheme())
          if (_this._host != null === other.get$hasAuthority())
            if (_this._userInfo === other.get$userInfo())
              if (_this.get$host() === other.get$host())
                if (_this.get$port() === other.get$port())
                  if (_this.path === other.get$path()) {
                    t2 = _this._query;
                    t3 = t2 == null;
                    if (!t3 === other.get$hasQuery()) {
                      if (t3)
                        t2 = "";
                      if (t2 === other.get$query()) {
                        t2 = _this._fragment;
                        t3 = t2 == null;
                        if (!t3 === other.get$hasFragment()) {
                          t1 = t3 ? "" : t2;
                          t1 = t1 === other.get$fragment();
                        }
                      }
                    }
                  }
      return t1;
    },
    $isUri: 1,
    get$scheme() {
      return this.scheme;
    },
    get$path() {
      return this.path;
    }
  };
  A._Uri__makePath_closure.prototype = {
    call$1(s) {
      return A._Uri__uriEncode(64, A._asString(s), B.C_Utf8Codec, false);
    },
    $signature: 8
  };
  A.UriData.prototype = {
    get$uri() {
      var t2, queryIndex, end, query, _this = this, _null = null,
        t1 = _this._uriCache;
      if (t1 == null) {
        t1 = _this._separatorIndices;
        if (0 >= t1.length)
          return A.ioore(t1, 0);
        t2 = _this._text;
        t1 = t1[0] + 1;
        queryIndex = B.JSString_methods.indexOf$2(t2, "?", t1);
        end = t2.length;
        if (queryIndex >= 0) {
          query = A._Uri__normalizeOrSubstring(t2, queryIndex + 1, end, 256, false, false);
          end = queryIndex;
        } else
          query = _null;
        t1 = _this._uriCache = new A._DataUri("data", "", _null, _null, A._Uri__normalizeOrSubstring(t2, t1, end, 128, false, false), query, _null);
      }
      return t1;
    },
    toString$0(_) {
      var t2,
        t1 = this._separatorIndices;
      if (0 >= t1.length)
        return A.ioore(t1, 0);
      t2 = this._text;
      return t1[0] === -1 ? "data:" + t2 : t2;
    }
  };
  A._SimpleUri.prototype = {
    get$hasAuthority() {
      return this._hostStart > 0;
    },
    get$hasPort() {
      return this._hostStart > 0 && this._portStart + 1 < this._pathStart;
    },
    get$hasQuery() {
      return this._queryStart < this._fragmentStart;
    },
    get$hasFragment() {
      return this._fragmentStart < this._uri.length;
    },
    get$hasAbsolutePath() {
      return B.JSString_methods.startsWith$2(this._uri, "/", this._pathStart);
    },
    get$hasEmptyPath() {
      return this._pathStart === this._queryStart;
    },
    get$isAbsolute() {
      return this._schemeEnd > 0 && this._fragmentStart >= this._uri.length;
    },
    get$scheme() {
      var t1 = this._schemeCache;
      return t1 == null ? this._schemeCache = this._computeScheme$0() : t1;
    },
    _computeScheme$0() {
      var t2, _this = this,
        t1 = _this._schemeEnd;
      if (t1 <= 0)
        return "";
      t2 = t1 === 4;
      if (t2 && B.JSString_methods.startsWith$1(_this._uri, "http"))
        return "http";
      if (t1 === 5 && B.JSString_methods.startsWith$1(_this._uri, "https"))
        return "https";
      if (t2 && B.JSString_methods.startsWith$1(_this._uri, "file"))
        return "file";
      if (t1 === 7 && B.JSString_methods.startsWith$1(_this._uri, "package"))
        return "package";
      return B.JSString_methods.substring$2(_this._uri, 0, t1);
    },
    get$userInfo() {
      var t1 = this._hostStart,
        t2 = this._schemeEnd + 3;
      return t1 > t2 ? B.JSString_methods.substring$2(this._uri, t2, t1 - 1) : "";
    },
    get$host() {
      var t1 = this._hostStart;
      return t1 > 0 ? B.JSString_methods.substring$2(this._uri, t1, this._portStart) : "";
    },
    get$port() {
      var t1, _this = this;
      if (_this.get$hasPort())
        return A.int_parse(B.JSString_methods.substring$2(_this._uri, _this._portStart + 1, _this._pathStart), null);
      t1 = _this._schemeEnd;
      if (t1 === 4 && B.JSString_methods.startsWith$1(_this._uri, "http"))
        return 80;
      if (t1 === 5 && B.JSString_methods.startsWith$1(_this._uri, "https"))
        return 443;
      return 0;
    },
    get$path() {
      return B.JSString_methods.substring$2(this._uri, this._pathStart, this._queryStart);
    },
    get$query() {
      var t1 = this._queryStart,
        t2 = this._fragmentStart;
      return t1 < t2 ? B.JSString_methods.substring$2(this._uri, t1 + 1, t2) : "";
    },
    get$fragment() {
      var t1 = this._fragmentStart,
        t2 = this._uri;
      return t1 < t2.length ? B.JSString_methods.substring$1(t2, t1 + 1) : "";
    },
    _isPort$1(port) {
      var portDigitStart = this._portStart + 1;
      return portDigitStart + port.length === this._pathStart && B.JSString_methods.startsWith$2(this._uri, port, portDigitStart);
    },
    removeFragment$0() {
      var _this = this,
        t1 = _this._fragmentStart,
        t2 = _this._uri;
      if (t1 >= t2.length)
        return _this;
      return new A._SimpleUri(B.JSString_methods.substring$2(t2, 0, t1), _this._schemeEnd, _this._hostStart, _this._portStart, _this._pathStart, _this._queryStart, t1, _this._schemeCache);
    },
    replace$1$scheme(scheme) {
      var schemeChanged, isFile, t1, userInfo, port, host, t2, path, t3, query, fragment, _this = this, _null = null;
      scheme = A._Uri__makeScheme(scheme, 0, scheme.length);
      schemeChanged = !(_this._schemeEnd === scheme.length && B.JSString_methods.startsWith$1(_this._uri, scheme));
      isFile = scheme === "file";
      t1 = _this._hostStart;
      userInfo = t1 > 0 ? B.JSString_methods.substring$2(_this._uri, _this._schemeEnd + 3, t1) : "";
      port = _this.get$hasPort() ? _this.get$port() : _null;
      if (schemeChanged)
        port = A._Uri__makePort(port, scheme);
      t1 = _this._hostStart;
      if (t1 > 0)
        host = B.JSString_methods.substring$2(_this._uri, t1, _this._portStart);
      else
        host = userInfo.length !== 0 || port != null || isFile ? "" : _null;
      t1 = _this._uri;
      t2 = _this._queryStart;
      path = B.JSString_methods.substring$2(t1, _this._pathStart, t2);
      if (!isFile)
        t3 = host != null && path.length !== 0;
      else
        t3 = true;
      if (t3 && !B.JSString_methods.startsWith$1(path, "/"))
        path = "/" + path;
      t3 = _this._fragmentStart;
      query = t2 < t3 ? B.JSString_methods.substring$2(t1, t2 + 1, t3) : _null;
      t2 = _this._fragmentStart;
      fragment = t2 < t1.length ? B.JSString_methods.substring$1(t1, t2 + 1) : _null;
      return A._Uri$_internal(scheme, userInfo, host, port, path, query, fragment);
    },
    resolve$1(reference) {
      return this.resolveUri$1(A.Uri_parse(reference));
    },
    resolveUri$1(reference) {
      if (reference instanceof A._SimpleUri)
        return this._simpleMerge$2(this, reference);
      return this._toNonSimple$0().resolveUri$1(reference);
    },
    _simpleMerge$2(base, ref) {
      var t2, t3, t4, isSimple, delta, refStart, basePathStart, packageNameEnd, basePathStart0, baseStart, baseEnd, baseUri, baseStart0, backCount, refStart0, insert,
        t1 = ref._schemeEnd;
      if (t1 > 0)
        return ref;
      t2 = ref._hostStart;
      if (t2 > 0) {
        t3 = base._schemeEnd;
        if (t3 <= 0)
          return ref;
        t4 = t3 === 4;
        if (t4 && B.JSString_methods.startsWith$1(base._uri, "file"))
          isSimple = ref._pathStart !== ref._queryStart;
        else if (t4 && B.JSString_methods.startsWith$1(base._uri, "http"))
          isSimple = !ref._isPort$1("80");
        else
          isSimple = !(t3 === 5 && B.JSString_methods.startsWith$1(base._uri, "https")) || !ref._isPort$1("443");
        if (isSimple) {
          delta = t3 + 1;
          return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, delta) + B.JSString_methods.substring$1(ref._uri, t1 + 1), t3, t2 + delta, ref._portStart + delta, ref._pathStart + delta, ref._queryStart + delta, ref._fragmentStart + delta, base._schemeCache);
        } else
          return this._toNonSimple$0().resolveUri$1(ref);
      }
      refStart = ref._pathStart;
      t1 = ref._queryStart;
      if (refStart === t1) {
        t2 = ref._fragmentStart;
        if (t1 < t2) {
          t3 = base._queryStart;
          delta = t3 - t1;
          return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, t3) + B.JSString_methods.substring$1(ref._uri, t1), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, t1 + delta, t2 + delta, base._schemeCache);
        }
        t1 = ref._uri;
        if (t2 < t1.length) {
          t3 = base._fragmentStart;
          return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, t3) + B.JSString_methods.substring$1(t1, t2), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, base._queryStart, t2 + (t3 - t2), base._schemeCache);
        }
        return base.removeFragment$0();
      }
      t2 = ref._uri;
      if (B.JSString_methods.startsWith$2(t2, "/", refStart)) {
        basePathStart = base._pathStart;
        packageNameEnd = A._SimpleUri__packageNameEnd(this);
        basePathStart0 = packageNameEnd > 0 ? packageNameEnd : basePathStart;
        delta = basePathStart0 - refStart;
        return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, basePathStart0) + B.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, basePathStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
      }
      baseStart = base._pathStart;
      baseEnd = base._queryStart;
      if (baseStart === baseEnd && base._hostStart > 0) {
        while (B.JSString_methods.startsWith$2(t2, "../", refStart))
          refStart += 3;
        delta = baseStart - refStart + 1;
        return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, baseStart) + "/" + B.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
      }
      baseUri = base._uri;
      packageNameEnd = A._SimpleUri__packageNameEnd(this);
      if (packageNameEnd >= 0)
        baseStart0 = packageNameEnd;
      else
        for (baseStart0 = baseStart; B.JSString_methods.startsWith$2(baseUri, "../", baseStart0);)
          baseStart0 += 3;
      backCount = 0;
      for (;;) {
        refStart0 = refStart + 3;
        if (!(refStart0 <= t1 && B.JSString_methods.startsWith$2(t2, "../", refStart)))
          break;
        ++backCount;
        refStart = refStart0;
      }
      for (t3 = baseUri.length, insert = ""; baseEnd > baseStart0;) {
        --baseEnd;
        if (!(baseEnd >= 0 && baseEnd < t3))
          return A.ioore(baseUri, baseEnd);
        if (baseUri.charCodeAt(baseEnd) === 47) {
          if (backCount === 0) {
            insert = "/";
            break;
          }
          --backCount;
          insert = "/";
        }
      }
      if (baseEnd === baseStart0 && base._schemeEnd <= 0 && !B.JSString_methods.startsWith$2(baseUri, "/", baseStart)) {
        refStart -= backCount * 3;
        insert = "";
      }
      delta = baseEnd - refStart + insert.length;
      return new A._SimpleUri(B.JSString_methods.substring$2(baseUri, 0, baseEnd) + insert + B.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
    },
    toFilePath$0() {
      var t2, _this = this,
        t1 = _this._schemeEnd;
      if (t1 >= 0) {
        t2 = !(t1 === 4 && B.JSString_methods.startsWith$1(_this._uri, "file"));
        t1 = t2;
      } else
        t1 = false;
      if (t1)
        throw A.wrapException(A.UnsupportedError$("Cannot extract a file path from a " + _this.get$scheme() + " URI"));
      t1 = _this._queryStart;
      t2 = _this._uri;
      if (t1 < t2.length) {
        if (t1 < _this._fragmentStart)
          throw A.wrapException(A.UnsupportedError$(string$.Cannotefq));
        throw A.wrapException(A.UnsupportedError$(string$.Cannoteff));
      }
      if (_this._hostStart < _this._portStart)
        A.throwExpression(A.UnsupportedError$(string$.Cannoten));
      t1 = B.JSString_methods.substring$2(t2, _this._pathStart, t1);
      return t1;
    },
    get$hashCode(_) {
      var t1 = this._hashCodeCache;
      return t1 == null ? this._hashCodeCache = B.JSString_methods.get$hashCode(this._uri) : t1;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      if (this === other)
        return true;
      return type$.Uri._is(other) && this._uri === other.toString$0(0);
    },
    _toNonSimple$0() {
      var _this = this, _null = null,
        t1 = _this.get$scheme(),
        t2 = _this.get$userInfo(),
        t3 = _this._hostStart > 0 ? _this.get$host() : _null,
        t4 = _this.get$hasPort() ? _this.get$port() : _null,
        t5 = _this._uri,
        t6 = _this._queryStart,
        t7 = B.JSString_methods.substring$2(t5, _this._pathStart, t6),
        t8 = _this._fragmentStart;
      t6 = t6 < t8 ? _this.get$query() : _null;
      return A._Uri$_internal(t1, t2, t3, t4, t7, t6, t8 < t5.length ? _this.get$fragment() : _null);
    },
    toString$0(_) {
      return this._uri;
    },
    $isUri: 1
  };
  A._DataUri.prototype = {};
  A.Expando.prototype = {
    $index(_, object) {
      A.Expando__badExpandoKey(object);
      return this._jsWeakMap.get(object);
    },
    toString$0(_) {
      return "Expando:null";
    }
  };
  A.NullRejectionException.prototype = {
    toString$0(_) {
      return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`.";
    },
    $isException: 1
  };
  A.jsify__convert.prototype = {
    call$1(o) {
      var t1, convertedMap, key, convertedList;
      if (A._noJsifyRequired(o))
        return o;
      t1 = this._convertedObjects;
      if (t1.containsKey$1(o))
        return t1.$index(0, o);
      if (type$.Map_dynamic_dynamic._is(o)) {
        convertedMap = {};
        t1.$indexSet(0, o, convertedMap);
        for (t1 = J.get$iterator$ax(o.get$keys()); t1.moveNext$0();) {
          key = t1.get$current();
          convertedMap[key] = this.call$1(o.$index(0, key));
        }
        return convertedMap;
      } else if (type$.Iterable_dynamic._is(o)) {
        convertedList = [];
        t1.$indexSet(0, o, convertedList);
        B.JSArray_methods.addAll$1(convertedList, J.map$1$1$ax(o, this, type$.dynamic));
        return convertedList;
      } else
        return o;
    },
    $signature: 15
  };
  A.promiseToFuture_closure.prototype = {
    call$1(r) {
      return this.completer.complete$1(this.T._eval$1("0/?")._as(r));
    },
    $signature: 16
  };
  A.promiseToFuture_closure0.prototype = {
    call$1(e) {
      if (e == null)
        return this.completer.completeError$1(new A.NullRejectionException(e === undefined));
      return this.completer.completeError$1(e);
    },
    $signature: 16
  };
  A.dartify_convert.prototype = {
    call$1(o) {
      var t1, proto, t2, dartObject, originalKeys, dartKeys, i, jsKey, dartKey, l, $length;
      if (A._noDartifyRequired(o))
        return o;
      t1 = this._convertedObjects;
      o.toString;
      if (t1.containsKey$1(o))
        return t1.$index(0, o);
      if (o instanceof Date)
        return new A.DateTime(A.DateTime__validate(o.getTime(), 0, true), 0, true);
      if (o instanceof RegExp)
        throw A.wrapException(A.ArgumentError$("structured clone of RegExp", null));
      if (o instanceof Promise)
        return A.promiseToFuture(o, type$.nullable_Object);
      proto = Object.getPrototypeOf(o);
      if (proto === Object.prototype || proto === null) {
        t2 = type$.nullable_Object;
        dartObject = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
        t1.$indexSet(0, o, dartObject);
        originalKeys = Object.keys(o);
        dartKeys = [];
        for (t1 = J.getInterceptor$ax(originalKeys), t2 = t1.get$iterator(originalKeys); t2.moveNext$0();)
          dartKeys.push(A.dartify(t2.get$current()));
        for (i = 0; i < t1.get$length(originalKeys); ++i) {
          jsKey = t1.$index(originalKeys, i);
          if (!(i < dartKeys.length))
            return A.ioore(dartKeys, i);
          dartKey = dartKeys[i];
          if (jsKey != null)
            dartObject.$indexSet(0, dartKey, this.call$1(o[jsKey]));
        }
        return dartObject;
      }
      if (o instanceof Array) {
        l = o;
        dartObject = [];
        t1.$indexSet(0, o, dartObject);
        $length = A._asInt(o.length);
        for (t1 = J.getInterceptor$asx(l), i = 0; i < $length; ++i)
          dartObject.push(this.call$1(t1.$index(l, i)));
        return dartObject;
      }
      return o;
    },
    $signature: 15
  };
  A._JSSecureRandom.prototype = {
    _JSSecureRandom$0() {
      var $crypto = self.crypto;
      if ($crypto != null)
        if ($crypto.getRandomValues != null)
          return;
      throw A.wrapException(A.UnsupportedError$("No source of cryptographically secure random numbers available."));
    },
    nextInt$1(max) {
      var byteCount, t1, start, randomLimit, t2, t3, random, result, _null = null;
      if (max <= 0 || max > 4294967296)
        throw A.wrapException(new A.RangeError(_null, _null, false, _null, _null, "max must be in range 0 < max \u2264 2^32, was " + max));
      if (max > 255)
        if (max > 65535)
          byteCount = max > 16777215 ? 4 : 3;
        else
          byteCount = 2;
      else
        byteCount = 1;
      t1 = this._math$_buffer;
      t1.$flags & 2 && A.throwUnsupportedOperation(t1, 11);
      t1.setUint32(0, 0, false);
      start = 4 - byteCount;
      randomLimit = A._asInt(Math.pow(256, byteCount));
      for (t2 = max - 1, t3 = (max & t2) === 0;;) {
        crypto.getRandomValues(J.asUint8List$2$x(B.NativeByteData_methods.get$buffer(t1), start, byteCount));
        random = t1.getUint32(0, false);
        if (t3)
          return (random & t2) >>> 0;
        result = random % max;
        if (random - result + max < randomLimit)
          return result;
      }
    },
    $isRandom: 1
  };
  A.DelegatingStreamSink.prototype = {
    add$1(_, data) {
      this._sink.add$1(0, this.$ti._precomputed1._as(data));
    },
    addError$2(error, stackTrace) {
      this._sink.addError$2(error, stackTrace);
    },
    close$0() {
      return this._sink.close$0();
    },
    $isEventSink: 1,
    $isStreamSink: 1
  };
  A.DefaultEquality.prototype = {};
  A.ListEquality.prototype = {
    equals$2(list1, list2) {
      var $length, t2, i,
        t1 = this.$ti._eval$1("List<1>?");
      t1._as(list1);
      t1._as(list2);
      if (list1 === list2)
        return true;
      t1 = J.getInterceptor$asx(list1);
      $length = t1.get$length(list1);
      t2 = J.getInterceptor$asx(list2);
      if ($length !== t2.get$length(list2))
        return false;
      for (i = 0; i < $length; ++i)
        if (!J.$eq$(t1.$index(list1, i), t2.$index(list2, i)))
          return false;
      return true;
    },
    hash$1(list) {
      var t1, hash, i;
      this.$ti._eval$1("List<1>?")._as(list);
      for (t1 = J.getInterceptor$asx(list), hash = 0, i = 0; i < t1.get$length(list); ++i) {
        hash = hash + J.get$hashCode$(t1.$index(list, i)) & 2147483647;
        hash = hash + (hash << 10 >>> 0) & 2147483647;
        hash ^= hash >>> 6;
      }
      hash = hash + (hash << 3 >>> 0) & 2147483647;
      hash ^= hash >>> 11;
      return hash + (hash << 15 >>> 0) & 2147483647;
    }
  };
  A.NonGrowableListMixin.prototype = {};
  A.UnmodifiableMapMixin.prototype = {};
  A.DriftCommunication.prototype = {
    DriftCommunication$3$debugLog$serialize(_channel, debugLog, serialize) {
      var t1 = this._communication$_channel.__CloseGuaranteeChannel__stream_F;
      t1 === $ && A.throwLateFieldNI("_stream");
      t1.listen$2$onDone(this.get$_handleMessage(), new A.DriftCommunication_closure(this));
    },
    newRequestId$0() {
      return this._currentRequestId++;
    },
    close$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, t1;
      var $async$close$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._startedClosingLocally || ($async$self._closeCompleter.future._state & 30) !== 0) {
                // goto return
                $async$goto = 1;
                break;
              }
              $async$self._startedClosingLocally = true;
              t1 = $async$self._communication$_channel.__CloseGuaranteeChannel__sink_F;
              t1 === $ && A.throwLateFieldNI("_sink");
              t1.close$0();
              $async$goto = 3;
              return A._asyncAwait($async$self._closeCompleter.future, $async$close$0);
            case 3:
              // returning from await.
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$close$0, $async$completer);
    },
    _handleMessage$1(msg) {
      var request, _this = this;
      if (_this._serialize) {
        msg.toString;
        msg = B.C_DriftProtocol.deserialize$1(msg);
      }
      if (msg instanceof A.SuccessResponse) {
        request = _this._pendingRequests.remove$1(0, msg.requestId);
        if (request != null)
          request.completer.complete$1(msg.response);
      } else if (msg instanceof A.ErrorResponse) {
        request = _this._pendingRequests.remove$1(0, msg.requestId);
        if (request != null)
          request.completeWithError$2(new A.DriftRemoteException(msg.error), msg.stackTrace);
      } else if (msg instanceof A.Request)
        _this._incomingRequests.add$1(0, msg);
      else if (msg instanceof A.CancelledResponse) {
        request = _this._pendingRequests.remove$1(0, msg.requestId);
        if (request != null)
          request.completeWithError$1(B.C_CancellationException);
      }
    },
    _send$1(msg) {
      var t1, t2, _this = this;
      if (_this._startedClosingLocally || (_this._closeCompleter.future._state & 30) !== 0)
        throw A.wrapException(A.StateError$("Tried to send " + msg.toString$0(0) + " over isolate channel, but the connection was closed!"));
      t1 = _this._communication$_channel.__CloseGuaranteeChannel__sink_F;
      t1 === $ && A.throwLateFieldNI("_sink");
      t2 = _this._serialize ? B.C_DriftProtocol.serialize$1(msg) : msg;
      t1._sink.add$1(0, t1.$ti._precomputed1._as(t2));
    },
    respondError$3(request, error, trace) {
      var t1, _this = this;
      type$.nullable_StackTrace._as(trace);
      if (_this._startedClosingLocally || (_this._closeCompleter.future._state & 30) !== 0)
        return;
      t1 = request.id;
      if (error instanceof A.CancellationException)
        _this._send$1(new A.CancelledResponse(t1));
      else
        _this._send$1(new A.ErrorResponse(t1, error, trace));
    },
    setRequestHandler$1(handler) {
      var t1 = this._incomingRequests;
      new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$1(new A.DriftCommunication_setRequestHandler_closure(this, type$.FutureOr_nullable_ResponsePayload_Function_Request._as(handler)));
    }
  };
  A.DriftCommunication_closure.prototype = {
    call$0() {
      var t1, t2, t3;
      for (t1 = this.$this, t2 = t1._pendingRequests, t3 = new A.LinkedHashMapValueIterator(t2, t2.__js_helper$_modifications, t2.__js_helper$_first, A._instanceType(t2)._eval$1("LinkedHashMapValueIterator<2>")); t3.moveNext$0();)
        t3.__js_helper$_current.completeWithError$1(B.C_ConnectionClosedException);
      t2.clear$0(0);
      t1._closeCompleter.complete$0();
    },
    $signature: 0
  };
  A.DriftCommunication_setRequestHandler_closure.prototype = {
    call$1(request) {
      return this.$call$body$DriftCommunication_setRequestHandler_closure(type$.Request._as(request));
    },
    $call$body$DriftCommunication_setRequestHandler_closure(request) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, e, s, t1, t2, exception, response, $async$exception;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              response = null;
              $async$handler = 4;
              t1 = $async$self.handler.call$1(request);
              t2 = type$.nullable_ResponsePayload;
              $async$goto = 7;
              return A._asyncAwait(type$.Future_nullable_ResponsePayload._is(t1) ? t1 : A._Future$value(t2._as(t1), t2), $async$call$1);
            case 7:
              // returning from await.
              response = $async$result;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$errorStack.pop();
              e = A.unwrapException($async$exception);
              s = A.getTraceFromException($async$exception);
              t1 = $async$self.$this.respondError$3(request, e, s);
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
              t1 = $async$self.$this;
              if (!(t1._startedClosingLocally || (t1._closeCompleter.future._state & 30) !== 0)) {
                t2 = type$.nullable_ResponsePayload._as(response);
                t1._send$1(new A.SuccessResponse(request.id, t2));
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 75
  };
  A._PendingRequest.prototype = {
    completeWithError$2(error, trace) {
      var t1;
      if (trace == null)
        t1 = this.requestTrace;
      else {
        t1 = A._setArrayType([], type$.JSArray_Trace);
        if (trace instanceof A.Chain)
          B.JSArray_methods.addAll$1(t1, trace.traces);
        else
          t1.push(A.Trace_Trace$from(trace));
        t1.push(A.Trace_Trace$from(this.requestTrace));
        t1 = new A.Chain(A.List_List$unmodifiable(t1, type$.Trace));
      }
      this.completer.completeError$2(error, t1);
    },
    completeWithError$1(error) {
      return this.completeWithError$2(error, null);
    }
  };
  A.ConnectionClosedException.prototype = {
    toString$0(_) {
      return "Channel was closed before receiving a response";
    },
    $isException: 1
  };
  A.DriftRemoteException.prototype = {
    toString$0(_) {
      return J.toString$0$(this.remoteCause);
    },
    $isException: 1
  };
  A.DriftProtocol.prototype = {
    serialize$1(message) {
      var t1, t2;
      if (message instanceof A.Request)
        return [0, message.id, this.encodePayload$1(message.payload)];
      else if (message instanceof A.ErrorResponse) {
        t1 = J.toString$0$(message.error);
        t2 = message.stackTrace;
        t2 = t2 == null ? null : t2.toString$0(0);
        return [2, message.requestId, t1, t2];
      } else if (message instanceof A.SuccessResponse)
        return [1, message.requestId, this.encodePayload$1(message.response)];
      else if (message instanceof A.CancelledResponse)
        return A._setArrayType([3, message.requestId], type$.JSArray_int);
      else
        return null;
    },
    deserialize$1(message) {
      var t1, tag, id, stringTrace;
      if (!type$.List_dynamic._is(message))
        throw A.wrapException(B.FormatException_NvI);
      t1 = J.getInterceptor$asx(message);
      tag = A._asInt(t1.$index(message, 0));
      id = A._asInt(t1.$index(message, 1));
      switch (tag) {
        case 0:
          return new A.Request(id, type$.nullable_RequestPayload._as(this.decodePayload$1(t1.$index(message, 2))));
        case 2:
          stringTrace = A._asStringQ(t1.$index(message, 3));
          t1 = t1.$index(message, 2);
          if (t1 == null)
            t1 = A._asObject(t1);
          return new A.ErrorResponse(id, t1, stringTrace != null ? new A._StringStackTrace(stringTrace) : null);
        case 1:
          return new A.SuccessResponse(id, type$.nullable_ResponsePayload._as(this.decodePayload$1(t1.$index(message, 2))));
        case 3:
          return new A.CancelledResponse(id);
      }
      throw A.wrapException(B.FormatException_IWx);
    },
    encodePayload$1(payload) {
      var t1, t2, t3, t4, t5, _i, arg, t6, _i0, update, rows, result, columns, _0_0;
      if (payload == null)
        return payload;
      if (payload instanceof A.NoArgsRequest)
        return payload.index;
      else if (payload instanceof A.ExecuteQuery) {
        t1 = payload.method;
        t2 = payload.sql;
        t3 = [];
        for (t4 = payload.args, t5 = t4.length, _i = 0; _i < t4.length; t4.length === t5 || (0, A.throwConcurrentModificationError)(t4), ++_i)
          t3.push(this._encodeDbValue$1(t4[_i]));
        return [3, t1.index, t2, t3, payload.executorId];
      } else if (payload instanceof A.ExecuteBatchedStatement) {
        t1 = payload.stmts;
        t2 = [4, t1.statements];
        for (t1 = t1.$arguments, t3 = t1.length, _i = 0; _i < t1.length; t1.length === t3 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
          arg = t1[_i];
          t4 = [arg.statementIndex];
          for (t5 = arg.$arguments, t6 = t5.length, _i0 = 0; _i0 < t5.length; t5.length === t6 || (0, A.throwConcurrentModificationError)(t5), ++_i0)
            t4.push(this._encodeDbValue$1(t5[_i0]));
          t2.push(t4);
        }
        t2.push(payload.executorId);
        return t2;
      } else if (payload instanceof A.RunNestedExecutorControl)
        return A._setArrayType([5, payload.control.index, payload.executorId], type$.JSArray_nullable_int);
      else if (payload instanceof A.EnsureOpen)
        return A._setArrayType([6, payload.schemaVersion, payload.executorId], type$.JSArray_nullable_int);
      else if (payload instanceof A.ServerInfo)
        return A._setArrayType([13, payload.dialect._name], type$.JSArray_Object);
      else if (payload instanceof A.RunBeforeOpen) {
        t1 = payload.details;
        return A._setArrayType([7, t1.versionBefore, t1.versionNow, payload.createdExecutor], type$.JSArray_nullable_int);
      } else if (payload instanceof A.NotifyTablesUpdated) {
        t1 = A._setArrayType([8], type$.JSArray_Object);
        for (t2 = payload.updates, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
          update = t2[_i];
          t4 = update.kind;
          t4 = t4 == null ? null : t4.index;
          t1.push([update.table, t4]);
        }
        return t1;
      } else if (payload instanceof A.SelectResult) {
        rows = payload.rows;
        t1 = J.getInterceptor$asx(rows);
        if (t1.get$isEmpty(rows))
          return B.List_11;
        else {
          result = [11];
          columns = J.toList$0$ax(t1.get$first(rows).get$keys());
          result.push(columns.length);
          B.JSArray_methods.addAll$1(result, columns);
          result.push(t1.get$length(rows));
          for (t1 = t1.get$iterator(rows); t1.moveNext$0();)
            for (t2 = J.get$iterator$ax(t1.get$current().get$values()); t2.moveNext$0();)
              result.push(this._encodeDbValue$1(t2.get$current()));
          return result;
        }
      } else if (payload instanceof A.RequestCancellation)
        return A._setArrayType([12, payload.originalRequestId], type$.JSArray_int);
      else if (payload instanceof A.PrimitiveResponsePayload) {
        _0_0 = payload.message;
        $label0$0: {
          if (A._isBool(_0_0)) {
            t1 = _0_0;
            break $label0$0;
          }
          if (A._isInt(_0_0)) {
            t1 = A._setArrayType([10, _0_0], type$.JSArray_int);
            break $label0$0;
          }
          t1 = A.throwExpression(A.UnsupportedError$("Unknown primitive response"));
        }
        return t1;
      }
    },
    decodePayload$1(encoded) {
      var t1, tag, readInt, readNullableInt, method, sql, args, t2, i, list, t3, t4, t5, _1_0, updates, encodedUpdate, _2_0, columnCount, columns, rows, result, t6, rowOffset, t7, c, _null = null, _box_0 = {};
      if (encoded == null)
        return _null;
      if (A._isBool(encoded))
        return new A.PrimitiveResponsePayload(encoded);
      _box_0.fullMessage = null;
      if (A._isInt(encoded)) {
        t1 = _null;
        tag = encoded;
      } else {
        type$.List_dynamic._as(encoded);
        _box_0.fullMessage = encoded;
        tag = A._asInt(J.$index$asx(encoded, 0));
        t1 = encoded;
      }
      readInt = new A.DriftProtocol_decodePayload_readInt(_box_0);
      readNullableInt = new A.DriftProtocol_decodePayload_readNullableInt(_box_0);
      switch (tag) {
        case 0:
          return B.NoArgsRequest_0;
        case 3:
          method = B.JSArray_methods.$index(B.List_s6K, readInt.call$1(1));
          t1 = _box_0.fullMessage;
          t1.toString;
          sql = A._asString(J.$index$asx(t1, 2));
          t1 = J.map$1$1$ax(type$.List_dynamic._as(J.$index$asx(_box_0.fullMessage, 3)), this.get$_decodeDbValue(), type$.nullable_Object);
          args = A.List_List$_of(t1, t1.$ti._eval$1("ListIterable.E"));
          return new A.ExecuteQuery(method, sql, args, readNullableInt.call$1(4));
        case 4:
          t1.toString;
          t2 = type$.List_dynamic;
          sql = J.cast$1$0$ax(t2._as(J.$index$asx(t1, 1)), type$.String);
          args = A._setArrayType([], type$.JSArray_ArgumentsForBatchedStatement);
          for (i = 2; i < J.get$length$asx(_box_0.fullMessage) - 1; ++i) {
            list = t2._as(J.$index$asx(_box_0.fullMessage, i));
            t1 = J.getInterceptor$asx(list);
            t3 = A._asInt(t1.$index(list, 0));
            t4 = [];
            for (t1 = t1.skip$1(list, 1), t5 = t1.$ti, t1 = new A.ListIterator(t1, t1.get$length(0), t5._eval$1("ListIterator<ListIterable.E>")), t5 = t5._eval$1("ListIterable.E"); t1.moveNext$0();) {
              encoded = t1.__internal$_current;
              t4.push(this._decodeDbValue$1(encoded == null ? t5._as(encoded) : encoded));
            }
            B.JSArray_methods.add$1(args, new A.ArgumentsForBatchedStatement(t3, t4));
          }
          _1_0 = J.get$last$ax(_box_0.fullMessage);
          $label1$2: {
            if (_1_0 == null) {
              t1 = _null;
              break $label1$2;
            }
            A._asInt(_1_0);
            t1 = _1_0;
            break $label1$2;
          }
          return new A.ExecuteBatchedStatement(new A.BatchedStatements(sql, args), t1);
        case 5:
          return new A.RunNestedExecutorControl(B.JSArray_methods.$index(B.List_ttt, readInt.call$1(1)), readNullableInt.call$1(2));
        case 6:
          return new A.EnsureOpen(readInt.call$1(1), readNullableInt.call$1(2));
        case 13:
          t1.toString;
          return new A.ServerInfo(A.EnumByName_byName(B.List_rcv, A._asString(J.$index$asx(t1, 1)), type$.SqlDialect));
        case 7:
          t1 = readNullableInt.call$1(1);
          t2 = readInt.call$1(2);
          A.assertHelper(t1 !== 0);
          return new A.RunBeforeOpen(new A.OpeningDetails(t1, t2), readInt.call$1(3));
        case 8:
          updates = A._setArrayType([], type$.JSArray_TableUpdate);
          t1 = type$.List_dynamic;
          i = 1;
          for (;;) {
            t2 = _box_0.fullMessage;
            t2.toString;
            if (!(i < J.get$length$asx(t2)))
              break;
            encodedUpdate = t1._as(J.$index$asx(_box_0.fullMessage, i));
            t2 = J.getInterceptor$asx(encodedUpdate);
            _2_0 = t2.$index(encodedUpdate, 1);
            $label2$3: {
              if (_2_0 == null) {
                t3 = _null;
                break $label2$3;
              }
              A._asInt(_2_0);
              t3 = _2_0;
              break $label2$3;
            }
            t2 = A._asString(t2.$index(encodedUpdate, 0));
            if (t3 == null)
              t3 = _null;
            else {
              if (t3 >>> 0 !== t3 || t3 >= 3)
                return A.ioore(B.List_L4j, t3);
              t3 = B.List_L4j[t3];
            }
            B.JSArray_methods.add$1(updates, new A.TableUpdate(t3, t2));
            ++i;
          }
          return new A.NotifyTablesUpdated(updates);
        case 11:
          t1.toString;
          if (J.get$length$asx(t1) === 1)
            return B.SelectResult_List_empty;
          columnCount = readInt.call$1(1);
          t1 = 2 + columnCount;
          t2 = type$.String;
          columns = J.cast$1$0$ax(J.sublist$2$ax(_box_0.fullMessage, 2, t1), t2);
          rows = readInt.call$1(t1);
          result = A._setArrayType([], type$.JSArray_Map_of_String_and_nullable_Object);
          for (t1 = columns._source, t3 = J.getInterceptor$asx(t1), t4 = columns.$ti._rest[1], t5 = 3 + columnCount, t6 = type$.nullable_Object, i = 0; i < rows; ++i) {
            rowOffset = t5 + i * columnCount;
            t7 = A.LinkedHashMap_LinkedHashMap$_empty(t2, t6);
            for (c = 0; c < columnCount; ++c)
              t7.$indexSet(0, t4._as(t3.$index(t1, c)), this._decodeDbValue$1(J.$index$asx(_box_0.fullMessage, rowOffset + c)));
            B.JSArray_methods.add$1(result, t7);
          }
          return new A.SelectResult(result);
        case 12:
          return new A.RequestCancellation(readInt.call$1(1));
        case 10:
          return new A.PrimitiveResponsePayload(A._asInt(J.$index$asx(encoded, 1)));
      }
      throw A.wrapException(A.ArgumentError$value(tag, "tag", "Tag was unknown"));
    },
    _encodeDbValue$1(variable) {
      if (type$.List_int._is(variable) && !type$.Uint8List._is(variable))
        return new Uint8Array(A._ensureNativeList(variable));
      else if (variable instanceof A._BigIntImpl)
        return A._setArrayType(["bigint", variable.toString$0(0)], type$.JSArray_String);
      else
        return variable;
    },
    _decodeDbValue$1(wire) {
      var t1;
      if (type$.List_dynamic._is(wire)) {
        t1 = J.getInterceptor$asx(wire);
        if (t1.get$length(wire) === 2 && J.$eq$(t1.$index(wire, 0), "bigint"))
          return A._BigIntImpl_parse(J.toString$0$(t1.$index(wire, 1)), null);
        return new Uint8Array(A._ensureNativeList(t1.cast$1$0(wire, type$.int)));
      }
      return wire;
    }
  };
  A.DriftProtocol_decodePayload_readInt.prototype = {
    call$1(index) {
      var t1 = this._box_0.fullMessage;
      t1.toString;
      return A._asInt(J.$index$asx(t1, index));
    },
    $signature: 13
  };
  A.DriftProtocol_decodePayload_readNullableInt.prototype = {
    call$1(index) {
      var _0_0,
        t1 = this._box_0.fullMessage;
      t1.toString;
      _0_0 = J.$index$asx(t1, index);
      $label0$0: {
        if (_0_0 == null) {
          t1 = null;
          break $label0$0;
        }
        A._asInt(_0_0);
        t1 = _0_0;
        break $label0$0;
      }
      return t1;
    },
    $signature: 26
  };
  A.Message.prototype = {};
  A.Request.prototype = {
    toString$0(_) {
      return "Request (id = " + this.id + "): " + A.S(this.payload);
    }
  };
  A.SuccessResponse.prototype = {
    toString$0(_) {
      return "SuccessResponse (id = " + this.requestId + "): " + A.S(this.response);
    }
  };
  A.PrimitiveResponsePayload.prototype = {$isResponsePayload: 1};
  A.ErrorResponse.prototype = {
    toString$0(_) {
      return "ErrorResponse (id = " + this.requestId + "): " + A.S(this.error) + " at " + A.S(this.stackTrace);
    }
  };
  A.CancelledResponse.prototype = {
    toString$0(_) {
      return "Previous request " + this.requestId + " was cancelled";
    }
  };
  A.NoArgsRequest.prototype = {
    _enumToString$0() {
      return "NoArgsRequest." + this._name;
    },
    $isRequestPayload: 1
  };
  A.StatementMethod.prototype = {
    _enumToString$0() {
      return "StatementMethod." + this._name;
    }
  };
  A.ExecuteQuery.prototype = {
    toString$0(_) {
      var _this = this,
        t1 = _this.executorId;
      if (t1 != null)
        return _this.method.toString$0(0) + ": " + _this.sql + " with " + A.S(_this.args) + " (@" + A.S(t1) + ")";
      return _this.method.toString$0(0) + ": " + _this.sql + " with " + A.S(_this.args);
    },
    $isRequestPayload: 1
  };
  A.RequestCancellation.prototype = {
    toString$0(_) {
      return "Cancel previous request " + this.originalRequestId;
    },
    $isRequestPayload: 1
  };
  A.ExecuteBatchedStatement.prototype = {$isRequestPayload: 1};
  A.NestedExecutorControl.prototype = {
    _enumToString$0() {
      return "NestedExecutorControl." + this._name;
    }
  };
  A.RunNestedExecutorControl.prototype = {
    toString$0(_) {
      return "RunTransactionAction(" + this.control.toString$0(0) + ", " + A.S(this.executorId) + ")";
    },
    $isRequestPayload: 1
  };
  A.EnsureOpen.prototype = {
    toString$0(_) {
      return "EnsureOpen(" + this.schemaVersion + ", " + A.S(this.executorId) + ")";
    },
    $isRequestPayload: 1
  };
  A.ServerInfo.prototype = {
    toString$0(_) {
      return "ServerInfo(" + this.dialect.toString$0(0) + ")";
    },
    $isRequestPayload: 1
  };
  A.RunBeforeOpen.prototype = {
    toString$0(_) {
      return "RunBeforeOpen(" + this.details.toString$0(0) + ", " + this.createdExecutor + ")";
    },
    $isRequestPayload: 1
  };
  A.NotifyTablesUpdated.prototype = {
    toString$0(_) {
      return "NotifyTablesUpdated(" + A.S(this.updates) + ")";
    },
    $isRequestPayload: 1
  };
  A.SelectResult.prototype = {$isResponsePayload: 1};
  A.ServerImplementation.prototype = {
    ServerImplementation$3(connection, allowRemoteShutdown, closeExecutorWhenShutdown) {
      this._done.future.then$1$1(new A.ServerImplementation_closure(this), type$.Null);
    },
    serve$2$serialize(channel, serialize) {
      var comm, t1, _this = this;
      if (_this._isShuttingDown)
        throw A.wrapException(A.StateError$("Cannot add new channels after shutdown() was called"));
      comm = A.DriftCommunication$(channel, serialize);
      comm.setRequestHandler$1(new A.ServerImplementation_serve_closure(_this, comm));
      t1 = _this.connection.get$dialect();
      comm._send$1(new A.Request(comm.newRequestId$0(), new A.ServerInfo(t1)));
      _this._activeChannels.add$1(0, comm);
      return comm._closeCompleter.future.then$1$1(new A.ServerImplementation_serve_closure0(_this, comm), type$.void);
    },
    shutdown$0() {
      var t1, _this = this;
      if (!_this._isShuttingDown) {
        _this._isShuttingDown = true;
        t1 = _this.connection.close$0();
        _this._done.complete$1(t1);
      }
      return _this._done.future;
    },
    _closeRemainingConnections$0() {
      var t1, t2, t3;
      for (t1 = this._activeChannels, t1 = A._LinkedHashSetIterator$(t1, t1._modifications, t1.$ti._precomputed1), t2 = t1.$ti._precomputed1; t1.moveNext$0();) {
        t3 = t1._collection$_current;
        (t3 == null ? t2._as(t3) : t3).close$0();
      }
    },
    _handleRequest$2(comms, request) {
      var t1, token, _this = this,
        payload = request.payload;
      if (payload instanceof A.NoArgsRequest)
        switch (payload.index) {
          case 0:
            t1 = A.StateError$("Remote shutdowns not allowed");
            throw A.wrapException(t1);
        }
      else if (payload instanceof A.EnsureOpen)
        return _this._handleEnsureOpen$2(comms, payload);
      else if (payload instanceof A.ExecuteQuery) {
        token = A.runCancellable(new A.ServerImplementation__handleRequest_closure(_this, payload), type$.nullable_ResponsePayload);
        _this._cancellableOperations.$indexSet(0, request.id, token);
        return token._resultCompleter.future.whenComplete$1(new A.ServerImplementation__handleRequest_closure0(_this, request));
      } else if (payload instanceof A.ExecuteBatchedStatement)
        return _this._runBatched$2(payload.stmts, payload.executorId);
      else if (payload instanceof A.NotifyTablesUpdated) {
        _this._tableUpdateNotifications.add$1(0, payload);
        _this.dispatchTableUpdateNotification$2(payload, comms);
      } else if (payload instanceof A.RunNestedExecutorControl)
        return _this._transactionControl$3(comms, payload.control, payload.executorId);
      else if (payload instanceof A.RequestCancellation) {
        t1 = _this._cancellableOperations.$index(0, payload.originalRequestId);
        if (t1 != null)
          t1.cancel$0();
        return null;
      }
      return null;
    },
    _handleEnsureOpen$2(comms, $open) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.ResponsePayload),
        $async$returnValue, $async$self = this, executor, t1, $async$temp1;
      var $async$_handleEnsureOpen$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._loadExecutor$1($open.executorId), $async$_handleEnsureOpen$2);
            case 3:
              // returning from await.
              executor = $async$result;
              t1 = $open.schemaVersion;
              $async$self._knownSchemaVersion = t1;
              $async$temp1 = A;
              $async$goto = 4;
              return A._asyncAwait(executor.ensureOpen$1(new A._ServerDbUser($async$self, comms, t1)), $async$_handleEnsureOpen$2);
            case 4:
              // returning from await.
              $async$returnValue = new $async$temp1.PrimitiveResponsePayload($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_handleEnsureOpen$2, $async$completer);
    },
    _runQuery$4(method, sql, args, transactionId) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_ResponsePayload),
        $async$returnValue, $async$self = this, executor, $async$temp1;
      var $async$_runQuery$4 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._loadExecutor$1(transactionId), $async$_runQuery$4);
            case 3:
              // returning from await.
              executor = $async$result;
              $async$goto = 4;
              return A._asyncAwait(A.Future_Future$delayed(B.Duration_0, type$.void), $async$_runQuery$4);
            case 4:
              // returning from await.
              A.checkIfCancelled();
            case 5:
              // switch
              switch (method.index) {
                case 0:
                  // goto case
                  $async$goto = 7;
                  break;
                case 1:
                  // goto case
                  $async$goto = 8;
                  break;
                case 2:
                  // goto case
                  $async$goto = 9;
                  break;
                case 3:
                  // goto case
                  $async$goto = 10;
                  break;
                default:
                  // goto after switch
                  $async$goto = 6;
                  break;
              }
              break;
            case 7:
              // case
              $async$goto = 11;
              return A._asyncAwait(executor.runCustom$2(sql, args), $async$_runQuery$4);
            case 11:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 8:
              // case
              $async$temp1 = A;
              $async$goto = 12;
              return A._asyncAwait(executor.runDelete$2(sql, args), $async$_runQuery$4);
            case 12:
              // returning from await.
              $async$returnValue = new $async$temp1.PrimitiveResponsePayload($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 9:
              // case
              $async$temp1 = A;
              $async$goto = 13;
              return A._asyncAwait(executor.runInsert$2(sql, args), $async$_runQuery$4);
            case 13:
              // returning from await.
              $async$returnValue = new $async$temp1.PrimitiveResponsePayload($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 10:
              // case
              $async$temp1 = A;
              $async$goto = 14;
              return A._asyncAwait(executor.runSelect$2(sql, args), $async$_runQuery$4);
            case 14:
              // returning from await.
              $async$returnValue = new $async$temp1.SelectResult($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 6:
              // after switch
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_runQuery$4, $async$completer);
    },
    _runBatched$2(stmts, transactionId) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_ResponsePayload),
        $async$returnValue, $async$self = this;
      var $async$_runBatched$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 4;
              return A._asyncAwait($async$self._loadExecutor$1(transactionId), $async$_runBatched$2);
            case 4:
              // returning from await.
              $async$goto = 3;
              return A._asyncAwait($async$result.runBatched$1(stmts), $async$_runBatched$2);
            case 3:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_runBatched$2, $async$completer);
    },
    _loadExecutor$1(transactionId) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.QueryExecutor),
        $async$returnValue, $async$self = this, t1;
      var $async$_loadExecutor$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._waitForTurn$1(transactionId), $async$_loadExecutor$1);
            case 3:
              // returning from await.
              if (transactionId != null) {
                t1 = $async$self._managedExecutors.$index(0, transactionId);
                t1.toString;
              } else
                t1 = $async$self.connection;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_loadExecutor$1, $async$completer);
    },
    _spawnTransaction$2(comm, executor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.int),
        $async$returnValue, $async$self = this, transaction;
      var $async$_spawnTransaction$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._loadExecutor$1(executor), $async$_spawnTransaction$2);
            case 3:
              // returning from await.
              transaction = $async$result.beginTransaction$0();
              $async$goto = 4;
              return A._asyncAwait(transaction.ensureOpen$1(new A._ServerDbUser($async$self, comm, $async$self._knownSchemaVersion)), $async$_spawnTransaction$2);
            case 4:
              // returning from await.
              $async$returnValue = $async$self._putExecutor$2$beforeCurrent(transaction, true);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_spawnTransaction$2, $async$completer);
    },
    _spawnExclusive$2(comm, executor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.int),
        $async$returnValue, $async$self = this, exclusive;
      var $async$_spawnExclusive$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._loadExecutor$1(executor), $async$_spawnExclusive$2);
            case 3:
              // returning from await.
              exclusive = $async$result.beginExclusive$0();
              $async$goto = 4;
              return A._asyncAwait(exclusive.ensureOpen$1(new A._ServerDbUser($async$self, comm, $async$self._knownSchemaVersion)), $async$_spawnExclusive$2);
            case 4:
              // returning from await.
              $async$returnValue = $async$self._putExecutor$2$beforeCurrent(exclusive, true);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_spawnExclusive$2, $async$completer);
    },
    _putExecutor$2$beforeCurrent(executor, beforeCurrent) {
      var t2, t3,
        t1 = this._currentExecutorId++;
      this._managedExecutors.$indexSet(0, t1, executor);
      t2 = this._executorBacklog;
      t3 = t2.length;
      if (t3 !== 0)
        B.JSArray_methods.insert$2(t2, 0, t1);
      else
        B.JSArray_methods.add$1(t2, t1);
      return t1;
    },
    _transactionControl$3(comm, action, executorId) {
      return this._transactionControl$body$ServerImplementation(comm, action, executorId);
    },
    _transactionControl$body$ServerImplementation(comm, action, executorId) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_ResponsePayload),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$next = [], $async$self = this, executor, $async$temp1;
      var $async$_transactionControl$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = action === B.NestedExecutorControl_0 ? 3 : 5;
              break;
            case 3:
              // then
              $async$temp1 = A;
              $async$goto = 6;
              return A._asyncAwait($async$self._spawnTransaction$2(comm, executorId), $async$_transactionControl$3);
            case 6:
              // returning from await.
              $async$returnValue = new $async$temp1.PrimitiveResponsePayload($async$result);
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$goto = action === B.NestedExecutorControl_3 ? 7 : 8;
              break;
            case 7:
              // then
              $async$temp1 = A;
              $async$goto = 9;
              return A._asyncAwait($async$self._spawnExclusive$2(comm, executorId), $async$_transactionControl$3);
            case 9:
              // returning from await.
              $async$returnValue = new $async$temp1.PrimitiveResponsePayload($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 8:
              // join
            case 4:
              // join
              $async$goto = 10;
              return A._asyncAwait($async$self._loadExecutor$1(executorId), $async$_transactionControl$3);
            case 10:
              // returning from await.
              executor = $async$result;
              $async$goto = action === B.NestedExecutorControl_4 ? 11 : 12;
              break;
            case 11:
              // then
              $async$goto = 13;
              return A._asyncAwait(executor.close$0(), $async$_transactionControl$3);
            case 13:
              // returning from await.
              executorId.toString;
              $async$self._releaseExecutor$1(executorId);
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 12:
              // join
              if (!type$.TransactionExecutor._is(executor))
                throw A.wrapException(A.ArgumentError$value(executorId, "transactionId", "Does not reference a transaction. This might happen if you don't await all operations made inside a transaction, in which case the transaction might complete with pending operations."));
            case 14:
              // switch
              switch (action.index) {
                case 1:
                  // goto case
                  $async$goto = 16;
                  break;
                case 2:
                  // goto case
                  $async$goto = 17;
                  break;
                default:
                  // goto default
                  $async$goto = 18;
                  break;
              }
              break;
            case 16:
              // case
              $async$goto = 19;
              return A._asyncAwait(executor.send$0(), $async$_transactionControl$3);
            case 19:
              // returning from await.
              executorId.toString;
              $async$self._releaseExecutor$1(executorId);
              // goto after switch
              $async$goto = 15;
              break;
            case 17:
              // case
              $async$handler = 20;
              $async$goto = 23;
              return A._asyncAwait(executor.rollback$0(), $async$_transactionControl$3);
            case 23:
              // returning from await.
              $async$next.push(22);
              // goto finally
              $async$goto = 21;
              break;
            case 20:
              // uncaught
              $async$next = [2];
            case 21:
              // finally
              $async$handler = 2;
              executorId.toString;
              $async$self._releaseExecutor$1(executorId);
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 22:
              // after finally
              // goto after switch
              $async$goto = 15;
              break;
            case 18:
              // default
              A.assertThrow("Unknown TransactionControl");
            case 15:
              // after switch
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_transactionControl$3, $async$completer);
    },
    _releaseExecutor$1(id) {
      var t1;
      this._managedExecutors.remove$1(0, id);
      B.JSArray_methods.remove$1(this._executorBacklog, id);
      t1 = this._backlogUpdated;
      if ((t1._state & 4) === 0)
        t1.add$1(0, null);
    },
    _waitForTurn$1(transactionId) {
      var t2,
        t1 = new A.ServerImplementation__waitForTurn_idIsActive(this, transactionId);
      if (t1.call$0())
        return A.Future_Future$value(null, type$.void);
      t2 = this._backlogUpdated;
      return new A._BroadcastStream(t2, A._instanceType(t2)._eval$1("_BroadcastStream<1>")).firstWhere$1(0, new A.ServerImplementation__waitForTurn_closure(t1));
    },
    dispatchTableUpdateNotification$2(notification, source) {
      var t1, t2, t3;
      for (t1 = this._activeChannels, t1 = A._LinkedHashSetIterator$(t1, t1._modifications, t1.$ti._precomputed1), t2 = t1.$ti._precomputed1; t1.moveNext$0();) {
        t3 = t1._collection$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        if (t3 !== source)
          t3._send$1(new A.Request(t3._currentRequestId++, notification));
      }
    },
    $isDriftServer: 1
  };
  A.ServerImplementation_closure.prototype = {
    call$1(_) {
      var t1 = this.$this;
      t1._closeRemainingConnections$0();
      t1._tableUpdateNotifications.close$0();
    },
    $signature: 77
  };
  A.ServerImplementation_serve_closure.prototype = {
    call$1(request) {
      return this.$this._handleRequest$2(this.comm, request);
    },
    $signature: 79
  };
  A.ServerImplementation_serve_closure0.prototype = {
    call$1(_) {
      return this.$this._activeChannels.remove$1(0, this.comm);
    },
    $signature: 24
  };
  A.ServerImplementation__handleRequest_closure.prototype = {
    call$0() {
      var t1 = this.payload;
      return this.$this._runQuery$4(t1.method, t1.sql, t1.args, t1.executorId);
    },
    $signature: 86
  };
  A.ServerImplementation__handleRequest_closure0.prototype = {
    call$0() {
      return this.$this._cancellableOperations.remove$1(0, this.request.id);
    },
    $signature: 87
  };
  A.ServerImplementation__waitForTurn_idIsActive.prototype = {
    call$0() {
      var t2,
        t1 = this.transactionId;
      if (t1 == null)
        return this.$this._executorBacklog.length === 0;
      else {
        t2 = this.$this._executorBacklog;
        return t2.length !== 0 && B.JSArray_methods.get$first(t2) === t1;
      }
    },
    $signature: 34
  };
  A.ServerImplementation__waitForTurn_closure.prototype = {
    call$1(_) {
      return this.idIsActive.call$0();
    },
    $signature: 24
  };
  A._ServerDbUser.prototype = {
    beforeOpen$2(executor, details) {
      return this.beforeOpen$body$_ServerDbUser(executor, details);
    },
    beforeOpen$body$_ServerDbUser(executor, details) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$handler = 1, $async$errorStack = [], $async$next = [], $async$self = this, t2, id0, t3, t1, id;
      var $async$beforeOpen$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._server;
              id = t1._putExecutor$2$beforeCurrent(executor, true);
              $async$handler = 2;
              t2 = $async$self.connection;
              id0 = t2.newRequestId$0();
              t3 = new A._Future($.Zone__current, type$._Future_void);
              t2._pendingRequests.$indexSet(0, id0, new A._PendingRequest(new A._AsyncCompleter(t3, type$._AsyncCompleter_void), A.StackTrace_current()));
              t2._send$1(new A.Request(id0, new A.RunBeforeOpen(details, id)));
              $async$goto = 5;
              return A._asyncAwait(t3, $async$beforeOpen$2);
            case 5:
              // returning from await.
              $async$next.push(4);
              // goto finally
              $async$goto = 3;
              break;
            case 2:
              // uncaught
              $async$next = [1];
            case 3:
              // finally
              $async$handler = 1;
              t1._releaseExecutor$1(id);
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 4:
              // after finally
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$beforeOpen$2, $async$completer);
    },
    $isQueryExecutorUser: 1
  };
  A.WebProtocol.prototype = {
    serialize$1(message) {
      var t1, _1_5_isSet, _1_8, _1_9, _1_9_isSet, e, stackTrace, _1_5, requestId, _this0, t2, _this1, t3, t4, _0_0, t5, t6, _i, _this = this, _null = null;
      $label0$0: {
        if (message instanceof A.Request) {
          t1 = new A._Record_2(0, {i: message.id, p: _this._serializeRequest$1(message.payload)});
          break $label0$0;
        }
        if (message instanceof A.SuccessResponse) {
          t1 = new A._Record_2(1, {i: message.requestId, p: _this._serializeResponse$1(message.response)});
          break $label0$0;
        }
        _1_5_isSet = message instanceof A.ErrorResponse;
        _1_8 = _null;
        _1_9 = _null;
        _1_9_isSet = false;
        e = _null;
        stackTrace = _null;
        t1 = false;
        if (_1_5_isSet) {
          _1_5 = message.requestId;
          _1_8 = message.error;
          _1_9_isSet = _1_8 instanceof A.SqliteException;
          if (_1_9_isSet) {
            type$.SqliteException._as(_1_8);
            _1_9 = message.stackTrace;
            t1 = _this._protocolVersion.versionCode >= 4;
            stackTrace = _1_9;
            e = _1_8;
          }
          requestId = _1_5;
        } else {
          requestId = _null;
          _1_5 = requestId;
        }
        if (t1) {
          t1 = stackTrace == null ? _null : stackTrace.toString$0(0);
          _this0 = e.message;
          t2 = e.explanation;
          if (t2 == null)
            t2 = _null;
          _this1 = e.extendedResultCode;
          t3 = e.operation;
          if (t3 == null)
            t3 = _null;
          t4 = e.causingStatement;
          if (t4 == null)
            t4 = _null;
          _0_0 = e.parametersToStatement;
          $label1$1: {
            if (_0_0 == null) {
              t5 = _null;
              break $label1$1;
            }
            t5 = [];
            for (t6 = _0_0.length, _i = 0; _i < _0_0.length; _0_0.length === t6 || (0, A.throwConcurrentModificationError)(_0_0), ++_i)
              t5.push(_this._web_protocol$_encodeDbValue$1(_0_0[_i]));
            break $label1$1;
          }
          t5 = new A._Record_2(4, [requestId, t1, _this0, t2, _this1, t3, t4, t5]);
          t1 = t5;
          break $label0$0;
        }
        if (_1_5_isSet) {
          stackTrace = _1_9_isSet ? _1_9 : message.stackTrace;
          _this = J.toString$0$(_1_8);
          t1 = new A._Record_2(2, [_1_5, _this, stackTrace == null ? _null : stackTrace.toString$0(0)]);
          break $label0$0;
        }
        if (message instanceof A.CancelledResponse) {
          t1 = new A._Record_2(3, message.requestId);
          break $label0$0;
        }
        t1 = _null;
      }
      return A._setArrayType([t1._0, t1._1], type$.JSArray_Object);
    },
    deserialize$1(message) {
      var t1, tag, t2, error, stackTrace, requestId, _this = this, _null = null,
        _s22_ = "Pattern matching error",
        _box_0 = {};
      _box_0.payload = null;
      t1 = message.length === 2;
      if (t1) {
        if (0 < 0 || 0 >= message.length)
          return A.ioore(message, 0);
        tag = message[0];
        if (1 < 0 || 1 >= message.length)
          return A.ioore(message, 1);
        t2 = _box_0.payload = message[1];
      } else {
        t2 = _null;
        tag = t2;
      }
      if (!t1)
        throw A.wrapException(A.StateError$(_s22_));
      tag = A._asInt(A._asDouble(tag));
      $label0$0: {
        if (0 === tag) {
          t1 = new A.WebProtocol_deserialize_decodeRequest(_box_0, _this).call$0();
          break $label0$0;
        }
        if (1 === tag) {
          t1 = new A.WebProtocol_deserialize_decodeSuccess(_box_0, _this).call$0();
          break $label0$0;
        }
        if (2 === tag) {
          type$.JSArray_nullable_Object._as(t2);
          t1 = t2.length === 3;
          error = _null;
          stackTrace = _null;
          if (t1) {
            if (0 < 0 || 0 >= t2.length)
              return A.ioore(t2, 0);
            requestId = t2[0];
            if (1 < 0 || 1 >= t2.length)
              return A.ioore(t2, 1);
            error = t2[1];
            if (2 < 0 || 2 >= t2.length)
              return A.ioore(t2, 2);
            stackTrace = t2[2];
          } else
            requestId = _null;
          if (!t1)
            A.throwExpression(A.StateError$(_s22_));
          t1 = new A.ErrorResponse(A._asInt(A._asDouble(requestId)), A._asString(error), _this._decodeStackStrace$1(stackTrace));
          break $label0$0;
        }
        if (4 === tag) {
          t1 = _this._decodeSqliteErrorResponse$1(type$.JSArray_nullable_Object._as(t2));
          break $label0$0;
        }
        if (3 === tag) {
          t1 = new A.CancelledResponse(A._asInt(A._asDouble(t2)));
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$("Unknown message tag " + tag, _null));
      }
      return t1;
    },
    _serializeRequest$1(payload) {
      var t1, _this, t2, t3, t4, _i, arg, t5, t6, _i0, update, _null = null;
      $label0$0: {
        t1 = _null;
        if (payload == null)
          break $label0$0;
        if (payload instanceof A.ExecuteQuery) {
          t1 = payload.method;
          _this = payload.sql;
          t2 = [];
          for (t3 = payload.args, t4 = t3.length, _i = 0; _i < t3.length; t3.length === t4 || (0, A.throwConcurrentModificationError)(t3), ++_i)
            t2.push(this._web_protocol$_encodeDbValue$1(t3[_i]));
          t3 = payload.executorId;
          if (t3 == null)
            t3 = _null;
          t3 = [3, t1.index, _this, t2, t3];
          t1 = t3;
          break $label0$0;
        }
        if (payload instanceof A.RequestCancellation) {
          t1 = A._setArrayType([12, payload.originalRequestId], type$.JSArray_double);
          break $label0$0;
        }
        if (payload instanceof A.ExecuteBatchedStatement) {
          t1 = payload.stmts;
          t2 = J.map$1$1$ax(t1.statements, new A.WebProtocol__serializeRequest_closure(), type$.String);
          t2 = A.List_List$_of(t2, t2.$ti._eval$1("ListIterable.E"));
          t2 = [4, t2];
          for (t1 = t1.$arguments, t3 = t1.length, _i = 0; _i < t1.length; t1.length === t3 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
            arg = t1[_i];
            t4 = [arg.statementIndex];
            for (t5 = arg.$arguments, t6 = t5.length, _i0 = 0; _i0 < t5.length; t5.length === t6 || (0, A.throwConcurrentModificationError)(t5), ++_i0)
              t4.push(this._web_protocol$_encodeDbValue$1(t5[_i0]));
            t2.push(t4);
          }
          t1 = payload.executorId;
          t2.push(t1 == null ? _null : t1);
          t1 = t2;
          break $label0$0;
        }
        if (payload instanceof A.RunNestedExecutorControl) {
          t1 = payload.control;
          t2 = payload.executorId;
          if (t2 == null)
            t2 = _null;
          t2 = A._setArrayType([5, t1.index, t2], type$.JSArray_nullable_double);
          t1 = t2;
          break $label0$0;
        }
        if (payload instanceof A.EnsureOpen) {
          _this = payload.schemaVersion;
          t1 = payload.executorId;
          t1 = A._setArrayType([6, _this, t1 == null ? _null : t1], type$.JSArray_nullable_double);
          break $label0$0;
        }
        if (payload instanceof A.ServerInfo) {
          t1 = A._setArrayType([13, payload.dialect._name], type$.JSArray_Object);
          break $label0$0;
        }
        if (payload instanceof A.RunBeforeOpen) {
          t1 = payload.details;
          t2 = t1.versionBefore;
          if (t2 == null)
            t2 = _null;
          t1 = A._setArrayType([7, t2, t1.versionNow, payload.createdExecutor], type$.JSArray_nullable_double);
          break $label0$0;
        }
        if (payload instanceof A.NotifyTablesUpdated) {
          t1 = [8];
          for (t2 = payload.updates, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
            update = t2[_i];
            t4 = update.kind;
            t4 = t4 == null ? _null : t4.index;
            t1.push([update.table, t4]);
          }
          break $label0$0;
        }
        if (B.NoArgsRequest_0 === payload) {
          t1 = 0;
          break $label0$0;
        }
      }
      return t1;
    },
    _deserializeRequest$1(payload) {
      var t1, tag, t2, t3, t4, t, _null = null;
      if (payload == null)
        return _null;
      if (typeof payload === "number") {
        A.assertHelper(A._asInt(A._asDouble(payload)) === 0);
        return B.NoArgsRequest_0;
      }
      t1 = type$.JSArray_nullable_Object;
      t1._as(payload);
      if (0 < 0 || 0 >= payload.length)
        return A.ioore(payload, 0);
      tag = A._asInt(A._asDouble(payload[0]));
      $label0$0: {
        if (3 === tag) {
          if (1 < 0 || 1 >= payload.length)
            return A.ioore(payload, 1);
          t2 = A._asInt(A._asDouble(payload[1]));
          if (!(t2 >= 0 && t2 < 4))
            return A.ioore(B.List_s6K, t2);
          t2 = B.List_s6K[t2];
          if (2 < 0 || 2 >= payload.length)
            return A.ioore(payload, 2);
          t3 = A._asString(payload[2]);
          t4 = [];
          if (3 < 0 || 3 >= payload.length)
            return A.ioore(payload, 3);
          t = t1._as(payload[3]);
          t1 = B.JSArray_methods.get$iterator(t);
          while (t1.moveNext$0())
            t4.push(this._web_protocol$_decodeDbValue$1(t1.get$current()));
          if (4 < 0 || 4 >= payload.length)
            return A.ioore(payload, 4);
          t1 = payload[4];
          t1 = new A.ExecuteQuery(t2, t3, t4, t1 == null ? _null : A._asInt(A._asDouble(t1)));
          break $label0$0;
        }
        if (12 === tag) {
          if (1 < 0 || 1 >= payload.length)
            return A.ioore(payload, 1);
          t1 = new A.RequestCancellation(A._asInt(A._asDouble(payload[1])));
          break $label0$0;
        }
        if (4 === tag) {
          t1 = new A.WebProtocol__deserializeRequest_readBatched(this, payload).call$0();
          break $label0$0;
        }
        if (5 === tag) {
          if (1 < 0 || 1 >= payload.length)
            return A.ioore(payload, 1);
          t1 = A._asInt(A._asDouble(payload[1]));
          if (!(t1 >= 0 && t1 < 5))
            return A.ioore(B.List_ttt, t1);
          t1 = B.List_ttt[t1];
          if (2 < 0 || 2 >= payload.length)
            return A.ioore(payload, 2);
          t2 = payload[2];
          t1 = new A.RunNestedExecutorControl(t1, t2 == null ? _null : A._asInt(A._asDouble(t2)));
          break $label0$0;
        }
        if (6 === tag) {
          if (1 < 0 || 1 >= payload.length)
            return A.ioore(payload, 1);
          t1 = A._asInt(A._asDouble(payload[1]));
          if (2 < 0 || 2 >= payload.length)
            return A.ioore(payload, 2);
          t2 = payload[2];
          t1 = new A.EnsureOpen(t1, t2 == null ? _null : A._asInt(A._asDouble(t2)));
          break $label0$0;
        }
        if (13 === tag) {
          if (1 < 0 || 1 >= payload.length)
            return A.ioore(payload, 1);
          t1 = new A.ServerInfo(A.EnumByName_byName(B.List_rcv, A._asString(payload[1]), type$.SqlDialect));
          break $label0$0;
        }
        if (7 === tag) {
          if (1 < 0 || 1 >= payload.length)
            return A.ioore(payload, 1);
          t1 = payload[1];
          t1 = t1 == null ? _null : A._asInt(A._asDouble(t1));
          if (2 < 0 || 2 >= payload.length)
            return A.ioore(payload, 2);
          t2 = A._asInt(A._asDouble(payload[2]));
          A.assertHelper(t1 !== 0);
          if (3 < 0 || 3 >= payload.length)
            return A.ioore(payload, 3);
          t2 = new A.RunBeforeOpen(new A.OpeningDetails(t1, t2), A._asInt(A._asDouble(payload[3])));
          t1 = t2;
          break $label0$0;
        }
        if (8 === tag) {
          t1 = B.JSArray_methods.skip$1(payload, 1);
          t2 = t1.$ti;
          t3 = t2._eval$1("MappedListIterable<ListIterable.E,TableUpdate>");
          t1 = A.List_List$_of(new A.MappedListIterable(t1, t2._eval$1("TableUpdate(ListIterable.E)")._as(new A.WebProtocol__deserializeRequest_closure()), t3), t3._eval$1("ListIterable.E"));
          t1 = new A.NotifyTablesUpdated(t1);
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$("Unknown request tag " + tag, _null));
      }
      return t1;
    },
    _serializeResponse$1(response) {
      var t1, message;
      $label0$0: {
        t1 = null;
        if (response == null)
          break $label0$0;
        if (response instanceof A.PrimitiveResponsePayload) {
          message = response.message;
          t1 = A._isBool(message) ? message : A._asInt(message);
          break $label0$0;
        }
        if (response instanceof A.SelectResult) {
          t1 = this._serializeSelectResult$1(response);
          break $label0$0;
        }
      }
      return t1;
    },
    _serializeSelectResult$1(result) {
      var columns, rows, jsRow,
        t1 = type$.SelectResult._as(result).rows,
        t2 = J.getInterceptor$asx(t1);
      if (t2.get$isEmpty(t1)) {
        t1 = init.G;
        t2 = type$.JSArray_nullable_Object;
        return {c: t2._as(new t1.Array()), r: t2._as(new t1.Array())};
      } else {
        columns = J.map$1$1$ax(t2.get$first(t1).get$keys(), new A.WebProtocol__serializeSelectResult_closure(), type$.String).toList$0(0);
        rows = A._setArrayType([], type$.JSArray_JSArray_nullable_Object);
        for (t1 = t2.get$iterator(t1); t1.moveNext$0();) {
          jsRow = [];
          for (t2 = J.get$iterator$ax(t1.get$current().get$values()); t2.moveNext$0();)
            jsRow.push(this._web_protocol$_encodeDbValue$1(t2.get$current()));
          B.JSArray_methods.add$1(rows, jsRow);
        }
        return {c: columns, r: rows};
      }
    },
    _deserializeResponse$1(response) {
      var t1, t2, t3, columns, rows, t4, dartRow, t5, t6, t7, i;
      if (response == null)
        return null;
      else if (typeof response === "boolean")
        return new A.PrimitiveResponsePayload(A._asBool(response));
      else if (typeof response === "number")
        return new A.PrimitiveResponsePayload(A._asInt(A._asDouble(response)));
      else {
        A._asJSObject(response);
        t1 = type$.JSArray_nullable_Object;
        t2 = t1._as(response.c);
        t2 = type$.List_String._is(t2) ? t2 : new A.CastList(t2, A._arrayInstanceType(t2)._eval$1("CastList<1,String>"));
        t3 = type$.String;
        t2 = J.map$1$1$ax(t2, new A.WebProtocol__deserializeResponse_closure(), t3);
        columns = A.List_List$_of(t2, t2.$ti._eval$1("ListIterable.E"));
        rows = A._setArrayType([], type$.JSArray_Map_of_String_and_nullable_Object);
        t1 = t1._as(response.r);
        t1 = J.get$iterator$ax(type$.List_JSArray_nullable_Object._is(t1) ? t1 : new A.CastList(t1, A._arrayInstanceType(t1)._eval$1("CastList<1,JSArray<Object?>>")));
        t2 = type$.nullable_Object;
        while (t1.moveNext$0()) {
          t4 = t1.get$current();
          dartRow = A.LinkedHashMap_LinkedHashMap$_empty(t3, t2);
          t4 = A.IndexedIterable_IndexedIterable(t4, 0, t2);
          t5 = J.get$iterator$ax(t4._source);
          t6 = t4._start;
          t4 = new A.IndexedIterator(t5, t6, A._instanceType(t4)._eval$1("IndexedIterator<1>"));
          while (t4.moveNext$0()) {
            t7 = t4.__internal$_index;
            t7 = t7 >= 0 ? new A._Record_2(t6 + t7, t5.get$current()) : A.throwExpression(A.IterableElementError_noElement());
            i = t7._0;
            if (!(i >= 0 && i < columns.length))
              return A.ioore(columns, i);
            dartRow.$indexSet(0, columns[i], this._web_protocol$_decodeDbValue$1(t7._1));
          }
          B.JSArray_methods.add$1(rows, dartRow);
        }
        return new A.SelectResult(rows);
      }
    },
    _web_protocol$_encodeDbValue$1(value) {
      var t1;
      $label0$0: {
        if (value == null) {
          t1 = null;
          break $label0$0;
        }
        if (A._isInt(value)) {
          t1 = value;
          break $label0$0;
        }
        if (A._isBool(value)) {
          t1 = value;
          break $label0$0;
        }
        if (typeof value == "string") {
          t1 = value;
          break $label0$0;
        }
        if (typeof value == "number") {
          t1 = A._setArrayType([15, value], type$.JSArray_double);
          break $label0$0;
        }
        if (value instanceof A._BigIntImpl) {
          t1 = A._setArrayType([14, value.toString$0(0)], type$.JSArray_Object);
          break $label0$0;
        }
        if (type$.List_int._is(value)) {
          t1 = new Uint8Array(A._ensureNativeList(value));
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$("Unknown db value: " + A.S(value), null));
      }
      return t1;
    },
    _web_protocol$_decodeDbValue$1(value) {
      var t1, tag, payload, _null = null;
      if (value != null)
        if (typeof value === "number")
          return A._asInt(A._asDouble(value));
        else if (typeof value === "boolean")
          return A._asBool(value);
        else if (typeof value === "string")
          return A._asString(value);
        else if (A.JSAnyUtilityExtension_instanceOfString(value, "Uint8Array"))
          return type$.NativeUint8List._as(value);
        else {
          type$.JSArray_nullable_Object._as(value);
          t1 = value.length === 2;
          if (t1) {
            if (0 < 0 || 0 >= value.length)
              return A.ioore(value, 0);
            tag = value[0];
            if (1 < 0 || 1 >= value.length)
              return A.ioore(value, 1);
            payload = value[1];
          } else {
            payload = _null;
            tag = payload;
          }
          if (!t1)
            throw A.wrapException(A.StateError$("Pattern matching error"));
          if (tag == 14)
            return A._BigIntImpl_parse(A._asString(payload), _null);
          else
            return A._asDouble(payload);
        }
      else
        return _null;
    },
    _decodeStackStrace$1(stackTrace) {
      var t1,
        _0_0 = stackTrace != null ? A._asString(stackTrace) : null;
      $label0$0: {
        if (_0_0 != null) {
          t1 = new A._StringStackTrace(_0_0);
          break $label0$0;
        }
        t1 = null;
        break $label0$0;
      }
      return t1;
    },
    _decodeSqliteErrorResponse$1(array) {
      var requestId, t2, t3, t4, _null = null,
        t1 = array.length >= 8,
        stackTrace = _null,
        message = _null,
        explanation = _null,
        extendedResultCode = _null,
        operation = _null,
        causingStatement = _null,
        parametersToStatement = _null;
      if (t1) {
        if (0 < 0 || 0 >= array.length)
          return A.ioore(array, 0);
        requestId = array[0];
        if (1 < 0 || 1 >= array.length)
          return A.ioore(array, 1);
        stackTrace = array[1];
        if (2 < 0 || 2 >= array.length)
          return A.ioore(array, 2);
        message = array[2];
        if (3 < 0 || 3 >= array.length)
          return A.ioore(array, 3);
        explanation = array[3];
        if (4 < 0 || 4 >= array.length)
          return A.ioore(array, 4);
        extendedResultCode = array[4];
        if (5 < 0 || 5 >= array.length)
          return A.ioore(array, 5);
        operation = array[5];
        if (6 < 0 || 6 >= array.length)
          return A.ioore(array, 6);
        causingStatement = array[6];
        if (7 < 0 || 7 >= array.length)
          return A.ioore(array, 7);
        parametersToStatement = array[7];
      } else
        requestId = _null;
      if (!t1)
        throw A.wrapException(A.StateError$("Pattern matching error"));
      requestId = A._asInt(A._asDouble(requestId));
      extendedResultCode = A._asInt(A._asDouble(extendedResultCode));
      A._asString(message);
      t1 = explanation != null ? A._asString(explanation) : _null;
      t2 = causingStatement != null ? A._asString(causingStatement) : _null;
      if (parametersToStatement != null) {
        t3 = [];
        type$.JSArray_nullable_Object._as(parametersToStatement);
        t4 = B.JSArray_methods.get$iterator(parametersToStatement);
        while (t4.moveNext$0())
          t3.push(this._web_protocol$_decodeDbValue$1(t4.get$current()));
      } else
        t3 = _null;
      t4 = operation != null ? A._asString(operation) : _null;
      return new A.ErrorResponse(requestId, new A.SqliteException(message, t1, extendedResultCode, _null, t4, t2, t3), this._decodeStackStrace$1(stackTrace));
    }
  };
  A.WebProtocol_deserialize_decodeRequest.prototype = {
    call$0() {
      var serialized = A._asJSObject(this._box_0.payload);
      return new A.Request(A._asInt(serialized.i), this.$this._deserializeRequest$1(serialized.p));
    },
    $signature: 91
  };
  A.WebProtocol_deserialize_decodeSuccess.prototype = {
    call$0() {
      var serialized = A._asJSObject(this._box_0.payload);
      return new A.SuccessResponse(A._asInt(serialized.i), this.$this._deserializeResponse$1(serialized.p));
    },
    $signature: 107
  };
  A.WebProtocol__serializeRequest_closure.prototype = {
    call$1(e) {
      return A._asString(e);
    },
    $signature: 8
  };
  A.WebProtocol__deserializeRequest_readBatched.prototype = {
    call$0() {
      var sqlStatements, t5, t6, t7, t8, t9, t10,
        t1 = this.dartList,
        t2 = J.getInterceptor$asx(t1),
        t3 = type$.JSArray_nullable_Object,
        t = t3._as(t2.$index(t1, 1)),
        t4 = type$.List_String._is(t) ? t : new A.CastList(t, A._arrayInstanceType(t)._eval$1("CastList<1,String>"));
      t4 = J.map$1$1$ax(t4, new A.WebProtocol__deserializeRequest_readBatched_closure(), type$.String);
      sqlStatements = A.List_List$_of(t4, t4.$ti._eval$1("ListIterable.E"));
      t4 = t2.get$length(t1);
      t5 = A._setArrayType([], type$.JSArray_ArgumentsForBatchedStatement);
      for (t4 = t2.skip$1(t1, 2).take$1(0, t4 - 3), t3 = A.CastIterable_CastIterable(t4, t4.$ti._eval$1("Iterable.E"), t3), t4 = A._instanceType(t3), t4 = A.MappedIterable_MappedIterable(t3, t4._eval$1("List<Object?>(Iterable.E)")._as(new A.WebProtocol__deserializeRequest_readBatched_closure0()), t4._eval$1("Iterable.E"), type$.List_nullable_Object), t3 = t4.__internal$_iterable, t6 = A._instanceType(t4), t4 = new A.MappedIterator(t3.get$iterator(t3), t4._f, t6._eval$1("MappedIterator<1,2>")), t3 = this.$this.get$_web_protocol$_decodeDbValue(), t6 = t6._rest[1]; t4.moveNext$0();) {
        t7 = t4.__internal$_current;
        if (t7 == null)
          t7 = t6._as(t7);
        t8 = J.getInterceptor$asx(t7);
        t9 = A._asInt(A._asDouble(t8.$index(t7, 0)));
        t7 = t8.skip$1(t7, 1);
        t8 = t7.$ti;
        t10 = t8._eval$1("MappedListIterable<ListIterable.E,Object?>");
        t7 = A.List_List$_of(new A.MappedListIterable(t7, t8._eval$1("Object?(ListIterable.E)")._as(t3), t10), t10._eval$1("ListIterable.E"));
        t5.push(new A.ArgumentsForBatchedStatement(t9, t7));
      }
      t1 = t2.$index(t1, t2.get$length(t1) - 1);
      t1 = t1 == null ? null : A._asInt(A._asDouble(t1));
      return new A.ExecuteBatchedStatement(new A.BatchedStatements(sqlStatements, t5), t1);
    },
    $signature: 108
  };
  A.WebProtocol__deserializeRequest_readBatched_closure.prototype = {
    call$1(e) {
      return A._asString(e);
    },
    $signature: 8
  };
  A.WebProtocol__deserializeRequest_readBatched_closure0.prototype = {
    call$1(e) {
      type$.JSArray_nullable_Object._as(e);
      return e;
    },
    $signature: 114
  };
  A.WebProtocol__deserializeRequest_closure.prototype = {
    call$1(e) {
      var t1, table, kindOrNull;
      type$.JSArray_nullable_Object._as(e);
      t1 = e.length === 2;
      if (t1) {
        if (0 < 0 || 0 >= e.length)
          return A.ioore(e, 0);
        table = e[0];
        if (1 < 0 || 1 >= e.length)
          return A.ioore(e, 1);
        kindOrNull = e[1];
      } else {
        table = null;
        kindOrNull = null;
      }
      if (!t1)
        throw A.wrapException(A.StateError$("Pattern matching error"));
      A._asString(table);
      if (kindOrNull == null)
        t1 = null;
      else {
        kindOrNull = A._asInt(A._asDouble(kindOrNull));
        if (!(kindOrNull >= 0 && kindOrNull < 3))
          return A.ioore(B.List_L4j, kindOrNull);
        t1 = B.List_L4j[kindOrNull];
      }
      return new A.TableUpdate(t1, table);
    },
    $signature: 37
  };
  A.WebProtocol__serializeSelectResult_closure.prototype = {
    call$1(e) {
      return A._asString(e);
    },
    $signature: 8
  };
  A.WebProtocol__deserializeResponse_closure.prototype = {
    call$1(e) {
      return A._asString(e);
    },
    $signature: 8
  };
  A.UpdateKind.prototype = {
    _enumToString$0() {
      return "UpdateKind." + this._name;
    }
  };
  A.TableUpdate.prototype = {
    get$hashCode(_) {
      return A.Object_hash(this.kind, this.table, B.C_SentinelValue, B.C_SentinelValue);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.TableUpdate && other.kind == this.kind && other.table === this.table;
    },
    toString$0(_) {
      return "TableUpdate(" + this.table + ", kind: " + A.S(this.kind) + ")";
    }
  };
  A.runCancellable_closure.prototype = {
    call$0() {
      return this._box_0.token._resultCompleter.complete$1(A.Future_Future$sync(this.operation, this.T));
    },
    $signature: 0
  };
  A.CancellationToken.prototype = {
    cancel$0() {
      var t1, _i;
      if (this._cancellationRequested)
        return;
      for (t1 = this._cancellationCallbacks, _i = 0; false; ++_i)
        t1[_i].call$0();
      this._cancellationRequested = true;
    }
  };
  A.CancellationException.prototype = {
    toString$0(_) {
      return "Operation was cancelled";
    },
    $isException: 1
  };
  A.QueryExecutor.prototype = {
    close$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void);
      var $async$close$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$close$0, $async$completer);
    }
  };
  A.BatchedStatements.prototype = {
    get$hashCode(_) {
      return A.Object_hash(B.C_ListEquality.hash$1(this.statements), B.C_ListEquality.hash$1(this.$arguments), B.C_SentinelValue, B.C_SentinelValue);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.BatchedStatements && B.C_ListEquality.equals$2(other.statements, this.statements) && B.C_ListEquality.equals$2(other.$arguments, this.$arguments);
    },
    toString$0(_) {
      return "BatchedStatements(" + A.S(this.statements) + ", " + A.S(this.$arguments) + ")";
    }
  };
  A.ArgumentsForBatchedStatement.prototype = {
    get$hashCode(_) {
      return A.Object_hash(this.statementIndex, B.C_ListEquality, B.C_SentinelValue, B.C_SentinelValue);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ArgumentsForBatchedStatement && other.statementIndex === this.statementIndex && B.C_ListEquality.equals$2(other.$arguments, this.$arguments);
    },
    toString$0(_) {
      return "ArgumentsForBatchedStatement(" + this.statementIndex + ", " + A.S(this.$arguments) + ")";
    }
  };
  A.DatabaseDelegate.prototype = {};
  A.QueryDelegate.prototype = {};
  A.TransactionDelegate.prototype = {};
  A.NoTransactionDelegate.prototype = {};
  A.DbVersionDelegate.prototype = {};
  A.NoVersionDelegate.prototype = {};
  A.DynamicVersionDelegate.prototype = {};
  A._BaseExecutor.prototype = {
    get$isSequential() {
      return false;
    },
    get$logStatements() {
      return false;
    },
    _debugCheckIsOpen$0() {
      if (!this._ensureOpenCalled)
        throw A.wrapException(A.StateError$("Tried to run an operation without first calling QueryExecutor.ensureOpen()!\n\nIf you're seeing this exception from a drift database, it may indicate a bug in\ndrift itself. Please consider opening an issue with the stack trace and details\non how to reproduce this."));
      if (this._engines$_closed)
        throw A.wrapException(A.StateError$("This database or transaction runner has already been closed and may not be used\nanymore.\n\nIf this is happening in a transaction, you might be using the transaction\nwithout awaiting every statement in it."));
      return true;
    },
    _synchronized$1$2$abortIfCancelled(action, abortIfCancelled, $T) {
      $T._eval$1("Future<0>()")._as(action);
      if (this.get$isSequential() || this._waitingChildExecutors > 0)
        return this._lock.synchronized$1$1(new A._BaseExecutor__synchronized_closure(abortIfCancelled, action, $T), $T);
      else
        return action.call$0();
    },
    _synchronized$1$1(action, $T) {
      return this._synchronized$1$2$abortIfCancelled(action, true, $T);
    },
    _log$2(sql, args) {
      this.get$logStatements();
    },
    runSelect$2(statement, args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.List_Map_of_String_and_nullable_Object),
        $async$returnValue, $async$self = this, t1;
      var $async$runSelect$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._synchronized$1$1(new A._BaseExecutor_runSelect_closure($async$self, statement, args), type$.QueryResult), $async$runSelect$2);
            case 3:
              // returning from await.
              t1 = $async$result.get$asMap(0);
              t1 = A.List_List$_of(t1, t1.$ti._eval$1("ListIterable.E"));
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$runSelect$2, $async$completer);
    },
    runDelete$2(statement, args) {
      return this._synchronized$1$1(new A._BaseExecutor_runDelete_closure(this, statement, args), type$.int);
    },
    runInsert$2(statement, args) {
      return this._synchronized$1$1(new A._BaseExecutor_runInsert_closure(this, statement, args), type$.int);
    },
    runCustom$2(statement, args) {
      return this._synchronized$1$1(new A._BaseExecutor_runCustom_closure(this, args, statement), type$.void);
    },
    runCustom$1(statement) {
      return this.runCustom$2(statement, null);
    },
    runBatched$1(statements) {
      return this._synchronized$1$1(new A._BaseExecutor_runBatched_closure(this, statements), type$.void);
    },
    beginExclusive$0() {
      return new A._ExclusiveExecutor(this, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), new A.Lock());
    },
    beginTransaction$0() {
      return this.beginTransactionInContext$1(this);
    }
  };
  A._BaseExecutor__synchronized_closure.prototype = {
    call$0() {
      return this.$call$body$_BaseExecutor__synchronized_closure(this.T);
    },
    $call$body$_BaseExecutor__synchronized_closure($async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self.abortIfCancelled)
                A.checkIfCancelled();
              $async$goto = 3;
              return A._asyncAwait($async$self.action.call$0(), $async$call$0);
            case 3:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature() {
      return this.T._eval$1("Future<0>()");
    }
  };
  A._BaseExecutor_runSelect_closure.prototype = {
    call$0() {
      var t2, t3,
        t1 = this.$this;
      t1._debugCheckIsOpen$0();
      t2 = this.statement;
      t3 = this.args;
      t1._log$2(t2, t3);
      return t1.get$impl().runSelect$2(t2, t3);
    },
    $signature: 39
  };
  A._BaseExecutor_runDelete_closure.prototype = {
    call$0() {
      var t2, t3,
        t1 = this.$this;
      t1._debugCheckIsOpen$0();
      t2 = this.statement;
      t3 = this.args;
      t1._log$2(t2, t3);
      return t1.get$impl().runUpdate$2(t2, t3);
    },
    $signature: 23
  };
  A._BaseExecutor_runInsert_closure.prototype = {
    call$0() {
      var t2, t3,
        t1 = this.$this;
      t1._debugCheckIsOpen$0();
      t2 = this.statement;
      t3 = this.args;
      t1._log$2(t2, t3);
      return t1.get$impl().runInsert$2(t2, t3);
    },
    $signature: 23
  };
  A._BaseExecutor_runCustom_closure.prototype = {
    call$0() {
      var resolvedArgs, t2,
        t1 = this.$this;
      t1._debugCheckIsOpen$0();
      resolvedArgs = this.args;
      if (resolvedArgs == null)
        resolvedArgs = B.List_empty1;
      t2 = this.statement;
      t1._log$2(t2, resolvedArgs);
      return t1.get$impl().runCustom$2(t2, resolvedArgs);
    },
    $signature: 2
  };
  A._BaseExecutor_runBatched_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._debugCheckIsOpen$0();
      t1.get$logStatements();
      return t1.get$impl().runBatched$1(this.statements);
    },
    $signature: 2
  };
  A._TransactionExecutor.prototype = {
    _checkCanOpen$0() {
      this._ensureOpenCalled = true;
      if (this._engines$_closed)
        throw A.wrapException(A.StateError$("A transaction was used after being closed. Please check that you're awaiting all database operations inside a `transaction` block."));
    },
    beginTransactionInContext$1(context) {
      throw A.wrapException(A.UnsupportedError$("Nested transactions aren't supported."));
    },
    get$dialect() {
      return B.SqlDialect_0_sqlite;
    },
    get$logStatements() {
      return false;
    },
    get$isSequential() {
      return true;
    },
    $isTransactionExecutor: 1
  };
  A._StatementBasedTransactionExecutor.prototype = {
    ensureOpen$1(user) {
      var opened, $parent, _this = this;
      _this._checkCanOpen$0();
      opened = _this._opened;
      if (opened == null) {
        opened = _this._opened = new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_bool), type$._AsyncCompleter_bool);
        $parent = _this._parent;
        ++$parent._waitingChildExecutors;
        $parent._synchronized$1$2$abortIfCancelled(new A._StatementBasedTransactionExecutor_ensureOpen_closure(_this), false, type$.Null).whenComplete$1(new A._StatementBasedTransactionExecutor_ensureOpen_closure0($parent));
      }
      return opened.future;
    },
    get$impl() {
      return this._db.delegate;
    },
    beginTransactionInContext$1(context) {
      var t1 = this.depth + 1;
      return new A._StatementBasedTransactionExecutor(this._engines$_delegate, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), context, t1, A._defaultSavepoint(t1), A._defaultRelease(t1), A._defaultRollbackToSavepoint(t1), this._db, new A.Lock());
    },
    send$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this;
      var $async$send$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              if (!$async$self._ensureOpenCalled) {
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 3;
              return A._asyncAwait($async$self.runCustom$2($async$self._commitCommand, B.List_empty1), $async$send$0);
            case 3:
              // returning from await.
              $async$self._release$0();
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$send$0, $async$completer);
    },
    rollback$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$next = [], $async$self = this;
      var $async$rollback$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              if (!$async$self._ensureOpenCalled) {
                // goto return
                $async$goto = 1;
                break;
              }
              $async$handler = 3;
              $async$goto = 6;
              return A._asyncAwait($async$self.runCustom$2($async$self._rollbackCommand, B.List_empty1), $async$rollback$0);
            case 6:
              // returning from await.
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 4:
              // finally
              $async$handler = 2;
              $async$self._release$0();
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$rollback$0, $async$completer);
    },
    _release$0() {
      var _this = this;
      if (_this.depth === 0)
        _this._db.delegate.isInTransaction = false;
      _this._engines$_done.complete$0();
      _this._engines$_closed = true;
    }
  };
  A._StatementBasedTransactionExecutor_ensureOpen_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$handler = 1, $async$errorStack = [], $async$self = this, e, s, t1, exception, $async$exception;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 3;
              A.checkIfCancelled();
              t1 = $async$self.$this;
              $async$goto = 6;
              return A._asyncAwait(t1.runCustom$1(t1._startCommand), $async$call$0);
            case 6:
              // returning from await.
              t1._db.delegate.isInTransaction = true;
              t1._opened.complete$1(true);
              $async$handler = 1;
              // goto after finally
              $async$goto = 5;
              break;
            case 3:
              // catch
              $async$handler = 2;
              $async$exception = $async$errorStack.pop();
              e = A.unwrapException($async$exception);
              s = A.getTraceFromException($async$exception);
              t1 = $async$self.$this;
              t1._opened.completeError$2(e, s);
              t1._release$0();
              // goto after finally
              $async$goto = 5;
              break;
            case 2:
              // uncaught
              // goto rethrow
              $async$goto = 1;
              break;
            case 5:
              // after finally
              $async$goto = 7;
              return A._asyncAwait($async$self.$this._engines$_done.future, $async$call$0);
            case 7:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 19
  };
  A._StatementBasedTransactionExecutor_ensureOpen_closure0.prototype = {
    call$0() {
      return this.parent._waitingChildExecutors--;
    },
    $signature: 42
  };
  A.DelegatedDatabase.prototype = {
    get$impl() {
      return this.delegate;
    },
    get$dialect() {
      return B.SqlDialect_0_sqlite;
    },
    ensureOpen$1(user) {
      return this._openingLock.synchronized$1$1(new A.DelegatedDatabase_ensureOpen_closure(this, user), type$.bool);
    },
    _runMigrations$1(user) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, currentVersion, oldVersion, t1, t2;
      var $async$_runMigrations$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.delegate;
              t2 = t1.__Sqlite3Delegate_versionDelegate_A;
              t2 === $ && A.throwLateFieldNI("versionDelegate");
              currentVersion = user.schemaVersion;
              $async$goto = t2 instanceof A.NoVersionDelegate ? 2 : 4;
              break;
            case 2:
              // then
              oldVersion = currentVersion;
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              $async$goto = t2 instanceof A._SqliteVersionDelegate ? 5 : 7;
              break;
            case 5:
              // then
              $async$goto = 8;
              return A._asyncAwait(A.Future_Future$value(t2.database.get$userVersion(), type$.int), $async$_runMigrations$1);
            case 8:
              // returning from await.
              oldVersion = $async$result;
              // goto join
              $async$goto = 6;
              break;
            case 7:
              // else
              throw A.wrapException(A.Exception_Exception("Invalid delegate: " + t1.toString$0(0) + ". The versionDelegate getter must not subclass DBVersionDelegate directly"));
            case 6:
              // join
            case 3:
              // join
              if (oldVersion === 0)
                oldVersion = null;
              A.assertHelper(oldVersion !== 0);
              $async$goto = 9;
              return A._asyncAwait(user.beforeOpen$2(new A._BeforeOpeningExecutor($async$self, new A.Lock()), new A.OpeningDetails(oldVersion, currentVersion)), $async$_runMigrations$1);
            case 9:
              // returning from await.
              $async$goto = t2 instanceof A._SqliteVersionDelegate && oldVersion !== currentVersion ? 10 : 11;
              break;
            case 10:
              // then
              t2.database.execute$1("PRAGMA user_version = " + currentVersion + ";");
              $async$goto = 12;
              return A._asyncAwait(A.Future_Future$value(null, type$.void), $async$_runMigrations$1);
            case 12:
              // returning from await.
            case 11:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_runMigrations$1, $async$completer);
    },
    beginTransactionInContext$1(context) {
      var t1 = $.Zone__current;
      return new A._StatementBasedTransactionExecutor(B.C_NoTransactionDelegate, new A._AsyncCompleter(new A._Future(t1, type$._Future_void), type$._AsyncCompleter_void), context, 0, "BEGIN TRANSACTION", "COMMIT TRANSACTION", "ROLLBACK TRANSACTION", this, new A.Lock());
    },
    close$0() {
      return this._openingLock.synchronized$1$1(new A.DelegatedDatabase_close_closure(this), type$.void);
    },
    get$logStatements() {
      return this.logStatements;
    },
    get$isSequential() {
      return this.isSequential;
    }
  };
  A.DelegatedDatabase_ensureOpen_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, e, s, t2, _0_0, t3, t4, exception, t1, $async$exception;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              if (t1._engines$_closed) {
                t1 = A._interceptUserError(new A.StateError("Can't re-open a database after closing it. Please create a new database connection and open that instead."), null);
                t2 = new A._Future($.Zone__current, type$._Future_bool);
                t2._asyncCompleteErrorObject$1(t1);
                $async$returnValue = t2;
                // goto return
                $async$goto = 1;
                break;
              }
              _0_0 = t1._migrationError;
              if (_0_0 != null)
                A.Error_throwWithStackTrace(_0_0._0, _0_0._1);
              t2 = t1.delegate;
              t3 = type$.bool;
              t4 = A.Future_Future$value(t2._isOpen, t3);
              $async$goto = 3;
              return A._asyncAwait(type$.Future_bool._is(t4) ? t4 : A._Future$value(A._asBool(t4), t3), $async$call$0);
            case 3:
              // returning from await.
              if ($async$result) {
                $async$returnValue = t1._ensureOpenCalled = true;
                // goto return
                $async$goto = 1;
                break;
              }
              t3 = $async$self.user;
              $async$goto = 4;
              return A._asyncAwait(t2.open$1(t3), $async$call$0);
            case 4:
              // returning from await.
              t1._ensureOpenCalled = true;
              $async$handler = 6;
              $async$goto = 9;
              return A._asyncAwait(t1._runMigrations$1(t3), $async$call$0);
            case 9:
              // returning from await.
              $async$returnValue = true;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 8;
              break;
            case 6:
              // catch
              $async$handler = 5;
              $async$exception = $async$errorStack.pop();
              e = A.unwrapException($async$exception);
              s = A.getTraceFromException($async$exception);
              t1._migrationError = new A._Record_2(e, s);
              throw $async$exception;
              // goto after finally
              $async$goto = 8;
              break;
            case 5:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 8:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 43
  };
  A.DelegatedDatabase_close_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      if (t1._ensureOpenCalled && !t1._engines$_closed) {
        t1._engines$_closed = true;
        t1._ensureOpenCalled = false;
        return t1.delegate.close$0();
      } else
        return A.Future_Future$value(null, type$.void);
    },
    $signature: 2
  };
  A._BeforeOpeningExecutor.prototype = {
    beginTransactionInContext$1(context) {
      return this._base.beginTransactionInContext$1(context);
    },
    ensureOpen$1(_) {
      this._ensureOpenCalled = true;
      return A.Future_Future$value(true, type$.bool);
    },
    get$impl() {
      return this._base.delegate;
    },
    get$logStatements() {
      return false;
    },
    get$dialect() {
      return B.SqlDialect_0_sqlite;
    }
  };
  A._ExclusiveExecutor.prototype = {
    get$dialect() {
      return this._outer.get$dialect();
    },
    ensureOpen$1(user) {
      var t1, opened, t2, _this = this,
        _0_0 = _this._opened;
      if (_0_0 != null)
        return _0_0.future;
      else {
        _this._ensureOpenCalled = true;
        t1 = new A._Future($.Zone__current, type$._Future_bool);
        opened = new A._AsyncCompleter(t1, type$._AsyncCompleter_bool);
        _this._opened = opened;
        t2 = _this._outer;
        ++t2._waitingChildExecutors;
        t2._synchronized$1$1(new A._ExclusiveExecutor_ensureOpen_closure(_this, opened), type$.Null);
        return t1;
      }
    },
    get$impl() {
      return this._outer.get$impl();
    },
    beginTransactionInContext$1(context) {
      return this._outer.beginTransactionInContext$1(context);
    },
    close$0() {
      this._completer.complete$0();
      return A.Future_Future$value(null, type$.void);
    }
  };
  A._ExclusiveExecutor_ensureOpen_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self.opened.complete$1(true);
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._completer.future, $async$call$0);
            case 2:
              // returning from await.
              --t1._outer._waitingChildExecutors;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 19
  };
  A.QueryResult.prototype = {
    get$asMap(_) {
      var t1 = this.rows,
        t2 = A._arrayInstanceType(t1);
      return new A.MappedListIterable(t1, t2._eval$1("Map<String,@>(1)")._as(new A.QueryResult_asMap_closure(this)), t2._eval$1("MappedListIterable<1,Map<String,@>>"));
    }
  };
  A.QueryResult_asMap_closure.prototype = {
    call$1(row) {
      var t1, t2, t3, t4, t5, _i, column, t6;
      type$.List_nullable_Object._as(row);
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.dynamic);
      for (t2 = this.$this, t3 = t2.columnNames, t4 = t3.length, t2 = t2._columnIndexes, t5 = J.getInterceptor$asx(row), _i = 0; _i < t3.length; t3.length === t4 || (0, A.throwConcurrentModificationError)(t3), ++_i) {
        column = t3[_i];
        t6 = t2.$index(0, column);
        t6.toString;
        t1.$indexSet(0, column, t5.$index(row, t6));
      }
      return t1;
    },
    $signature: 44
  };
  A.QueryInterceptor.prototype = {};
  A._InterceptedExecutor.prototype = {
    beginTransaction$0() {
      var t1 = this._interceptor$_inner;
      return new A._InterceptedTransactionExecutor(t1.beginTransactionInContext$1(t1), this._interceptor$_interceptor);
    },
    beginExclusive$0() {
      return new A._InterceptedExecutor(new A._ExclusiveExecutor(this._interceptor$_inner, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), new A.Lock()), this._interceptor$_interceptor);
    },
    get$dialect() {
      return this._interceptor$_inner.get$dialect();
    },
    ensureOpen$1(user) {
      return this._interceptor$_inner.ensureOpen$1(user);
    },
    runBatched$1(statements) {
      return this._interceptor$_inner.runBatched$1(statements);
    },
    runCustom$2(statement, args) {
      return this._interceptor$_inner.runCustom$2(statement, args);
    },
    runDelete$2(statement, args) {
      return this._interceptor$_inner.runDelete$2(statement, args);
    },
    runInsert$2(statement, args) {
      return this._interceptor$_inner.runInsert$2(statement, args);
    },
    runSelect$2(statement, args) {
      return this._interceptor$_inner.runSelect$2(statement, args);
    },
    close$0() {
      return this._interceptor$_interceptor.close$1(this._interceptor$_inner);
    }
  };
  A._InterceptedTransactionExecutor.prototype = {
    rollback$0() {
      return type$.TransactionExecutor._as(this._interceptor$_inner).rollback$0();
    },
    send$0() {
      return type$.TransactionExecutor._as(this._interceptor$_inner).send$0();
    },
    $isTransactionExecutor: 1
  };
  A.OpeningDetails.prototype = {};
  A.SqlDialect.prototype = {
    _enumToString$0() {
      return "SqlDialect." + this._name;
    }
  };
  A.Sqlite3Delegate.prototype = {
    open$1(db) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, t1, exception;
      var $async$open$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = !$async$self._hasInitializedDatabase ? 3 : 4;
              break;
            case 3:
              // then
              A.assertHelper($async$self._database == null);
              t1 = A._instanceType($async$self)._eval$1("Sqlite3Delegate.0");
              t1 = A._Future$value(t1._as($async$self.openDatabase$0()), t1);
              $async$goto = 5;
              return A._asyncAwait(t1, $async$open$1);
            case 5:
              // returning from await.
              $async$self._database = $async$result;
              try {
                A.assertHelper(!$async$self._hasInitializedDatabase);
                t1 = $async$self._database;
                t1.toString;
                A.EnableNativeFunctions_useNativeFunctions(t1);
                if ($async$self.enableMigrations) {
                  t1 = $async$self._database;
                  t1.toString;
                  t1 = new A._SqliteVersionDelegate(t1);
                } else
                  t1 = B.C_NoVersionDelegate;
                $async$self.__Sqlite3Delegate_versionDelegate_A = t1;
                $async$self._hasInitializedDatabase = true;
              } catch (exception) {
                t1 = $async$self._database;
                if (t1 != null)
                  t1.dispose$0();
                $async$self._database = null;
                $async$self._preparedStmtsCache._cachedStatements.clear$0(0);
                throw exception;
              }
            case 4:
              // join
              $async$self._isOpen = true;
              $async$returnValue = A.Future_Future$value(null, type$.void);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$open$1, $async$completer);
    },
    close$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$close$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self._preparedStmtsCache.disposeAll$0();
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$close$0, $async$completer);
    },
    runBatchSync$1(statements) {
      var stmt, application, stmt0, stmt1, t1, t2, _i, t3, t4, t5, t6,
        prepared = A._setArrayType([], type$.JSArray_CommonPreparedStatement);
      try {
        for (t1 = J.get$iterator$ax(statements.statements); t1.moveNext$0();) {
          stmt = t1.get$current();
          J.add$1$ax(prepared, this._database.prepare$2$checkNoTail(stmt, true));
        }
        for (t1 = statements.$arguments, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
          application = t1[_i];
          stmt0 = J.$index$asx(prepared, application.statementIndex);
          t3 = stmt0;
          t4 = application.$arguments;
          t5 = t3.finalizable;
          if (t5._statement$_closed)
            A.throwExpression(A.StateError$(string$.Tried_));
          if (!t5._inResetState) {
            t6 = t5.statement;
            A._asInt(t6.bindings.sqlite3.sqlite3_reset(t6.stmt));
            t5._inResetState = true;
          }
          t5.statement.deallocateArguments$0();
          t3._bindParams$1(new A.IndexedParameters(t4));
          t3._execute$0();
        }
      } finally {
        for (t1 = prepared, t2 = t1.length, t3 = type$.StatementImplementation, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
          stmt1 = t1[_i];
          t4 = stmt1;
          t5 = t4.finalizable;
          if (!t5._statement$_closed) {
            t6 = $.$get$disposeFinalizer()._registry;
            if (t6 != null)
              t6.unregister(t4);
            if (!t5._statement$_closed) {
              t5._statement$_closed = true;
              if (!t5._inResetState) {
                t6 = t5.statement;
                A._asInt(t6.bindings.sqlite3.sqlite3_reset(t6.stmt));
                t5._inResetState = true;
              }
              t6 = t5.statement;
              t6.deallocateArguments$0();
              A._asInt(t6.bindings.sqlite3.sqlite3_finalize(t6.stmt));
            }
            t6 = t4.database;
            t3._as(t4);
            if (!t6._isClosed)
              B.JSArray_methods.remove$1(t6.finalizable._statements, t5);
          }
        }
      }
    },
    runWithArgsSync$2(statement, args) {
      var stmt, cached, _0_0, t1, t2;
      if (args.length === 0)
        this._database.execute$1(statement);
      else {
        stmt = null;
        cached = null;
        _0_0 = this._getPreparedStatement$1(statement);
        stmt = _0_0._0;
        cached = _0_0._1;
        try {
          stmt.executeWith$1(new A.IndexedParameters(args));
        } finally {
          t1 = stmt;
          t2 = cached;
          type$.CommonPreparedStatement._as(t1);
          if (!A._asBool(t2))
            t1.dispose$0();
        }
      }
    },
    runSelect$2(statement, args) {
      return this.runSelect$body$Sqlite3Delegate(statement, args);
    },
    runSelect$body$Sqlite3Delegate(statement, args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.QueryResult),
        $async$returnValue, $async$next = [], $async$self = this, result, t1, t2, stmt, cached, _0_0;
      var $async$runSelect$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              stmt = null;
              cached = null;
              _0_0 = $async$self._getPreparedStatement$1(statement);
              stmt = _0_0._0;
              cached = _0_0._1;
              try {
                result = stmt.selectWith$1(new A.IndexedParameters(args));
                t1 = A.QueryResult_QueryResult$fromRows(J.toList$0$ax(result));
                $async$returnValue = t1;
                // goto return
                $async$goto = 1;
                break;
              } finally {
                t1 = stmt;
                t2 = cached;
                type$.CommonPreparedStatement._as(t1);
                if (!A._asBool(t2))
                  t1.dispose$0();
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$runSelect$2, $async$completer);
    },
    _getPreparedStatement$1(sql) {
      var stmt, t3,
        t1 = this._preparedStmtsCache._cachedStatements,
        foundStatement = t1.remove$1(0, sql),
        t2 = foundStatement != null;
      if (t2)
        t1.$indexSet(0, sql, foundStatement);
      if (t2)
        return new A._Record_2(foundStatement, true);
      stmt = this._database.prepare$2$checkNoTail(sql, true);
      t2 = stmt.statement;
      t3 = t2.stmt;
      t2 = t2.bindings.sqlite3;
      if (A._asInt(t2.sqlite3_stmt_isexplain(t3)) === 0) {
        A.assertHelper(!t1.containsKey$1(sql));
        if (t1.__js_helper$_length === 64)
          t1.remove$1(0, new A.LinkedHashMapKeysIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeysIterable<1>")).get$first(0)).dispose$0();
        t1.$indexSet(0, sql, stmt);
      }
      return new A._Record_2(stmt, A._asInt(t2.sqlite3_stmt_isexplain(t3)) === 0);
    }
  };
  A._SqliteVersionDelegate.prototype = {};
  A.PreparedStatementsCache.prototype = {
    disposeAll$0() {
      var t1, t2, t3, t4, t5;
      for (t1 = this._cachedStatements, t2 = new A.LinkedHashMapValueIterator(t1, t1.__js_helper$_modifications, t1.__js_helper$_first, A._instanceType(t1)._eval$1("LinkedHashMapValueIterator<2>")); t2.moveNext$0();) {
        t3 = t2.__js_helper$_current;
        t4 = t3.finalizable;
        if (!t4._statement$_closed) {
          t5 = $.$get$disposeFinalizer()._registry;
          if (t5 != null)
            t5.unregister(t3);
          if (!t4._statement$_closed) {
            t4._statement$_closed = true;
            if (!t4._inResetState) {
              t5 = t4.statement;
              A._asInt(t5.bindings.sqlite3.sqlite3_reset(t5.stmt));
              t4._inResetState = true;
            }
            t5 = t4.statement;
            t5.deallocateArguments$0();
            A._asInt(t5.bindings.sqlite3.sqlite3_finalize(t5.stmt));
          }
          t3 = t3.database;
          if (!t3._isClosed)
            B.JSArray_methods.remove$1(t3.finalizable._statements, t4);
        }
      }
      t1.clear$0(0);
    }
  };
  A.EnableNativeFunctions_useNativeFunctions_closure.prototype = {
    call$1(args) {
      return Date.now();
    },
    $signature: 45
  };
  A._unaryNumFunction_closure.prototype = {
    call$1(args) {
      var value = args.$index(0, 0);
      if (typeof value == "number")
        return this.calculation.call$1(value);
      else
        return null;
    },
    $signature: 36
  };
  A.LazyDatabase.prototype = {
    get$_delegate() {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1;
    },
    get$dialect() {
      if (this._delegateAvailable) {
        var t1 = this.__LazyDatabase__delegate_F;
        t1 === $ && A.throwLateFieldNI("_delegate");
        t1 = B.SqlDialect_0_sqlite !== t1.get$dialect();
      } else
        t1 = false;
      if (t1)
        throw A.wrapException(A.Exception_Exception("LazyDatabase created with " + B.SqlDialect_0_sqlite.toString$0(0) + ", but underlying database is " + this.get$_delegate().get$dialect().toString$0(0) + "."));
      return B.SqlDialect_0_sqlite;
    },
    _awaitOpened$0() {
      var t1, delegate, _this = this;
      if (_this._delegateAvailable)
        return A.Future_Future$value(null, type$.void);
      else {
        t1 = _this._openDelegate;
        if (t1 != null)
          return t1.future;
        else {
          t1 = new A._Future($.Zone__current, type$._Future_void);
          delegate = _this._openDelegate = new A._AsyncCompleter(t1, type$._AsyncCompleter_void);
          A.Future_Future$sync(_this.opener, type$.QueryExecutor).then$1$2$onError(new A.LazyDatabase__awaitOpened_closure(_this, delegate), delegate.get$completeError(), type$.Null);
          return t1;
        }
      }
    },
    beginExclusive$0() {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.beginExclusive$0();
    },
    beginTransaction$0() {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.beginTransaction$0();
    },
    ensureOpen$1(user) {
      return this._awaitOpened$0().then$1$1(new A.LazyDatabase_ensureOpen_closure(this, user), type$.bool);
    },
    runBatched$1(statements) {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.runBatched$1(statements);
    },
    runCustom$2(statement, args) {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.runCustom$2(statement, args);
    },
    runDelete$2(statement, args) {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.runDelete$2(statement, args);
    },
    runInsert$2(statement, args) {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.runInsert$2(statement, args);
    },
    runSelect$2(statement, args) {
      var t1 = this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.runSelect$2(statement, args);
    },
    close$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, t1, _0_0;
      var $async$close$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = $async$self._delegateAvailable ? 3 : 5;
              break;
            case 3:
              // then
              t1 = $async$self.__LazyDatabase__delegate_F;
              t1 === $ && A.throwLateFieldNI("_delegate");
              $async$goto = 6;
              return A._asyncAwait(t1.close$0(), $async$close$0);
            case 6:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              _0_0 = $async$self._openDelegate;
              $async$goto = _0_0 != null ? 7 : 8;
              break;
            case 7:
              // then
              $async$goto = 9;
              return A._asyncAwait(_0_0.future, $async$close$0);
            case 9:
              // returning from await.
              t1 = $async$self.__LazyDatabase__delegate_F;
              t1 === $ && A.throwLateFieldNI("_delegate");
              $async$goto = 10;
              return A._asyncAwait(t1.close$0(), $async$close$0);
            case 10:
              // returning from await.
            case 8:
              // join
            case 4:
              // join
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$close$0, $async$completer);
    }
  };
  A.LazyDatabase__awaitOpened_closure.prototype = {
    call$1(database) {
      var t1;
      type$.QueryExecutor._as(database);
      t1 = this.$this;
      t1.__LazyDatabase__delegate_F !== $ && A.throwLateFieldAI("_delegate");
      t1.__LazyDatabase__delegate_F = database;
      t1._delegateAvailable = true;
      this.delegate.complete$0();
    },
    $signature: 47
  };
  A.LazyDatabase_ensureOpen_closure.prototype = {
    call$1(_) {
      var t1 = this.$this.__LazyDatabase__delegate_F;
      t1 === $ && A.throwLateFieldNI("_delegate");
      return t1.ensureOpen$1(this.user);
    },
    $signature: 48
  };
  A.Lock.prototype = {
    synchronized$1$1(block, $T) {
      var previous, blockReleasedLock, t1;
      $T._eval$1("0/()")._as(block);
      previous = this._last;
      blockReleasedLock = new A._Future($.Zone__current, type$._Future_void);
      this._last = blockReleasedLock;
      t1 = new A.Lock_synchronized_callBlockAndComplete(this, block, new A._AsyncCompleter(blockReleasedLock, type$._AsyncCompleter_void), blockReleasedLock, $T);
      if (previous != null)
        return previous.then$1$1(new A.Lock_synchronized_closure(t1, $T), $T);
      else
        return t1.call$0();
    }
  };
  A.Lock_synchronized_callBlockAndComplete.prototype = {
    call$0() {
      var _this = this;
      return A.Future_Future$sync(_this.block, _this.T).whenComplete$1(new A.Lock_synchronized_callBlockAndComplete_closure(_this.$this, _this.blockCompleted, _this.blockReleasedLock));
    },
    $signature() {
      return this.T._eval$1("Future<0>()");
    }
  };
  A.Lock_synchronized_callBlockAndComplete_closure.prototype = {
    call$0() {
      this.blockCompleted.complete$0();
      var t1 = this.$this;
      if (t1._last === this.blockReleasedLock)
        t1._last = null;
    },
    $signature: 6
  };
  A.Lock_synchronized_closure.prototype = {
    call$1(_) {
      return this.callBlockAndComplete.call$0();
    },
    $signature() {
      return this.T._eval$1("Future<0>(~)");
    }
  };
  A.WebPortToChannel_channel_closure.prototype = {
    call$1($event) {
      var t1, _this = this, _s6_ = "_local", _s5_ = "_sink",
        message = A._asJSObject($event).data;
      if (_this.explicitClose && J.$eq$(message, "_disconnect")) {
        t1 = _this.controller.__StreamChannelController__local_F;
        t1 === $ && A.throwLateFieldNI(_s6_);
        t1 = t1.__GuaranteeChannel__sink_F;
        t1 === $ && A.throwLateFieldNI(_s5_);
        t1.close$0();
      } else {
        t1 = _this.controller.__StreamChannelController__local_F;
        if (_this.webNativeSerialization) {
          t1 === $ && A.throwLateFieldNI(_s6_);
          t1 = t1.__GuaranteeChannel__sink_F;
          t1 === $ && A.throwLateFieldNI(_s5_);
          t1.add$1(0, _this.protocol.deserialize$1(type$.JSArray_nullable_Object._as(message)));
        } else {
          t1 === $ && A.throwLateFieldNI(_s6_);
          t1 = t1.__GuaranteeChannel__sink_F;
          t1 === $ && A.throwLateFieldNI(_s5_);
          t1.add$1(0, A.dartify(message));
        }
      }
    },
    $signature: 12
  };
  A.WebPortToChannel_channel_closure0.prototype = {
    call$1(e) {
      var t1 = this._this;
      if (this.webNativeSerialization)
        t1.postMessage(this.protocol.serialize$1(type$.Message._as(e)));
      else
        t1.postMessage(A.jsify(e));
    },
    $signature: 9
  };
  A.WebPortToChannel_channel_closure1.prototype = {
    call$0() {
      if (this.explicitClose)
        this._this.postMessage("_disconnect");
      this._this.close();
    },
    $signature: 0
  };
  A.DedicatedDriftWorker.prototype = {
    start$0() {
      A._EventStreamSubscription$(this.self, "message", type$.nullable_void_Function_JSObject._as(new A.DedicatedDriftWorker_start_closure(this)), false, type$.JSObject);
    },
    _dedicated_worker$_handleMessage$1(message) {
      return this._handleMessage$body$DedicatedDriftWorker(message);
    },
    _handleMessage$body$DedicatedDriftWorker(message) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$handler = 1, $async$errorStack = [], $async$self = this, storage, $name, e, t1, dbName, _box_0, existingServer, existingDatabases, opfsExists, t2, indexedDbExists, _this, t3, options, worker, _0_7_isSet, _0_7, exception, $async$exception, $async$temp1;
      var $async$_dedicated_worker$_handleMessage$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = message instanceof A.RequestCompatibilityCheck;
              dbName = t1 ? message.databaseName : null;
              $async$goto = t1 ? 3 : 4;
              break;
            case 3:
              // then
              _box_0 = {};
              _box_0.supportsIndexedDb = _box_0.supportsOpfs = false;
              $async$goto = 5;
              return A._asyncAwait($async$self._checkCompatibility.synchronized$1$1(new A.DedicatedDriftWorker__handleMessage_closure(_box_0, $async$self), type$.Null), $async$_dedicated_worker$_handleMessage$1);
            case 5:
              // returning from await.
              existingServer = $async$self._dedicated_worker$_servers.servers.$index(0, dbName);
              existingDatabases = A._setArrayType([], type$.JSArray_Record_2_WebStorageApi_and_String);
              opfsExists = false;
              $async$goto = _box_0.supportsOpfs ? 6 : 7;
              break;
            case 6:
              // then
              $async$temp1 = J;
              $async$goto = 8;
              return A._asyncAwait(A.opfsDatabases(), $async$_dedicated_worker$_handleMessage$1);
            case 8:
              // returning from await.
              t1 = $async$temp1.get$iterator$ax($async$result);
            case 9:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 10;
                break;
              }
              t2 = t1.get$current();
              B.JSArray_methods.add$1(existingDatabases, new A._Record_2(B.WebStorageApi_0, t2));
              if (t2 === dbName)
                opfsExists = true;
              // goto for condition
              $async$goto = 9;
              break;
            case 10:
              // after for
            case 7:
              // join
              $async$goto = existingServer != null ? 11 : 13;
              break;
            case 11:
              // then
              t1 = existingServer.storage;
              indexedDbExists = t1 === B.WasmStorageImplementation_2_sharedIndexedDb || t1 === B.WasmStorageImplementation_3_unsafeIndexedDb;
              opfsExists = t1 === B.WasmStorageImplementation_0_opfsShared || t1 === B.WasmStorageImplementation_1_opfsLocks;
              // goto join
              $async$goto = 12;
              break;
            case 13:
              // else
              $async$temp1 = _box_0.supportsIndexedDb;
              if ($async$temp1) {
                // goto then
                $async$goto = 14;
                break;
              } else
                $async$result = $async$temp1;
              // goto join
              $async$goto = 15;
              break;
            case 14:
              // then
              $async$goto = 16;
              return A._asyncAwait(A.checkIndexedDbExists(dbName), $async$_dedicated_worker$_handleMessage$1);
            case 16:
              // returning from await.
            case 15:
              // join
              indexedDbExists = $async$result;
            case 12:
              // join
              t1 = init.G;
              _this = "Worker" in t1;
              t2 = _box_0.supportsOpfs;
              t3 = _box_0.supportsIndexedDb;
              new A.DedicatedWorkerCompatibilityResult(_this, t2, "SharedArrayBuffer" in t1, t3, existingDatabases, B.ProtocolVersion_4_4_v4, indexedDbExists, opfsExists).sendToClient$1($async$self.self);
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 4:
              // join
              if (message instanceof A.ServeDriftDatabase) {
                $async$self._dedicated_worker$_servers.serve$1(message);
                // goto break $label0$0
                $async$goto = 2;
                break;
              }
              t1 = message instanceof A.StartFileSystemServer;
              options = t1 ? message.sqlite3Options : null;
              $async$goto = t1 ? 17 : 18;
              break;
            case 17:
              // then
              $async$goto = 19;
              return A._asyncAwait(A.VfsWorker_create(options), $async$_dedicated_worker$_handleMessage$1);
            case 19:
              // returning from await.
              worker = $async$result;
              $async$self.self.postMessage(true);
              $async$goto = 20;
              return A._asyncAwait(worker.start$0(), $async$_dedicated_worker$_handleMessage$1);
            case 20:
              // returning from await.
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 18:
              // join
              storage = null;
              $name = null;
              _0_7_isSet = message instanceof A.DeleteDatabase;
              if (_0_7_isSet) {
                _0_7 = message.database;
                storage = _0_7._0;
                $name = _0_7._1;
              }
              $async$goto = _0_7_isSet ? 21 : 22;
              break;
            case 21:
              // then
              $async$handler = 24;
            case 27:
              // switch
              switch (storage) {
                case B.WebStorageApi_1:
                  // goto case
                  $async$goto = 29;
                  break;
                case B.WebStorageApi_0:
                  // goto case
                  $async$goto = 30;
                  break;
                default:
                  // goto after switch
                  $async$goto = 28;
                  break;
              }
              break;
            case 29:
              // case
              $async$goto = 31;
              return A._asyncAwait(A.deleteDatabaseInIndexedDb($name), $async$_dedicated_worker$_handleMessage$1);
            case 31:
              // returning from await.
              // goto after switch
              $async$goto = 28;
              break;
            case 30:
              // case
              $async$goto = 32;
              return A._asyncAwait(A.deleteDatabaseInOpfs($name), $async$_dedicated_worker$_handleMessage$1);
            case 32:
              // returning from await.
              // goto after switch
              $async$goto = 28;
              break;
            case 28:
              // after switch
              message.sendToClient$1($async$self.self);
              $async$handler = 1;
              // goto after finally
              $async$goto = 26;
              break;
            case 24:
              // catch
              $async$handler = 23;
              $async$exception = $async$errorStack.pop();
              e = A.unwrapException($async$exception);
              new A.WorkerError(J.toString$0$(e)).sendToClient$1($async$self.self);
              // goto after finally
              $async$goto = 26;
              break;
            case 23:
              // uncaught
              // goto rethrow
              $async$goto = 1;
              break;
            case 26:
              // after finally
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 22:
              // join
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 2:
              // break $label0$0
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_dedicated_worker$_handleMessage$1, $async$completer);
    }
  };
  A.DedicatedDriftWorker_start_closure.prototype = {
    call$1($event) {
      this.$this._dedicated_worker$_handleMessage$1(A.WasmInitializationMessage_WasmInitializationMessage$fromJs(A._asJSObject($event.data)));
    },
    $signature: 1
  };
  A.DedicatedDriftWorker__handleMessage_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, supportsIndexedDb, t1, knownResults, t2, $async$temp1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              knownResults = t1._compatibility;
              t2 = $async$self._box_0;
              $async$goto = knownResults != null ? 2 : 4;
              break;
            case 2:
              // then
              t2.supportsOpfs = knownResults.supportsOpfs;
              t2.supportsIndexedDb = knownResults.supportsIndexedDb;
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              $async$temp1 = t2;
              $async$goto = 5;
              return A._asyncAwait(A.checkOpfsSupport(), $async$call$0);
            case 5:
              // returning from await.
              $async$temp1.supportsOpfs = $async$result;
              $async$goto = 6;
              return A._asyncAwait(A.checkIndexedDbSupport(), $async$call$0);
            case 6:
              // returning from await.
              supportsIndexedDb = $async$result;
              t2.supportsIndexedDb = supportsIndexedDb;
              t1._compatibility = new A.WasmCompatibility(supportsIndexedDb, t2.supportsOpfs);
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 19
  };
  A.ProtocolVersion.prototype = {
    _enumToString$0() {
      return "ProtocolVersion." + this._name;
    }
  };
  A.WasmInitializationMessage.prototype = {
    sendToWorker$1(worker) {
      this.sendTo$1(new A.WasmInitializationMessage_sendToWorker_closure(worker));
    },
    sendToPort$1(port) {
      this.sendTo$1(new A.WasmInitializationMessage_sendToPort_closure(port));
    },
    sendToClient$1(worker) {
      this.sendTo$1(new A.WasmInitializationMessage_sendToClient_closure(worker));
    }
  };
  A.WasmInitializationMessage_sendToWorker_closure.prototype = {
    call$2(msg, transfer) {
      var t1;
      type$.nullable_List_JSObject._as(transfer);
      t1 = transfer == null ? B.List_empty : transfer;
      this.worker.postMessage(msg, t1);
    },
    $signature: 20
  };
  A.WasmInitializationMessage_sendToPort_closure.prototype = {
    call$2(msg, transfer) {
      var t1;
      type$.nullable_List_JSObject._as(transfer);
      t1 = transfer == null ? B.List_empty : transfer;
      this.port.postMessage(msg, t1);
    },
    $signature: 20
  };
  A.WasmInitializationMessage_sendToClient_closure.prototype = {
    call$2(msg, transfer) {
      var t1;
      type$.nullable_List_JSObject._as(transfer);
      t1 = transfer == null ? B.List_empty : transfer;
      this.worker.postMessage(msg, t1);
    },
    $signature: 20
  };
  A.CompatibilityResult.prototype = {};
  A.SharedWorkerCompatibilityResult.prototype = {
    sendTo$1(sender) {
      var _this = this;
      A._extension_1_sendTyped(type$.void_Function_2_nullable_JSObject_and_nullable_List_JSObject._as(sender), "SharedWorkerCompatibilityResult", A._setArrayType([_this.canSpawnDedicatedWorkers, _this.dedicatedWorkersCanUseOpfs, _this.canUseIndexedDb, _this.indexedDbExists, _this.opfsExists, A.EncodeLocations_encodeToJs(_this.existingDatabases), _this.version.versionCode], type$.JSArray_Object), null);
    }
  };
  A.SharedWorkerCompatibilityResult_SharedWorkerCompatibilityResult$fromJsPayload_asBoolean.prototype = {
    call$1(index) {
      return A._asBool(J.$index$asx(this.asList, index));
    },
    $signature: 52
  };
  A.WorkerError.prototype = {
    sendTo$1(sender) {
      A._extension_1_sendTyped(type$.void_Function_2_nullable_JSObject_and_nullable_List_JSObject._as(sender), "Error", this.error, null);
    },
    toString$0(_) {
      return "Error in worker: " + this.error;
    },
    $isException: 1
  };
  A.ServeDriftDatabase.prototype = {
    sendTo$1(sender) {
      var _this0, t1, t2, _this = this;
      type$.void_Function_2_nullable_JSObject_and_nullable_List_JSObject._as(sender);
      _this0 = {};
      _this0.sqlite = _this.sqlite3WasmUri.toString$0(0);
      t1 = _this.port;
      _this0.port = t1;
      _this0.storage = _this.storage._name;
      _this0.database = _this.databaseName;
      t2 = _this.initializationPort;
      _this0.initPort = t2;
      _this0.migrations = _this.enableMigrations;
      _this0.new_serialization = _this.newSerialization;
      _this0.v = _this.protocolVersion.versionCode;
      t1 = A._setArrayType([t1], type$.JSArray_JSObject);
      if (t2 != null)
        t1.push(t2);
      A._extension_1_sendTyped(sender, "ServeDriftDatabase", _this0, t1);
    }
  };
  A.RequestCompatibilityCheck.prototype = {
    sendTo$1(sender) {
      A._extension_1_sendTyped(type$.void_Function_2_nullable_JSObject_and_nullable_List_JSObject._as(sender), "RequestCompatibilityCheck", this.databaseName, null);
    }
  };
  A.DedicatedWorkerCompatibilityResult.prototype = {
    sendTo$1(sender) {
      var _this0, _this = this;
      type$.void_Function_2_nullable_JSObject_and_nullable_List_JSObject._as(sender);
      _this0 = {};
      _this0.supportsNestedWorkers = _this.supportsNestedWorkers;
      _this0.canAccessOpfs = _this.canAccessOpfs;
      _this0.supportsIndexedDb = _this.supportsIndexedDb;
      _this0.supportsSharedArrayBuffers = _this.supportsSharedArrayBuffers;
      _this0.indexedDbExists = _this.indexedDbExists;
      _this0.opfsExists = _this.opfsExists;
      _this0.existing = A.EncodeLocations_encodeToJs(_this.existingDatabases);
      _this0.v = _this.version.versionCode;
      A._extension_1_sendTyped(sender, "DedicatedWorkerCompatibilityResult", _this0, null);
    }
  };
  A.StartFileSystemServer.prototype = {
    sendTo$1(sender) {
      A._extension_1_sendTyped(type$.void_Function_2_nullable_JSObject_and_nullable_List_JSObject._as(sender), "StartFileSystemServer", this.sqlite3Options, null);
    }
  };
  A.DeleteDatabase.prototype = {
    sendTo$1(sender) {
      var t1 = this.database;
      A._extension_1_sendTyped(type$.void_Function_2_nullable_JSObject_and_nullable_List_JSObject._as(sender), "DeleteDatabase", A._setArrayType([t1._0._name, t1._1], type$.JSArray_String), null);
    }
  };
  A.checkIndexedDbExists_closure.prototype = {
    call$1($event) {
      A._asJSObject($event);
      A._asJSObjectQ(this.openRequest.transaction).abort();
      this._box_0.indexedDbExists = false;
    },
    $signature: 12
  };
  A.opfsDatabases_closure.prototype = {
    call$1(data) {
      type$.JSArray_nullable_Object._as(data);
      if (1 < 0 || 1 >= data.length)
        return A.ioore(data, 1);
      return A._asJSObject(data[1]);
    },
    $signature: 53
  };
  A.DriftServerController.prototype = {
    serve$1(message) {
      var t1, t2;
      type$.ServeDriftDatabase._as(message);
      t1 = message.protocolVersion.versionCode;
      t2 = message.newSerialization;
      this.servers.putIfAbsent$2(message.databaseName, new A.DriftServerController_serve_closure(this, message)).serve$2(A.WebPortToChannel_channel(message.port, t1 >= 1, t1, t2), !t2);
    },
    openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage(databaseName, enableMigrations, initializer, sqlite3WasmUri, storage) {
      return this.openConnection$body$DriftServerController(databaseName, enableMigrations, type$.nullable_FutureOr_nullable_Uint8List_Function._as(initializer), sqlite3WasmUri, storage);
    },
    openConnection$body$DriftServerController(databaseName, enableMigrations, initializer, sqlite3WasmUri, storage) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.QueryExecutor),
        $async$returnValue, $async$self = this, vfs, t1, t2, response, file, $name, t3, ptr, db, sqlite3, $close;
      var $async$openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(A.WasmSqlite3_loadFromUrl(sqlite3WasmUri), $async$openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage);
            case 3:
              // returning from await.
              sqlite3 = $async$result;
              $close = null;
            case 4:
              // switch
              switch (storage.index) {
                case 0:
                  // goto case
                  $async$goto = 6;
                  break;
                case 1:
                  // goto case
                  $async$goto = 7;
                  break;
                case 3:
                  // goto case
                  $async$goto = 8;
                  break;
                case 2:
                  // goto case
                  $async$goto = 9;
                  break;
                case 4:
                  // goto case
                  $async$goto = 10;
                  break;
                default:
                  // goto default
                  $async$goto = 11;
                  break;
              }
              break;
            case 6:
              // case
              $async$goto = 12;
              return A._asyncAwait(A.SimpleOpfsFileSystem_loadFromStorage("drift_db/" + databaseName), $async$openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage);
            case 12:
              // returning from await.
              vfs = $async$result;
              $close = vfs.get$close();
              // goto after switch
              $async$goto = 5;
              break;
            case 7:
              // case
              $async$goto = 13;
              return A._asyncAwait($async$self._loadLockedWasmVfs$1(databaseName), $async$openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage);
            case 13:
              // returning from await.
              vfs = $async$result;
              $close = vfs.get$close();
              // goto after switch
              $async$goto = 5;
              break;
            case 8:
              // case
            case 9:
              // case
              $async$goto = 14;
              return A._asyncAwait(A.IndexedDbFileSystem_open(databaseName), $async$openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage);
            case 14:
              // returning from await.
              vfs = $async$result;
              $close = vfs.get$close();
              // goto after switch
              $async$goto = 5;
              break;
            case 10:
              // case
              vfs = A.InMemoryFileSystem$(null);
              // goto after switch
              $async$goto = 5;
              break;
            case 11:
              // default
              vfs = null;
            case 5:
              // after switch
              $async$goto = initializer != null && vfs.xAccess$2("/database", 0) === 0 ? 15 : 16;
              break;
            case 15:
              // then
              t1 = initializer.call$0();
              t2 = type$.nullable_Uint8List;
              $async$goto = 17;
              return A._asyncAwait(type$.Future_nullable_Uint8List._is(t1) ? t1 : A._Future$value(t2._as(t1), t2), $async$openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage);
            case 17:
              // returning from await.
              response = $async$result;
              if (response != null) {
                file = vfs.xOpen$2(new A.Sqlite3Filename("/database"), 4)._0;
                file.xWrite$2(response, 0);
                file.xClose$0();
              }
            case 16:
              // join
              type$.VirtualFileSystem._as(vfs);
              t1 = sqlite3.bindings;
              t1 = t1.bindings;
              $name = t1.allocateBytes$2$additionalLength(B.C_Utf8Encoder.convert$1(vfs.name), 1);
              t2 = t1.callbacks;
              t3 = t2._id++;
              t2.registeredVfs.$indexSet(0, t3, vfs);
              ptr = A._asInt(t1.sqlite3.dart_sqlite3_register_vfs($name, t3, 1));
              if (ptr === 0)
                A.throwExpression(A.StateError$("could not register vfs"));
              t1 = $.$get$DartCallbacks_sqliteVfsPointer();
              t1.$ti._eval$1("1?")._as(ptr);
              t1._jsWeakMap.set(vfs, ptr);
              t1 = A.LinkedHashMap_LinkedHashMap(type$.String, type$.CommonPreparedStatement);
              db = new A.WasmDatabase(new A._WasmDelegate(sqlite3, "/database", null, $async$self._setup, true, enableMigrations, new A.PreparedStatementsCache(t1)), false, true, new A.Lock(), new A.Lock());
              if ($close != null) {
                $async$returnValue = A.ApplyInterceptor_interceptWith(db, new A._CloseVfsOnClose($close, db));
                // goto return
                $async$goto = 1;
                break;
              } else {
                $async$returnValue = db;
                // goto return
                $async$goto = 1;
                break;
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage, $async$completer);
    },
    _loadLockedWasmVfs$1(databaseName) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.WasmVfs),
        $async$returnValue, worker, t5, t6, t1, buffer, t2, t3, t4;
      var $async$_loadLockedWasmVfs$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = init.G;
              buffer = A._asJSObject(new t1.SharedArrayBuffer(8));
              t2 = type$.JavaScriptFunction;
              t3 = t2._as(t1.Int32Array);
              t4 = type$.JSObject;
              t3 = type$.NativeInt32List._as(A.callConstructor(t3, [buffer], t4));
              A._asInt(t1.Atomics.store(t3, 0, -1));
              t3 = {clientVersion: 1, root: "drift_db/" + databaseName, synchronizationBuffer: buffer, communicationBuffer: A._asJSObject(new t1.SharedArrayBuffer(67584))};
              worker = A._asJSObject(new t1.Worker(A.Uri_base().toString$0(0)));
              new A.StartFileSystemServer(t3).sendToWorker$1(worker);
              $async$goto = 3;
              return A._asyncAwait(new A._EventStream(worker, "message", false, type$._EventStream_JSObject).get$first(0), $async$_loadLockedWasmVfs$1);
            case 3:
              // returning from await.
              t5 = A.RequestResponseSynchronizer_RequestResponseSynchronizer(A._asJSObject(t3.synchronizationBuffer));
              t3 = A._asJSObject(t3.communicationBuffer);
              t6 = A.SharedArrayBuffer_asByteData(t3, 65536, 2048);
              t1 = t2._as(t1.Uint8Array);
              t1 = type$.NativeUint8List._as(A.callConstructor(t1, [t3], t4));
              t2 = A.Context_Context("/", $.$get$Style_url());
              t4 = $.$get$BaseVirtualFileSystem__fallbackRandom();
              $async$returnValue = new A.WasmVfs(t5, new A.MessageSerializer(t3, t6, t1), t2, t4, "dart-sqlite3-vfs");
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_loadLockedWasmVfs$1, $async$completer);
    }
  };
  A.DriftServerController_serve_closure.prototype = {
    call$0() {
      var t1 = this.message,
        initPort = t1.initializationPort,
        initializer = initPort != null ? new A.DriftServerController_serve__closure(initPort) : null,
        t2 = this.$this,
        server = A.ServerImplementation$(new A.LazyDatabase(new A.DriftServerController_serve__closure0(t2, t1, initializer)), false, true),
        t3 = new A._Future($.Zone__current, type$._Future_void),
        wasmServer = new A.RunningWasmServer(t1.storage, server, new A._SyncCompleter(t3, type$._SyncCompleter_void));
      t3.whenComplete$1(new A.DriftServerController_serve__closure1(t2, t1, wasmServer));
      return wasmServer;
    },
    $signature: 54
  };
  A.DriftServerController_serve__closure.prototype = {
    call$0() {
      var t1 = new A._Future($.Zone__current, type$._Future_nullable_Uint8List),
        t2 = this.initPort;
      t2.postMessage(true);
      t2.onmessage = A._functionToJS1(new A.DriftServerController_serve___closure(new A._AsyncCompleter(t1, type$._AsyncCompleter_nullable_Uint8List)));
      return t1;
    },
    $signature: 55
  };
  A.DriftServerController_serve___closure.prototype = {
    call$1(e) {
      var data = type$.nullable_NativeUint8List._as(A._asJSObject(e).data),
        t1 = data == null ? null : data;
      this.completer.complete$1(t1);
    },
    $signature: 12
  };
  A.DriftServerController_serve__closure0.prototype = {
    call$0() {
      var t1 = this.message;
      return this.$this.openConnection$5$databaseName$enableMigrations$initializer$sqlite3WasmUri$storage(t1.databaseName, t1.enableMigrations, this.initializer, t1.sqlite3WasmUri, t1.storage);
    },
    $signature: 56
  };
  A.DriftServerController_serve__closure1.prototype = {
    call$0() {
      this.$this.servers.remove$1(0, this.message.databaseName);
      this.wasmServer.server.shutdown$0();
    },
    $signature: 6
  };
  A._CloseVfsOnClose.prototype = {
    close$1(inner) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$close$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait(inner.close$0(), $async$close$1);
            case 2:
              // returning from await.
              $async$goto = $async$self._root === inner ? 3 : 4;
              break;
            case 3:
              // then
              t1 = $async$self._shared$_close.call$0();
              $async$goto = 5;
              return A._asyncAwait(t1 instanceof A._Future ? t1 : A._Future$value(t1, type$.void), $async$close$1);
            case 5:
              // returning from await.
            case 4:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$close$1, $async$completer);
    }
  };
  A.RunningWasmServer.prototype = {
    serve$2(channel, serialize) {
      var t1, t2, t3, t4;
      ++this._connectedClients;
      t1 = type$.nullable_Object;
      t2 = channel.$ti;
      t1 = t2._eval$1("Stream<1>(Stream<1>)")._as(t2._eval$1("StreamTransformer<1,1>")._as(A._StreamHandlerTransformer$(new A.RunningWasmServer_serve_closure(this), t1, t1)).get$bind()).call$1(channel.get$stream());
      t3 = new A.CloseGuaranteeChannel(t2._eval$1("CloseGuaranteeChannel<1>"));
      t4 = t2._eval$1("_CloseGuaranteeSink<1>");
      t3.__CloseGuaranteeChannel__sink_F = t4._as(new A._CloseGuaranteeSink(t3, channel.get$sink(), t4));
      t2 = t2._eval$1("_CloseGuaranteeStream<1>");
      t3.__CloseGuaranteeChannel__stream_F = t2._as(new A._CloseGuaranteeStream(t1, t3, t2));
      this.server.serve$2$serialize(t3, serialize);
    }
  };
  A.RunningWasmServer_serve_closure.prototype = {
    call$1(sink) {
      var t1 = this.$this;
      if (--t1._connectedClients === 0)
        t1._lastClientDisconnected.complete$0();
      t1 = sink._async$_sink;
      if ((t1._state & 2) !== 0)
        A.throwExpression(A.StateError$("Stream is already closed"));
      t1.super$_BufferingStreamSubscription$_close();
    },
    $signature: 57
  };
  A.WasmCompatibility.prototype = {};
  A.CompleteIdbRequest_complete_closure1.prototype = {
    call$1($event) {
      this.completer.complete$1(this.T._as(this._this.result));
    },
    $signature: 1
  };
  A.CompleteIdbRequest_complete_closure2.prototype = {
    call$1($event) {
      var t1 = A._asJSObjectQ(this._this.error);
      if (t1 == null)
        t1 = $event;
      this.completer.completeError$1(t1);
    },
    $signature: 1
  };
  A.CompleteIdbRequest_complete_closure3.prototype = {
    call$1($event) {
      var t1 = A._asJSObjectQ(this._this.error);
      if (t1 == null)
        t1 = $event;
      this.completer.completeError$1(t1);
    },
    $signature: 1
  };
  A.SharedDriftWorker.prototype = {
    start$0() {
      A._EventStreamSubscription$(this.self, "connect", type$.nullable_void_Function_JSObject._as(new A.SharedDriftWorker_start_closure(this)), false, type$.JSObject);
    },
    _newConnection$1($event) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, clientPort;
      var $async$_newConnection$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.JSArray_nullable_Object._as($event.ports);
              clientPort = J.$index$asx(type$.List_JSObject._is(t1) ? t1 : new A.CastList(t1, A._arrayInstanceType(t1)._eval$1("CastList<1,JSObject>")), 0);
              clientPort.start();
              A._EventStreamSubscription$(clientPort, "message", type$.nullable_void_Function_JSObject._as(new A.SharedDriftWorker__newConnection_closure($async$self, clientPort)), false, type$.JSObject);
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_newConnection$1, $async$completer);
    },
    _messageFromClient$2(client, $event) {
      return this._messageFromClient$body$SharedDriftWorker(client, $event);
    },
    _messageFromClient$body$SharedDriftWorker(client, $event) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$handler = 1, $async$errorStack = [], $async$self = this, message, _0_0, dbName, result, e, t1, exception, $async$exception;
      var $async$_messageFromClient$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 3;
              message = A.WasmInitializationMessage_WasmInitializationMessage$fromJs(A._asJSObject($event.data));
              _0_0 = message;
              dbName = null;
              t1 = _0_0 instanceof A.RequestCompatibilityCheck;
              if (t1)
                dbName = _0_0.databaseName;
              $async$goto = t1 ? 7 : 8;
              break;
            case 7:
              // then
              $async$goto = 9;
              return A._asyncAwait($async$self._startFeatureDetection$1(dbName), $async$_messageFromClient$2);
            case 9:
              // returning from await.
              result = $async$result;
              result.sendToPort$1(client);
              // goto break $label0$0
              $async$goto = 6;
              break;
            case 8:
              // join
              if (_0_0 instanceof A.ServeDriftDatabase && B.WasmStorageImplementation_2_sharedIndexedDb === _0_0.storage) {
                $async$self._servers.serve$1(message);
                // goto break $label0$0
                $async$goto = 6;
                break;
              }
              if (_0_0 instanceof A.ServeDriftDatabase) {
                t1 = $async$self._dedicatedWorker;
                t1.toString;
                message.sendToWorker$1(t1);
                // goto break $label0$0
                $async$goto = 6;
                break;
              }
              t1 = A.ArgumentError$("Unknown message", null);
              throw A.wrapException(t1);
            case 6:
              // break $label0$0
              $async$handler = 1;
              // goto after finally
              $async$goto = 5;
              break;
            case 3:
              // catch
              $async$handler = 2;
              $async$exception = $async$errorStack.pop();
              e = A.unwrapException($async$exception);
              new A.WorkerError(J.toString$0$(e)).sendToPort$1(client);
              client.close();
              // goto after finally
              $async$goto = 5;
              break;
            case 2:
              // uncaught
              // goto rethrow
              $async$goto = 1;
              break;
            case 5:
              // after finally
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_messageFromClient$2, $async$completer);
    },
    _startFeatureDetection$1(databaseName) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SharedWorkerCompatibilityResult),
        $async$returnValue, $async$self = this, indexedDbExists, t2, worker, t3, t4, t5, t1, _this, canUseIndexedDb, $async$temp1, $async$temp2, $async$temp3, $async$temp4;
      var $async$_startFeatureDetection$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = init.G;
              _this = "Worker" in t1;
              $async$goto = 3;
              return A._asyncAwait(A.checkIndexedDbSupport(), $async$_startFeatureDetection$1);
            case 3:
              // returning from await.
              canUseIndexedDb = $async$result;
              $async$goto = !_this ? 4 : 6;
              break;
            case 4:
              // then
              t1 = $async$self._servers.servers.$index(0, databaseName);
              if (t1 == null)
                indexedDbExists = null;
              else {
                t1 = t1.storage;
                t1 = t1 === B.WasmStorageImplementation_2_sharedIndexedDb || t1 === B.WasmStorageImplementation_3_unsafeIndexedDb;
                indexedDbExists = t1;
              }
              $async$temp1 = A;
              $async$temp2 = canUseIndexedDb;
              $async$temp3 = B.List_empty4;
              $async$temp4 = B.ProtocolVersion_4_4_v4;
              $async$goto = indexedDbExists == null ? 7 : 9;
              break;
            case 7:
              // then
              $async$goto = 10;
              return A._asyncAwait(A.checkIndexedDbExists(databaseName), $async$_startFeatureDetection$1);
            case 10:
              // returning from await.
              // goto join
              $async$goto = 8;
              break;
            case 9:
              // else
              $async$result = indexedDbExists;
            case 8:
              // join
              $async$returnValue = new $async$temp1.SharedWorkerCompatibilityResult(false, false, $async$temp2, $async$temp3, $async$temp4, $async$result, false);
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 5;
              break;
            case 6:
              // else
              t2 = {};
              worker = $async$self._dedicatedWorker;
              if (worker == null)
                worker = $async$self._dedicatedWorker = A._asJSObject(new t1.Worker(A.Uri_base().toString$0(0)));
              new A.RequestCompatibilityCheck(databaseName).sendToWorker$1(worker);
              t1 = new A._Future($.Zone__current, type$._Future_SharedWorkerCompatibilityResult);
              t2.errorSubscription = t2.messageSubscription = null;
              t3 = new A.SharedDriftWorker__startFeatureDetection_result(t2, new A._AsyncCompleter(t1, type$._AsyncCompleter_SharedWorkerCompatibilityResult), canUseIndexedDb);
              t4 = type$.nullable_void_Function_JSObject;
              t5 = type$.JSObject;
              t2.messageSubscription = A._EventStreamSubscription$(worker, "message", t4._as(new A.SharedDriftWorker__startFeatureDetection_closure(t3)), false, t5);
              t2.errorSubscription = A._EventStreamSubscription$(worker, "error", t4._as(new A.SharedDriftWorker__startFeatureDetection_closure0($async$self, t3, worker)), false, t5);
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 5:
              // join
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_startFeatureDetection$1, $async$completer);
    }
  };
  A.SharedDriftWorker_start_closure.prototype = {
    call$1(e) {
      return this.$this._newConnection$1(e);
    },
    $signature: 1
  };
  A.SharedDriftWorker__newConnection_closure.prototype = {
    call$1($event) {
      return this.$this._messageFromClient$2(this.clientPort, $event);
    },
    $signature: 1
  };
  A.SharedDriftWorker__startFeatureDetection_result.prototype = {
    call$4(opfsAvailable, opfsExists, indexedDbExists, databases) {
      var t1, t2;
      type$.List_Record_2_WebStorageApi_and_String._as(databases);
      t1 = this.completer;
      if ((t1.future._state & 30) === 0) {
        t1.complete$1(new A.SharedWorkerCompatibilityResult(true, opfsAvailable, this.canUseIndexedDb, databases, B.ProtocolVersion_4_4_v4, indexedDbExists, opfsExists));
        t1 = this._box_0;
        t2 = t1.messageSubscription;
        if (t2 != null)
          t2.cancel$0();
        t1 = t1.errorSubscription;
        if (t1 != null)
          t1.cancel$0();
      }
    },
    $signature: 58
  };
  A.SharedDriftWorker__startFeatureDetection_closure.prototype = {
    call$1($event) {
      var compatibilityResult = type$.DedicatedWorkerCompatibilityResult._as(A.WasmInitializationMessage_WasmInitializationMessage$fromJs(A._asJSObject($event.data)));
      this.result.call$4(compatibilityResult.canAccessOpfs, compatibilityResult.opfsExists, compatibilityResult.indexedDbExists, compatibilityResult.existingDatabases);
    },
    $signature: 1
  };
  A.SharedDriftWorker__startFeatureDetection_closure0.prototype = {
    call$1($event) {
      this.result.call$4(false, false, false, B.List_empty4);
      this.worker.terminate();
      this.$this._dedicatedWorker = null;
    },
    $signature: 1
  };
  A.WasmStorageImplementation.prototype = {
    _enumToString$0() {
      return "WasmStorageImplementation." + this._name;
    }
  };
  A.WebStorageApi.prototype = {
    _enumToString$0() {
      return "WebStorageApi." + this._name;
    }
  };
  A.WasmDatabase.prototype = {};
  A._WasmDelegate.prototype = {
    openDatabase$0() {
      var t1 = this._sqlite3.open$1(this._path);
      return t1;
    },
    _flush$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        t1;
      var $async$_flush$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = A._Future$value(null, type$.void);
              $async$goto = 2;
              return A._asyncAwait(t1, $async$_flush$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_flush$0, $async$completer);
    },
    _runWithArgs$2(statement, args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.dynamic),
        $async$self = this;
      var $async$_runWithArgs$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self.runWithArgsSync$2(statement, args);
              $async$goto = !$async$self.isInTransaction ? 2 : 3;
              break;
            case 2:
              // then
              $async$goto = 4;
              return A._asyncAwait($async$self._flush$0(), $async$_runWithArgs$2);
            case 4:
              // returning from await.
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_runWithArgs$2, $async$completer);
    },
    runCustom$2(statement, args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$runCustom$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait($async$self._runWithArgs$2(statement, args), $async$runCustom$2);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$runCustom$2, $async$completer);
    },
    runInsert$2(statement, args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.int),
        $async$returnValue, $async$self = this, t1;
      var $async$runInsert$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._runWithArgs$2(statement, args), $async$runInsert$2);
            case 3:
              // returning from await.
              t1 = $async$self._database.database;
              $async$returnValue = A._asInt(A._asDouble(init.G.Number(type$.JavaScriptBigInt._as(t1.bindings.sqlite3.sqlite3_last_insert_rowid(t1.db)))));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$runInsert$2, $async$completer);
    },
    runUpdate$2(statement, args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.int),
        $async$returnValue, $async$self = this, t1;
      var $async$runUpdate$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._runWithArgs$2(statement, args), $async$runUpdate$2);
            case 3:
              // returning from await.
              t1 = $async$self._database.database;
              $async$returnValue = A._asInt(t1.bindings.sqlite3.sqlite3_changes(t1.db));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$runUpdate$2, $async$completer);
    },
    runBatched$1(statements) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$runBatched$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self.runBatchSync$1(statements);
              $async$goto = !$async$self.isInTransaction ? 2 : 3;
              break;
            case 2:
              // then
              $async$goto = 4;
              return A._asyncAwait($async$self._flush$0(), $async$runBatched$1);
            case 4:
              // returning from await.
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$runBatched$1, $async$completer);
    },
    close$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$close$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait($async$self.super$Sqlite3Delegate$close(), $async$close$0);
            case 2:
              // returning from await.
              $async$self._database.dispose$0();
              $async$goto = 3;
              return A._asyncAwait($async$self._flush$0(), $async$close$0);
            case 3:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$close$0, $async$completer);
    }
  };
  A.Context.prototype = {
    absolute$15(part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15) {
      var t1;
      A._validateArgList("absolute", A._setArrayType([part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15], type$.JSArray_nullable_String));
      t1 = this.style;
      t1 = t1.rootLength$1(part1) > 0 && !t1.isRootRelative$1(part1);
      if (t1)
        return part1;
      t1 = this._context$_current;
      return this.join$16(0, t1 == null ? A.current() : t1, part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15);
    },
    absolute$1(part1) {
      var _null = null;
      return this.absolute$15(part1, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null);
    },
    join$16(_, part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15, part16) {
      var parts = A._setArrayType([part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15, part16], type$.JSArray_nullable_String);
      A._validateArgList("join", parts);
      return this.joinAll$1(new A.WhereTypeIterable(parts, type$.WhereTypeIterable_String));
    },
    join$2(_, part1, part2) {
      var _null = null;
      return this.join$16(0, part1, part2, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null);
    },
    joinAll$1(parts) {
      var t1, t2, t3, needsSeparator, isAbsoluteAndNotRootRelative, t4, t5, parsed, path, t6;
      type$.Iterable_String._as(parts);
      for (t1 = parts.$ti, t2 = t1._eval$1("bool(Iterable.E)")._as(new A.Context_joinAll_closure()), t3 = parts.get$iterator(0), t1 = new A.WhereIterator(t3, t2, t1._eval$1("WhereIterator<Iterable.E>")), t2 = this.style, needsSeparator = false, isAbsoluteAndNotRootRelative = false, t4 = ""; t1.moveNext$0();) {
        t5 = t3.get$current();
        if (t2.isRootRelative$1(t5) && isAbsoluteAndNotRootRelative) {
          parsed = A.ParsedPath_ParsedPath$parse(t5, t2);
          path = t4.charCodeAt(0) == 0 ? t4 : t4;
          t4 = B.JSString_methods.substring$2(path, 0, t2.rootLength$2$withDrive(path, true));
          parsed.root = t4;
          if (t2.needsSeparator$1(t4))
            B.JSArray_methods.$indexSet(parsed.separators, 0, t2.get$separator());
          t4 = parsed.toString$0(0);
        } else if (t2.rootLength$1(t5) > 0) {
          isAbsoluteAndNotRootRelative = !t2.isRootRelative$1(t5);
          t4 = t5;
        } else {
          t6 = t5.length;
          if (t6 !== 0) {
            if (0 >= t6)
              return A.ioore(t5, 0);
            t6 = t2.containsSeparator$1(t5[0]);
          } else
            t6 = false;
          if (!t6)
            if (needsSeparator)
              t4 += t2.get$separator();
          t4 += t5;
        }
        needsSeparator = t2.needsSeparator$1(t5);
      }
      return t4.charCodeAt(0) == 0 ? t4 : t4;
    },
    split$1(_, path) {
      var parsed = A.ParsedPath_ParsedPath$parse(path, this.style),
        t1 = parsed.parts,
        t2 = A._arrayInstanceType(t1),
        t3 = t2._eval$1("WhereIterable<1>");
      t1 = A.List_List$_of(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.Context_split_closure()), t3), t3._eval$1("Iterable.E"));
      parsed.set$parts(t1);
      t1 = parsed.root;
      if (t1 != null)
        B.JSArray_methods.insert$2(parsed.parts, 0, t1);
      return parsed.parts;
    },
    normalize$1(path) {
      var parsed;
      if (!this._needsNormalization$1(path))
        return path;
      parsed = A.ParsedPath_ParsedPath$parse(path, this.style);
      parsed.normalize$0();
      return parsed.toString$0(0);
    },
    _needsNormalization$1(path) {
      var t2, i, start, previous, previousPrevious, codeUnit, t3,
        t1 = this.style,
        root = t1.rootLength$1(path);
      if (root !== 0) {
        if (t1 === $.$get$Style_windows())
          for (t2 = path.length, i = 0; i < root; ++i) {
            if (!(i < t2))
              return A.ioore(path, i);
            if (path.charCodeAt(i) === 47)
              return true;
          }
        start = root;
        previous = 47;
      } else {
        start = 0;
        previous = null;
      }
      for (t2 = path.length, i = start, previousPrevious = null; i < t2; ++i, previousPrevious = previous, previous = codeUnit) {
        if (!(i >= 0))
          return A.ioore(path, i);
        codeUnit = path.charCodeAt(i);
        if (t1.isSeparator$1(codeUnit)) {
          if (t1 === $.$get$Style_windows() && codeUnit === 47)
            return true;
          if (previous != null && t1.isSeparator$1(previous))
            return true;
          if (previous === 46)
            t3 = previousPrevious == null || previousPrevious === 46 || t1.isSeparator$1(previousPrevious);
          else
            t3 = false;
          if (t3)
            return true;
        }
      }
      if (previous == null)
        return true;
      if (t1.isSeparator$1(previous))
        return true;
      if (previous === 46)
        t1 = previousPrevious == null || t1.isSeparator$1(previousPrevious) || previousPrevious === 46;
      else
        t1 = false;
      if (t1)
        return true;
      return false;
    },
    relative$2$from(path, from) {
      var fromParsed, pathParsed, t2, t3, t4, t5, t6, _this = this,
        _s26_ = 'Unable to find a path to "',
        t1 = from == null;
      if (t1 && _this.style.rootLength$1(path) <= 0)
        return _this.normalize$1(path);
      if (t1) {
        t1 = _this._context$_current;
        from = t1 == null ? A.current() : t1;
      } else
        from = _this.absolute$1(from);
      t1 = _this.style;
      if (t1.rootLength$1(from) <= 0 && t1.rootLength$1(path) > 0)
        return _this.normalize$1(path);
      if (t1.rootLength$1(path) <= 0 || t1.isRootRelative$1(path))
        path = _this.absolute$1(path);
      if (t1.rootLength$1(path) <= 0 && t1.rootLength$1(from) > 0)
        throw A.wrapException(A.PathException$(_s26_ + path + '" from "' + from + '".'));
      fromParsed = A.ParsedPath_ParsedPath$parse(from, t1);
      fromParsed.normalize$0();
      pathParsed = A.ParsedPath_ParsedPath$parse(path, t1);
      pathParsed.normalize$0();
      t2 = fromParsed.parts;
      t3 = t2.length;
      if (t3 !== 0) {
        if (0 >= t3)
          return A.ioore(t2, 0);
        t2 = t2[0] === ".";
      } else
        t2 = false;
      if (t2)
        return pathParsed.toString$0(0);
      t2 = fromParsed.root;
      t3 = pathParsed.root;
      if (t2 != t3)
        t2 = t2 == null || t3 == null || !t1.pathsEqual$2(t2, t3);
      else
        t2 = false;
      if (t2)
        return pathParsed.toString$0(0);
      for (;;) {
        t2 = fromParsed.parts;
        t3 = t2.length;
        t4 = false;
        if (t3 !== 0) {
          t5 = pathParsed.parts;
          t6 = t5.length;
          if (t6 !== 0) {
            if (0 >= t3)
              return A.ioore(t2, 0);
            t2 = t2[0];
            if (0 >= t6)
              return A.ioore(t5, 0);
            t5 = t1.pathsEqual$2(t2, t5[0]);
            t2 = t5;
          } else
            t2 = t4;
        } else
          t2 = t4;
        if (!t2)
          break;
        B.JSArray_methods.removeAt$1(fromParsed.parts, 0);
        B.JSArray_methods.removeAt$1(fromParsed.separators, 1);
        B.JSArray_methods.removeAt$1(pathParsed.parts, 0);
        B.JSArray_methods.removeAt$1(pathParsed.separators, 1);
      }
      t2 = fromParsed.parts;
      t3 = t2.length;
      if (t3 !== 0) {
        if (0 >= t3)
          return A.ioore(t2, 0);
        t2 = t2[0] === "..";
      } else
        t2 = false;
      if (t2)
        throw A.wrapException(A.PathException$(_s26_ + path + '" from "' + from + '".'));
      t2 = type$.String;
      B.JSArray_methods.insertAll$2(pathParsed.parts, 0, A.List_List$filled(t3, "..", false, t2));
      B.JSArray_methods.$indexSet(pathParsed.separators, 0, "");
      B.JSArray_methods.insertAll$2(pathParsed.separators, 1, A.List_List$filled(fromParsed.parts.length, t1.get$separator(), false, t2));
      t1 = pathParsed.parts;
      t2 = t1.length;
      if (t2 === 0)
        return ".";
      if (t2 > 1 && B.JSArray_methods.get$last(t1) === ".") {
        B.JSArray_methods.removeLast$0(pathParsed.parts);
        t1 = pathParsed.separators;
        if (0 >= t1.length)
          return A.ioore(t1, -1);
        t1.pop();
        if (0 >= t1.length)
          return A.ioore(t1, -1);
        t1.pop();
        B.JSArray_methods.add$1(t1, "");
      }
      pathParsed.root = "";
      pathParsed.removeTrailingSeparators$0();
      return pathParsed.toString$0(0);
    },
    relative$1(path) {
      return this.relative$2$from(path, null);
    },
    _isWithinOrEquals$2($parent, child) {
      var relative, t1, parentIsAbsolute, childIsAbsolute, childIsRootRelative, parentIsRootRelative, result, exception, _this = this;
      $parent = A._asString($parent);
      child = A._asString(child);
      t1 = _this.style;
      parentIsAbsolute = t1.rootLength$1(A._asString($parent)) > 0;
      childIsAbsolute = t1.rootLength$1(A._asString(child)) > 0;
      if (parentIsAbsolute && !childIsAbsolute) {
        child = _this.absolute$1(child);
        if (t1.isRootRelative$1($parent))
          $parent = _this.absolute$1($parent);
      } else if (childIsAbsolute && !parentIsAbsolute) {
        $parent = _this.absolute$1($parent);
        if (t1.isRootRelative$1(child))
          child = _this.absolute$1(child);
      } else if (childIsAbsolute && parentIsAbsolute) {
        childIsRootRelative = t1.isRootRelative$1(child);
        parentIsRootRelative = t1.isRootRelative$1($parent);
        if (childIsRootRelative && !parentIsRootRelative)
          child = _this.absolute$1(child);
        else if (parentIsRootRelative && !childIsRootRelative)
          $parent = _this.absolute$1($parent);
      }
      result = _this._isWithinOrEqualsFast$2($parent, child);
      if (result !== B._PathRelation_inconclusive)
        return result;
      relative = null;
      try {
        relative = _this.relative$2$from(child, $parent);
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.PathException)
          return B._PathRelation_different;
        else
          throw exception;
      }
      if (t1.rootLength$1(A._asString(relative)) > 0)
        return B._PathRelation_different;
      if (J.$eq$(relative, "."))
        return B._PathRelation_equal;
      if (J.$eq$(relative, ".."))
        return B._PathRelation_different;
      return J.get$length$asx(relative) >= 3 && J.startsWith$1$s(relative, "..") && t1.isSeparator$1(J.codeUnitAt$1$s(relative, 2)) ? B._PathRelation_different : B._PathRelation_within;
    },
    _isWithinOrEqualsFast$2($parent, child) {
      var t1, parentRootLength, childRootLength, t2, t3, i, childIndex, parentIndex, lastCodeUnit, lastParentSeparator, parentCodeUnit, childCodeUnit, parentIndex0, t4, direction, _this = this;
      if ($parent === ".")
        $parent = "";
      t1 = _this.style;
      parentRootLength = t1.rootLength$1($parent);
      childRootLength = t1.rootLength$1(child);
      if (parentRootLength !== childRootLength)
        return B._PathRelation_different;
      for (t2 = $parent.length, t3 = child.length, i = 0; i < parentRootLength; ++i) {
        if (!(i < t2))
          return A.ioore($parent, i);
        if (!(i < t3))
          return A.ioore(child, i);
        if (!t1.codeUnitsEqual$2($parent.charCodeAt(i), child.charCodeAt(i)))
          return B._PathRelation_different;
      }
      childIndex = childRootLength;
      parentIndex = parentRootLength;
      lastCodeUnit = 47;
      lastParentSeparator = null;
      for (;;) {
        if (!(parentIndex < t2 && childIndex < t3))
          break;
        c$0: {
          if (!(parentIndex >= 0 && parentIndex < t2))
            return A.ioore($parent, parentIndex);
          parentCodeUnit = $parent.charCodeAt(parentIndex);
          if (!(childIndex >= 0 && childIndex < t3))
            return A.ioore(child, childIndex);
          childCodeUnit = child.charCodeAt(childIndex);
          if (t1.codeUnitsEqual$2(parentCodeUnit, childCodeUnit)) {
            if (t1.isSeparator$1(parentCodeUnit))
              lastParentSeparator = parentIndex;
            ++parentIndex;
            ++childIndex;
            lastCodeUnit = parentCodeUnit;
            break c$0;
          }
          if (t1.isSeparator$1(parentCodeUnit) && t1.isSeparator$1(lastCodeUnit)) {
            parentIndex0 = parentIndex + 1;
            lastParentSeparator = parentIndex;
            parentIndex = parentIndex0;
            break c$0;
          } else if (t1.isSeparator$1(childCodeUnit) && t1.isSeparator$1(lastCodeUnit)) {
            ++childIndex;
            break c$0;
          }
          if (parentCodeUnit === 46 && t1.isSeparator$1(lastCodeUnit)) {
            ++parentIndex;
            if (parentIndex === t2)
              break;
            if (!(parentIndex < t2))
              return A.ioore($parent, parentIndex);
            parentCodeUnit = $parent.charCodeAt(parentIndex);
            if (t1.isSeparator$1(parentCodeUnit)) {
              parentIndex0 = parentIndex + 1;
              lastParentSeparator = parentIndex;
              parentIndex = parentIndex0;
              break c$0;
            }
            if (parentCodeUnit === 46) {
              ++parentIndex;
              if (parentIndex !== t2) {
                if (!(parentIndex < t2))
                  return A.ioore($parent, parentIndex);
                t4 = t1.isSeparator$1($parent.charCodeAt(parentIndex));
              } else
                t4 = true;
              if (t4)
                return B._PathRelation_inconclusive;
            }
          }
          if (childCodeUnit === 46 && t1.isSeparator$1(lastCodeUnit)) {
            ++childIndex;
            if (childIndex === t3)
              break;
            if (!(childIndex < t3))
              return A.ioore(child, childIndex);
            childCodeUnit = child.charCodeAt(childIndex);
            if (t1.isSeparator$1(childCodeUnit)) {
              ++childIndex;
              break c$0;
            }
            if (childCodeUnit === 46) {
              ++childIndex;
              if (childIndex !== t3) {
                if (!(childIndex < t3))
                  return A.ioore(child, childIndex);
                t2 = t1.isSeparator$1(child.charCodeAt(childIndex));
                t1 = t2;
              } else
                t1 = true;
              if (t1)
                return B._PathRelation_inconclusive;
            }
          }
          if (_this._pathDirection$2(child, childIndex) !== B._PathDirection_Wme)
            return B._PathRelation_inconclusive;
          if (_this._pathDirection$2($parent, parentIndex) !== B._PathDirection_Wme)
            return B._PathRelation_inconclusive;
          return B._PathRelation_different;
        }
      }
      if (childIndex === t3) {
        if (parentIndex !== t2) {
          if (!(parentIndex >= 0 && parentIndex < t2))
            return A.ioore($parent, parentIndex);
          t1 = t1.isSeparator$1($parent.charCodeAt(parentIndex));
        } else
          t1 = true;
        if (t1)
          lastParentSeparator = parentIndex;
        else if (lastParentSeparator == null)
          lastParentSeparator = Math.max(0, parentRootLength - 1);
        direction = _this._pathDirection$2($parent, lastParentSeparator);
        if (direction === B._PathDirection_dMN)
          return B._PathRelation_equal;
        return direction === B._PathDirection_vgO ? B._PathRelation_inconclusive : B._PathRelation_different;
      }
      direction = _this._pathDirection$2(child, childIndex);
      if (direction === B._PathDirection_dMN)
        return B._PathRelation_equal;
      if (direction === B._PathDirection_vgO)
        return B._PathRelation_inconclusive;
      if (!(childIndex >= 0 && childIndex < t3))
        return A.ioore(child, childIndex);
      return t1.isSeparator$1(child.charCodeAt(childIndex)) || t1.isSeparator$1(lastCodeUnit) ? B._PathRelation_within : B._PathRelation_different;
    },
    _pathDirection$2(path, index) {
      var t1, t2, i, depth, reachedRoot, t3, i0, t4;
      for (t1 = path.length, t2 = this.style, i = index, depth = 0, reachedRoot = false; i < t1;) {
        for (;;) {
          if (i < t1) {
            if (!(i >= 0))
              return A.ioore(path, i);
            t3 = t2.isSeparator$1(path.charCodeAt(i));
          } else
            t3 = false;
          if (!t3)
            break;
          ++i;
        }
        if (i === t1)
          break;
        i0 = i;
        for (;;) {
          if (i0 < t1) {
            if (!(i0 >= 0))
              return A.ioore(path, i0);
            t3 = !t2.isSeparator$1(path.charCodeAt(i0));
          } else
            t3 = false;
          if (!t3)
            break;
          ++i0;
        }
        t3 = i0 - i;
        if (t3 === 1) {
          if (!(i >= 0 && i < t1))
            return A.ioore(path, i);
          t4 = path.charCodeAt(i) === 46;
        } else
          t4 = false;
        if (!t4) {
          t4 = false;
          if (t3 === 2) {
            if (!(i >= 0 && i < t1))
              return A.ioore(path, i);
            if (path.charCodeAt(i) === 46) {
              t3 = i + 1;
              if (!(t3 < t1))
                return A.ioore(path, t3);
              t3 = path.charCodeAt(t3) === 46;
            } else
              t3 = t4;
          } else
            t3 = t4;
          if (t3) {
            --depth;
            if (depth < 0)
              break;
            if (depth === 0)
              reachedRoot = true;
          } else
            ++depth;
        }
        if (i0 === t1)
          break;
        i = i0 + 1;
      }
      if (depth < 0)
        return B._PathDirection_vgO;
      if (depth === 0)
        return B._PathDirection_dMN;
      if (reachedRoot)
        return B._PathDirection_6kc;
      return B._PathDirection_Wme;
    },
    toUri$1(path) {
      var t2,
        t1 = this.style;
      if (t1.rootLength$1(path) <= 0)
        return t1.relativePathToUri$1(path);
      else {
        t2 = this._context$_current;
        return t1.absolutePathToUri$1(this.join$2(0, t2 == null ? A.current() : t2, path));
      }
    },
    prettyUri$1(uri) {
      var path, rel, _this = this,
        typedUri = A._parseUri(uri);
      if (typedUri.get$scheme() === "file" && _this.style === $.$get$Style_url())
        return typedUri.toString$0(0);
      else if (typedUri.get$scheme() !== "file" && typedUri.get$scheme() !== "" && _this.style !== $.$get$Style_url())
        return typedUri.toString$0(0);
      path = _this.normalize$1(_this.style.pathFromUri$1(A._parseUri(typedUri)));
      rel = _this.relative$1(path);
      return _this.split$1(0, rel).length > _this.split$1(0, path).length ? path : rel;
    }
  };
  A.Context_joinAll_closure.prototype = {
    call$1(part) {
      return A._asString(part) !== "";
    },
    $signature: 3
  };
  A.Context_split_closure.prototype = {
    call$1(part) {
      return A._asString(part).length !== 0;
    },
    $signature: 3
  };
  A._validateArgList_closure.prototype = {
    call$1(arg) {
      A._asStringQ(arg);
      return arg == null ? "null" : '"' + arg + '"';
    },
    $signature: 60
  };
  A._PathDirection.prototype = {
    toString$0(_) {
      return this.name;
    }
  };
  A._PathRelation.prototype = {
    toString$0(_) {
      return this.name;
    }
  };
  A.InternalStyle.prototype = {
    getRoot$1(path) {
      var t1,
        $length = this.rootLength$1(path);
      if ($length > 0)
        return B.JSString_methods.substring$2(path, 0, $length);
      if (this.isRootRelative$1(path)) {
        if (0 >= path.length)
          return A.ioore(path, 0);
        t1 = path[0];
      } else
        t1 = null;
      return t1;
    },
    relativePathToUri$1(path) {
      var segments, t2, _null = null,
        t1 = path.length;
      if (t1 === 0)
        return A._Uri__Uri(_null, _null, _null, _null);
      segments = A.Context_Context(_null, this).split$1(0, path);
      t2 = t1 - 1;
      if (!(t2 >= 0))
        return A.ioore(path, t2);
      if (this.isSeparator$1(path.charCodeAt(t2)))
        B.JSArray_methods.add$1(segments, "");
      return A._Uri__Uri(_null, _null, segments, _null);
    },
    codeUnitsEqual$2(codeUnit1, codeUnit2) {
      return codeUnit1 === codeUnit2;
    },
    pathsEqual$2(path1, path2) {
      return path1 === path2;
    }
  };
  A.ParsedPath.prototype = {
    get$hasTrailingSeparator() {
      var t1 = this.parts;
      if (t1.length !== 0)
        t1 = B.JSArray_methods.get$last(t1) === "" || B.JSArray_methods.get$last(this.separators) !== "";
      else
        t1 = false;
      return t1;
    },
    removeTrailingSeparators$0() {
      var t1, t2, _this = this;
      for (;;) {
        t1 = _this.parts;
        if (!(t1.length !== 0 && B.JSArray_methods.get$last(t1) === ""))
          break;
        B.JSArray_methods.removeLast$0(_this.parts);
        t1 = _this.separators;
        if (0 >= t1.length)
          return A.ioore(t1, -1);
        t1.pop();
      }
      t1 = _this.separators;
      t2 = t1.length;
      if (t2 !== 0)
        B.JSArray_methods.$indexSet(t1, t2 - 1, "");
    },
    normalize$0() {
      var t1, t2, leadingDoubles, _i, part, t3, _this = this,
        newParts = A._setArrayType([], type$.JSArray_String);
      for (t1 = _this.parts, t2 = t1.length, leadingDoubles = 0, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        part = t1[_i];
        if (!(part === "." || part === ""))
          if (part === "..") {
            t3 = newParts.length;
            if (t3 !== 0) {
              if (0 >= t3)
                return A.ioore(newParts, -1);
              newParts.pop();
            } else
              ++leadingDoubles;
          } else
            B.JSArray_methods.add$1(newParts, part);
      }
      if (_this.root == null)
        B.JSArray_methods.insertAll$2(newParts, 0, A.List_List$filled(leadingDoubles, "..", false, type$.String));
      if (newParts.length === 0 && _this.root == null)
        B.JSArray_methods.add$1(newParts, ".");
      _this.parts = newParts;
      t1 = _this.style;
      _this.separators = A.List_List$filled(newParts.length + 1, t1.get$separator(), true, type$.String);
      t2 = _this.root;
      if (t2 == null || newParts.length === 0 || !t1.needsSeparator$1(t2))
        B.JSArray_methods.$indexSet(_this.separators, 0, "");
      t2 = _this.root;
      if (t2 != null && t1 === $.$get$Style_windows())
        _this.root = A.stringReplaceAllUnchecked(t2, "/", "\\");
      _this.removeTrailingSeparators$0();
    },
    toString$0(_) {
      var t2, t3, t4, t5, i,
        t1 = this.root;
      t1 = t1 != null ? t1 : "";
      for (t2 = this.parts, t3 = t2.length, t4 = this.separators, t5 = t4.length, i = 0; i < t3; ++i) {
        if (!(i < t5))
          return A.ioore(t4, i);
        t1 = t1 + t4[i] + t2[i];
      }
      t1 += B.JSArray_methods.get$last(t4);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    set$parts(parts) {
      this.parts = type$.List_String._as(parts);
    }
  };
  A.PathException.prototype = {
    toString$0(_) {
      return "PathException: " + this.message;
    },
    $isException: 1
  };
  A.Style.prototype = {
    toString$0(_) {
      return this.get$name();
    }
  };
  A.PosixStyle.prototype = {
    containsSeparator$1(path) {
      return B.JSString_methods.contains$1(path, "/");
    },
    isSeparator$1(codeUnit) {
      return codeUnit === 47;
    },
    needsSeparator$1(path) {
      var t2,
        t1 = path.length;
      if (t1 !== 0) {
        t2 = t1 - 1;
        if (!(t2 >= 0))
          return A.ioore(path, t2);
        t2 = path.charCodeAt(t2) !== 47;
        t1 = t2;
      } else
        t1 = false;
      return t1;
    },
    rootLength$2$withDrive(path, withDrive) {
      var t1 = path.length;
      if (t1 !== 0) {
        if (0 >= t1)
          return A.ioore(path, 0);
        t1 = path.charCodeAt(0) === 47;
      } else
        t1 = false;
      if (t1)
        return 1;
      return 0;
    },
    rootLength$1(path) {
      return this.rootLength$2$withDrive(path, false);
    },
    isRootRelative$1(path) {
      return false;
    },
    pathFromUri$1(uri) {
      var t1;
      if (uri.get$scheme() === "" || uri.get$scheme() === "file") {
        t1 = uri.get$path();
        return A._Uri__uriDecode(t1, 0, t1.length, B.C_Utf8Codec, false);
      }
      throw A.wrapException(A.ArgumentError$("Uri " + uri.toString$0(0) + " must have scheme 'file:'.", null));
    },
    absolutePathToUri$1(path) {
      var parsed = A.ParsedPath_ParsedPath$parse(path, this),
        t1 = parsed.parts;
      if (t1.length === 0)
        B.JSArray_methods.addAll$1(t1, A._setArrayType(["", ""], type$.JSArray_String));
      else if (parsed.get$hasTrailingSeparator())
        B.JSArray_methods.add$1(parsed.parts, "");
      return A._Uri__Uri(null, null, parsed.parts, "file");
    },
    get$name() {
      return "posix";
    },
    get$separator() {
      return "/";
    }
  };
  A.UrlStyle.prototype = {
    containsSeparator$1(path) {
      return B.JSString_methods.contains$1(path, "/");
    },
    isSeparator$1(codeUnit) {
      return codeUnit === 47;
    },
    needsSeparator$1(path) {
      var t2,
        t1 = path.length;
      if (t1 === 0)
        return false;
      t2 = t1 - 1;
      if (!(t2 >= 0))
        return A.ioore(path, t2);
      if (path.charCodeAt(t2) !== 47)
        return true;
      return B.JSString_methods.endsWith$1(path, "://") && this.rootLength$1(path) === t1;
    },
    rootLength$2$withDrive(path, withDrive) {
      var i, codeUnit, index,
        t1 = path.length;
      if (t1 === 0)
        return 0;
      if (0 >= t1)
        return A.ioore(path, 0);
      if (path.charCodeAt(0) === 47)
        return 1;
      for (i = 0; i < t1; ++i) {
        codeUnit = path.charCodeAt(i);
        if (codeUnit === 47)
          return 0;
        if (codeUnit === 58) {
          if (i === 0)
            return 0;
          index = B.JSString_methods.indexOf$2(path, "/", B.JSString_methods.startsWith$2(path, "//", i + 1) ? i + 3 : i);
          if (index <= 0)
            return t1;
          if (!withDrive || t1 < index + 3)
            return index;
          if (!B.JSString_methods.startsWith$1(path, "file://"))
            return index;
          t1 = A.driveLetterEnd(path, index + 1);
          return t1 == null ? index : t1;
        }
      }
      return 0;
    },
    rootLength$1(path) {
      return this.rootLength$2$withDrive(path, false);
    },
    isRootRelative$1(path) {
      var t1 = path.length;
      if (t1 !== 0) {
        if (0 >= t1)
          return A.ioore(path, 0);
        t1 = path.charCodeAt(0) === 47;
      } else
        t1 = false;
      return t1;
    },
    pathFromUri$1(uri) {
      return uri.toString$0(0);
    },
    relativePathToUri$1(path) {
      return A.Uri_parse(path);
    },
    absolutePathToUri$1(path) {
      return A.Uri_parse(path);
    },
    get$name() {
      return "url";
    },
    get$separator() {
      return "/";
    }
  };
  A.WindowsStyle.prototype = {
    containsSeparator$1(path) {
      return B.JSString_methods.contains$1(path, "/");
    },
    isSeparator$1(codeUnit) {
      return codeUnit === 47 || codeUnit === 92;
    },
    needsSeparator$1(path) {
      var t2,
        t1 = path.length;
      if (t1 === 0)
        return false;
      t2 = t1 - 1;
      if (!(t2 >= 0))
        return A.ioore(path, t2);
      t2 = path.charCodeAt(t2);
      return !(t2 === 47 || t2 === 92);
    },
    rootLength$2$withDrive(path, withDrive) {
      var t2, index,
        t1 = path.length;
      if (t1 === 0)
        return 0;
      if (0 >= t1)
        return A.ioore(path, 0);
      if (path.charCodeAt(0) === 47)
        return 1;
      if (path.charCodeAt(0) === 92) {
        if (t1 >= 2) {
          if (1 >= t1)
            return A.ioore(path, 1);
          t2 = path.charCodeAt(1) !== 92;
        } else
          t2 = true;
        if (t2)
          return 1;
        index = B.JSString_methods.indexOf$2(path, "\\", 2);
        if (index > 0) {
          index = B.JSString_methods.indexOf$2(path, "\\", index + 1);
          if (index > 0)
            return index;
        }
        return t1;
      }
      if (t1 < 3)
        return 0;
      if (!A.isAlphabetic(path.charCodeAt(0)))
        return 0;
      if (path.charCodeAt(1) !== 58)
        return 0;
      t1 = path.charCodeAt(2);
      if (!(t1 === 47 || t1 === 92))
        return 0;
      return 3;
    },
    rootLength$1(path) {
      return this.rootLength$2$withDrive(path, false);
    },
    isRootRelative$1(path) {
      return this.rootLength$1(path) === 1;
    },
    pathFromUri$1(uri) {
      var path, t1;
      if (uri.get$scheme() !== "" && uri.get$scheme() !== "file")
        throw A.wrapException(A.ArgumentError$("Uri " + uri.toString$0(0) + " must have scheme 'file:'.", null));
      path = uri.get$path();
      if (uri.get$host() === "") {
        if (path.length >= 3 && B.JSString_methods.startsWith$1(path, "/") && A.driveLetterEnd(path, 1) != null)
          path = B.JSString_methods.replaceFirst$2(path, "/", "");
      } else
        path = "\\\\" + uri.get$host() + path;
      t1 = A.stringReplaceAllUnchecked(path, "/", "\\");
      return A._Uri__uriDecode(t1, 0, t1.length, B.C_Utf8Codec, false);
    },
    absolutePathToUri$1(path) {
      var rootParts, t2,
        parsed = A.ParsedPath_ParsedPath$parse(path, this),
        t1 = parsed.root;
      t1.toString;
      if (B.JSString_methods.startsWith$1(t1, "\\\\")) {
        rootParts = new A.WhereIterable(A._setArrayType(t1.split("\\"), type$.JSArray_String), type$.bool_Function_String._as(new A.WindowsStyle_absolutePathToUri_closure()), type$.WhereIterable_String);
        B.JSArray_methods.insert$2(parsed.parts, 0, rootParts.get$last(0));
        if (parsed.get$hasTrailingSeparator())
          B.JSArray_methods.add$1(parsed.parts, "");
        return A._Uri__Uri(rootParts.get$first(0), null, parsed.parts, "file");
      } else {
        if (parsed.parts.length === 0 || parsed.get$hasTrailingSeparator())
          B.JSArray_methods.add$1(parsed.parts, "");
        t1 = parsed.parts;
        t2 = parsed.root;
        t2.toString;
        t2 = A.stringReplaceAllUnchecked(t2, "/", "");
        B.JSArray_methods.insert$2(t1, 0, A.stringReplaceAllUnchecked(t2, "\\", ""));
        return A._Uri__Uri(null, null, parsed.parts, "file");
      }
    },
    codeUnitsEqual$2(codeUnit1, codeUnit2) {
      var upperCase1;
      if (codeUnit1 === codeUnit2)
        return true;
      if (codeUnit1 === 47)
        return codeUnit2 === 92;
      if (codeUnit1 === 92)
        return codeUnit2 === 47;
      if ((codeUnit1 ^ codeUnit2) !== 32)
        return false;
      upperCase1 = codeUnit1 | 32;
      return upperCase1 >= 97 && upperCase1 <= 122;
    },
    pathsEqual$2(path1, path2) {
      var t1, t2, i;
      if (path1 === path2)
        return true;
      t1 = path1.length;
      t2 = path2.length;
      if (t1 !== t2)
        return false;
      for (i = 0; i < t1; ++i) {
        if (!(i < t2))
          return A.ioore(path2, i);
        if (!this.codeUnitsEqual$2(path1.charCodeAt(i), path2.charCodeAt(i)))
          return false;
      }
      return true;
    },
    get$name() {
      return "windows";
    },
    get$separator() {
      return "\\";
    }
  };
  A.WindowsStyle_absolutePathToUri_closure.prototype = {
    call$1(part) {
      return A._asString(part) !== "";
    },
    $signature: 3
  };
  A.SqliteException.prototype = {
    toString$0(_) {
      var t2, t3, _this = this,
        t1 = _this.operation;
      t1 = t1 == null ? "" : "while " + t1 + ", ";
      t1 = "SqliteException(" + _this.extendedResultCode + "): " + t1 + _this.message;
      t2 = _this.explanation;
      if (t2 != null)
        t1 = t1 + ", " + t2;
      t2 = _this.causingStatement;
      if (t2 != null) {
        t3 = _this.offset;
        t3 = t3 != null ? " (at position " + A.S(t3) + "): " : ": ";
        t2 = t1 + "\n  Causing statement" + t3 + t2;
        t1 = _this.parametersToStatement;
        if (t1 != null) {
          t3 = A._arrayInstanceType(t1);
          t3 = t2 + (", parameters: " + new A.MappedListIterable(t1, t3._eval$1("String(1)")._as(new A.SqliteException_toString_closure()), t3._eval$1("MappedListIterable<1,String>")).join$1(0, ", "));
          t1 = t3;
        } else
          t1 = t2;
      }
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isException: 1
  };
  A.SqliteException_toString_closure.prototype = {
    call$1(e) {
      if (type$.Uint8List._is(e))
        return "blob (" + e.length + " bytes)";
      else
        return J.toString$0$(e);
    },
    $signature: 61
  };
  A.AllowedArgumentCount.prototype = {};
  A.RawSqliteBindings.prototype = {};
  A.SqliteResult.prototype = {};
  A.RawSqliteDatabase.prototype = {};
  A.RawStatementCompiler.prototype = {};
  A.RawSqliteStatement.prototype = {};
  A.RawSqliteContext.prototype = {};
  A.RawSqliteValue.prototype = {};
  A.FinalizableDatabase.prototype = {
    dispose$0() {
      var t1, t2, _i, stmt, t3, code, exception, _this = this;
      for (t1 = _this._statements, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        stmt = t1[_i];
        if (!stmt._statement$_closed) {
          stmt._statement$_closed = true;
          if (!stmt._inResetState) {
            t3 = stmt.statement;
            A._asInt(t3.bindings.sqlite3.sqlite3_reset(t3.stmt));
            stmt._inResetState = true;
          }
          t3 = stmt.statement;
          t3.deallocateArguments$0();
          A._asInt(t3.bindings.sqlite3.sqlite3_finalize(t3.stmt));
        }
      }
      t1 = _this.dartCleanup;
      t1 = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      t2 = t1.length;
      _i = 0;
      for (; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i)
        t1[_i].call$0();
      t1 = _this.database;
      code = A._asInt(t1.bindings.sqlite3.sqlite3_close_v2(t1.db));
      exception = code !== 0 ? A.createExceptionRaw(_this.bindings, t1, code, "closing database", null, null) : null;
      if (exception != null)
        throw A.wrapException(exception);
    }
  };
  A.DatabaseImplementation.prototype = {
    get$userVersion() {
      var result, version, t1,
        stmt = this.prepare$1("PRAGMA user_version;");
      try {
        result = stmt.selectWith$1(new A.IndexedParameters(B.List_empty3));
        t1 = J.get$first$ax(result)._data;
        if (0 >= t1.length)
          return A.ioore(t1, 0);
        version = A._asInt(t1[0]);
        return version;
      } finally {
        stmt.dispose$0();
      }
    },
    createFunction$5$argumentCount$deterministic$directOnly$function$functionName(argumentCount, deterministic, directOnly, $function, functionName) {
      var t1, functionNameBytes, t2, flags, t3, t4, ptr, result, _null = null;
      type$.nullable_Object_Function_SqliteArguments._as($function);
      t1 = this.database;
      functionNameBytes = B.C_Utf8Encoder.convert$1(functionName);
      if (functionNameBytes.length > 255)
        A.throwExpression(A.ArgumentError$value(functionName, "functionName", "Must not exceed 255 bytes when utf-8 encoded"));
      t2 = new Uint8Array(A._ensureNativeList(functionNameBytes));
      flags = directOnly ? 526337 : 2049;
      t3 = type$.nullable_void_Function_2_RawSqliteContext_and_List_RawSqliteValue._as(new A.DatabaseImplementation_createFunction_closure($function));
      t4 = t1.bindings;
      ptr = t4.allocateBytes$2$additionalLength(t2, 1);
      t2 = t4.sqlite3;
      result = A.callMethod(t2, "dart_sqlite3_create_scalar_function", [t1.db, ptr, argumentCount.allowedArgs, flags, t4.callbacks.register$1(new A.RegisteredFunctionSet(t3, _null, _null))], type$.int);
      result = result;
      t2.dart_sqlite3_free(ptr);
      if (result !== 0)
        A.throwException(this, result, _null, _null, _null);
    },
    createFunction$4$argumentCount$deterministic$function$functionName(argumentCount, deterministic, $function, functionName) {
      return this.createFunction$5$argumentCount$deterministic$directOnly$function$functionName(argumentCount, deterministic, true, $function, functionName);
    },
    dispose$0() {
      var t1, t2, t3, _this0, t4, _this = this;
      if (_this._isClosed)
        return;
      $.$get$disposeFinalizer().detach$1(_this);
      _this._isClosed = true;
      t1 = _this.database;
      t2 = t1.bindings;
      t3 = t2.callbacks;
      t3.set$installedUpdateHook(null);
      _this0 = t1.db;
      t1 = t2.sqlite3;
      t2 = type$.nullable_JavaScriptFunction;
      t4 = t2._as(t1.dart_sqlite3_updates);
      if (t4 != null)
        t4.call(null, _this0, -1);
      t3.set$installedCommitHook(null);
      t4 = t2._as(t1.dart_sqlite3_commits);
      if (t4 != null)
        t4.call(null, _this0, -1);
      t3.set$installedRollbackHook(null);
      t1 = t2._as(t1.dart_sqlite3_rollbacks);
      if (t1 != null)
        t1.call(null, _this0, -1);
      _this.finalizable.dispose$0();
    },
    execute$1(sql) {
      var stmt, t1, t2, _this = this,
        parameters = B.List_empty1;
      if (J.get$length$asx(parameters) === 0) {
        if (_this._isClosed)
          A.throwExpression(A.StateError$("This database has already been closed"));
        t1 = _this.database;
        t2 = t1.bindings;
        stmt = t2.allocateBytes$2$additionalLength(B.C_Utf8Encoder.convert$1(sql), 1);
        t2 = t2.sqlite3;
        t1 = A.callMethod(t2, "sqlite3_exec", [t1.db, stmt, 0, 0, 0], type$.int);
        t2.dart_sqlite3_free(stmt);
        if (t1 !== 0)
          A.throwException(_this, t1, "executing", sql, parameters);
      } else {
        stmt = _this.prepare$2$checkNoTail(sql, true);
        try {
          stmt.executeWith$1(new A.IndexedParameters(type$.List_nullable_Object._as(parameters)));
        } finally {
          stmt.dispose$0();
        }
      }
    },
    _prepareInternal$5$checkNoTail$maxStatements$persistent$vtab(sql, checkNoTail, maxStatements, persistent, vtab) {
      var bytes, t1, t2, ptr, t3, t4, compiler, createdStatements, freeIntermediateResults, t5, offset, result, t6, $length, t7, endOffset, stmt, _i, _this = this,
        _s24_ = "Null pointer dereference";
      if (_this._isClosed)
        A.throwExpression(A.StateError$("This database has already been closed"));
      bytes = B.C_Utf8Encoder.convert$1(sql);
      t1 = _this.database;
      type$.List_int._as(bytes);
      t2 = t1.bindings;
      ptr = t2.allocateBytes$1(bytes);
      t3 = t2.sqlite3;
      t4 = A._asInt(t3.dart_sqlite3_malloc(4));
      t3 = A._asInt(t3.dart_sqlite3_malloc(4));
      compiler = new A.WasmStatementCompiler(t1, ptr, t4, t3);
      createdStatements = A._setArrayType([], type$.JSArray_StatementImplementation);
      freeIntermediateResults = new A.DatabaseImplementation__prepareInternal_freeIntermediateResults(compiler, createdStatements);
      for (t1 = bytes.length, t4 = type$.NativeArrayBuffer, t5 = t3 !== 0, t2 = t2.memory, offset = 0; offset < t1; offset = endOffset) {
        result = compiler.sqlite3_prepare$3(offset, t1 - offset, 0);
        t6 = result.resultCode;
        if (t6 !== 0) {
          freeIntermediateResults.call$0();
          A.throwException(_this, t6, "preparing statement", sql, null);
        }
        if (A.assertTest(t5))
          A.assertThrow(_s24_);
        t6 = t4._as(t2.buffer);
        $length = B.JSInt_methods._tdivFast$1(t6.byteLength, 4);
        t6 = new Int32Array(t6, 0, $length);
        t7 = B.JSInt_methods._shrOtherPositive$1(t3, 2);
        if (!(t7 < t6.length))
          return A.ioore(t6, t7);
        endOffset = t6[t7] - ptr;
        stmt = result.result;
        if (stmt != null)
          B.JSArray_methods.add$1(createdStatements, new A.StatementImplementation(stmt, _this, new A.FinalizableStatement(stmt), new A._Utf8Decoder(false)._convertGeneral$4(bytes, offset, endOffset, true)));
        if (createdStatements.length === maxStatements) {
          offset = endOffset;
          break;
        }
      }
      if (checkNoTail)
        while (offset < t1) {
          result = compiler.sqlite3_prepare$3(offset, t1 - offset, 0);
          if (A.assertTest(t5))
            A.assertThrow(_s24_);
          t6 = t4._as(t2.buffer);
          $length = B.JSInt_methods._tdivFast$1(t6.byteLength, 4);
          t6 = new Int32Array(t6, 0, $length);
          t7 = B.JSInt_methods._shrOtherPositive$1(t3, 2);
          if (!(t7 < t6.length))
            return A.ioore(t6, t7);
          offset = t6[t7] - ptr;
          stmt = result.result;
          if (stmt != null) {
            B.JSArray_methods.add$1(createdStatements, new A.StatementImplementation(stmt, _this, new A.FinalizableStatement(stmt), ""));
            freeIntermediateResults.call$0();
            throw A.wrapException(A.ArgumentError$value(sql, "sql", "Had an unexpected trailing statement."));
          } else if (result.resultCode !== 0) {
            freeIntermediateResults.call$0();
            throw A.wrapException(A.ArgumentError$value(sql, "sql", "Has trailing data after the first sql statement:"));
          }
        }
      compiler.close$0();
      for (t1 = createdStatements.length, t2 = _this.finalizable._statements, _i = 0; _i < createdStatements.length; createdStatements.length === t1 || (0, A.throwConcurrentModificationError)(createdStatements), ++_i)
        B.JSArray_methods.add$1(t2, createdStatements[_i].finalizable);
      return createdStatements;
    },
    prepare$2$checkNoTail(sql, checkNoTail) {
      var stmts = this._prepareInternal$5$checkNoTail$maxStatements$persistent$vtab(sql, checkNoTail, 1, false, true);
      if (stmts.length === 0)
        throw A.wrapException(A.ArgumentError$value(sql, "sql", "Must contain an SQL statement."));
      return B.JSArray_methods.get$first(stmts);
    },
    prepare$1(sql) {
      return this.prepare$2$checkNoTail(sql, false);
    },
    $isCommonDatabase: 1
  };
  A.DatabaseImplementation_createFunction_closure.prototype = {
    call$2(context, args) {
      A._extension_0_runWithArgsAndSetResult(context, this.$function, type$.List_RawSqliteValue._as(args));
    },
    $signature: 62
  };
  A.DatabaseImplementation__prepareInternal_freeIntermediateResults.prototype = {
    call$0() {
      var t1, t2, _i, stmt, t3, t4;
      this.compiler.close$0();
      for (t1 = this.createdStatements, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        stmt = t1[_i];
        t3 = stmt.finalizable;
        if (!t3._statement$_closed) {
          t4 = $.$get$disposeFinalizer()._registry;
          if (t4 != null)
            t4.unregister(stmt);
          if (!t3._statement$_closed) {
            t3._statement$_closed = true;
            if (!t3._inResetState) {
              t4 = t3.statement;
              A._asInt(t4.bindings.sqlite3.sqlite3_reset(t4.stmt));
              t3._inResetState = true;
            }
            t4 = t3.statement;
            t4.deallocateArguments$0();
            A._asInt(t4.bindings.sqlite3.sqlite3_finalize(t4.stmt));
          }
          t4 = stmt.database;
          if (!t4._isClosed)
            B.JSArray_methods.remove$1(t4.finalizable._statements, t3);
        }
      }
    },
    $signature: 0
  };
  A.ValueList.prototype = {
    get$length(_) {
      return this.rawValues.length;
    },
    $index(_, index) {
      var t1, t2, t3, _this = this;
      if (A.assertTest(_this.isValid))
        A.assertThrow("Invalid arguments. This commonly happens when an application-defined sql function leaks its arguments after it finishes running. Please use List.of(arguments) in the function to create a copy of the argument instead.");
      t1 = _this.rawValues;
      A.RangeError_checkValidIndex(index, _this, "index", t1.length);
      t2 = _this._cachedCopies;
      if (!(index >= 0 && index < t2.length))
        return A.ioore(t2, index);
      t3 = t2[index];
      if (t3 == null) {
        t1 = A.ReadDartValue_read(t1.$index(0, index));
        B.JSArray_methods.$indexSet(t2, index, t1);
      } else
        t1 = t3;
      return t1;
    },
    $indexSet(_, index, value) {
      throw A.wrapException(A.ArgumentError$("The argument list is unmodifiable", null));
    }
  };
  A.FinalizablePart.prototype = {};
  A.disposeFinalizer_closure.prototype = {
    call$1(element) {
      type$.FinalizablePart._as(element).dispose$0();
    },
    $signature: 63
  };
  A.Sqlite3Implementation.prototype = {
    open$2$vfs(filename, vfs) {
      var namePtr, t3, outDb, result, dbPtr, exception, _null = null,
        t1 = this.bindings,
        t2 = t1.bindings,
        rc = t2.sqlite3_initialize$0();
      if (rc !== 0)
        A.throwExpression(A.SqliteException$(rc, "Error returned by sqlite3_initialize", _null, _null, _null, _null, _null));
      switch (2) {
        case 2:
          break;
      }
      namePtr = t2.allocateBytes$2$additionalLength(B.C_Utf8Encoder.convert$1(filename), 1);
      t3 = t2.sqlite3;
      outDb = A._asInt(t3.dart_sqlite3_malloc(4));
      result = A._asInt(t3.sqlite3_open_v2(namePtr, outDb, 6, 0));
      dbPtr = A.WrappedMemory_int32ValueOfPointer(t2.memory, outDb);
      t3.dart_sqlite3_free(namePtr);
      t3.dart_sqlite3_free(0);
      t2 = new A.WasmDatabase0(t2, dbPtr);
      if (result !== 0) {
        exception = A.createExceptionRaw(t1, t2, result, "opening the database", _null, _null);
        A._asInt(t3.sqlite3_close_v2(dbPtr));
        throw A.wrapException(exception);
      }
      A._asInt(t3.sqlite3_extended_result_codes(dbPtr, 1));
      t3 = new A.FinalizableDatabase(t1, t2, A._setArrayType([], type$.JSArray_FinalizableStatement), A._setArrayType([], type$.JSArray_of_void_Function));
      t2 = new A.DatabaseImplementation(t1, t2, t3);
      t1 = $.$get$disposeFinalizer();
      t1.$ti._precomputed1._as(t3);
      t1 = t1._registry;
      if (t1 != null)
        t1.register(t2, t3, t2);
      return t2;
    },
    open$1(filename) {
      return this.open$2$vfs(filename, null);
    },
    $isCommonSqlite3: 1
  };
  A.FinalizableStatement.prototype = {
    dispose$0() {
      var t1, _this = this;
      if (!_this._statement$_closed) {
        _this._statement$_closed = true;
        _this._reset$0();
        t1 = _this.statement;
        t1.deallocateArguments$0();
        A._asInt(t1.bindings.sqlite3.sqlite3_finalize(t1.stmt));
      }
    },
    _reset$0() {
      if (!this._inResetState) {
        var t1 = this.statement;
        A._asInt(t1.bindings.sqlite3.sqlite3_reset(t1.stmt));
        this._inResetState = true;
      }
    }
  };
  A.StatementImplementation.prototype = {
    get$_columnNames() {
      var t3, columnCount, t4, t5, t6, i, namePtr, t7, t8,
        t1 = this.statement,
        t2 = t1.bindings;
      t1 = t1.stmt;
      t3 = t2.sqlite3;
      columnCount = A._asInt(t3.sqlite3_column_count(t1));
      t4 = A._setArrayType([], type$.JSArray_String);
      for (t5 = type$.List_int, t6 = type$.NativeArrayBuffer, t2 = t2.memory, i = 0; i < columnCount; ++i) {
        namePtr = A._asInt(t3.sqlite3_column_name(t1, i));
        if (A.assertTest(namePtr !== 0))
          A.assertThrow("Null pointer dereference");
        t7 = t6._as(t2.buffer);
        t8 = A.WrappedMemory_strlen(t2, namePtr);
        t7 = t5._as(new Uint8Array(t7, namePtr, t8));
        t4.push(new A._Utf8Decoder(false)._convertGeneral$4(t7, 0, null, true));
      }
      return t4;
    },
    get$_tableNames() {
      return null;
    },
    _reset$0() {
      var t1 = this.finalizable;
      t1._reset$0();
      t1.statement.deallocateArguments$0();
    },
    _execute$0() {
      var result, _this = this,
        t1 = _this.finalizable._inResetState = false,
        t2 = _this.statement,
        t3 = t2.stmt;
      t2 = t2.bindings.sqlite3;
      do
        result = A._asInt(t2.sqlite3_step(t3));
      while (result === 100);
      if (result !== 0 ? result !== 101 : t1)
        A.throwException(_this.database, result, "executing statement", _this.sql, _this._latestArguments);
    },
    _selectResults$0() {
      var t2, t3, columnCount, resultCode, t4, i, names, _this = this,
        rows = A._setArrayType([], type$.JSArray_List_nullable_Object),
        t1 = _this.finalizable._inResetState = false;
      for (t2 = _this.statement, t3 = t2.stmt, t2 = t2.bindings.sqlite3, columnCount = -1; resultCode = A._asInt(t2.sqlite3_step(t3)), resultCode === 100;) {
        if (columnCount === -1)
          columnCount = A._asInt(t2.sqlite3_column_count(t3));
        A.assertHelper(columnCount >= 0);
        t4 = [];
        for (i = 0; i < columnCount; ++i)
          t4.push(_this._readValue$1(i));
        B.JSArray_methods.add$1(rows, t4);
      }
      if (resultCode !== 0 ? resultCode !== 101 : t1)
        A.throwException(_this.database, resultCode, "selecting from statement", _this.sql, _this._latestArguments);
      names = _this.get$_columnNames();
      _this.get$_tableNames();
      t1 = new A.ResultSet(rows, names, B.Map_empty);
      t1._calculateIndexes$0();
      return t1;
    },
    _readValue$1(index) {
      var t3, $length,
        t1 = this.statement,
        t2 = t1.bindings;
      t1 = t1.stmt;
      t3 = t2.sqlite3;
      switch (A._asInt(t3.sqlite3_column_type(t1, index))) {
        case 1:
          t1 = type$.JavaScriptBigInt._as(t3.sqlite3_column_int64(t1, index));
          return -9007199254740992 <= t1 && t1 <= 9007199254740992 ? A._asInt(A._asDouble(init.G.Number(t1))) : A._BigIntImpl_parse(A._asString(t1.toString()), null);
        case 2:
          return A._asDouble(t3.sqlite3_column_double(t1, index));
        case 3:
          return A.WrappedMemory_readString(t2.memory, A._asInt(t3.sqlite3_column_text(t1, index)), null);
        case 4:
          $length = A._asInt(t3.sqlite3_column_bytes(t1, index));
          return A.WrappedMemory_copyRange(t2.memory, A._asInt(t3.sqlite3_column_blob(t1, index)), $length);
        case 5:
        default:
          return null;
      }
    },
    _bindIndexedParams$1(params) {
      var i,
        $length = params.length,
        t1 = this.statement,
        count = A._asInt(t1.bindings.sqlite3.sqlite3_bind_parameter_count(t1.stmt));
      if ($length !== count)
        A.throwExpression(A.ArgumentError$value(params, "parameters", "Expected " + count + " parameters, got " + $length));
      t1 = params.length;
      if (t1 === 0)
        return;
      for (i = 1; i <= params.length; ++i)
        this._bindParam$2(params[i - 1], i);
      this._latestArguments = params;
    },
    _bindParam$2(param, i) {
      var t1, _this0, encoded, t2, ptr, _this = this;
      $label0$0: {
        if (param == null) {
          t1 = _this.statement;
          t1 = A._asInt(t1.bindings.sqlite3.sqlite3_bind_null(t1.stmt, i));
          break $label0$0;
        }
        if (A._isInt(param)) {
          t1 = _this.statement;
          t1 = A._asInt(t1.bindings.sqlite3.sqlite3_bind_int64(t1.stmt, i, type$.JavaScriptBigInt._as(init.G.BigInt(param))));
          break $label0$0;
        }
        if (param instanceof A._BigIntImpl) {
          t1 = _this.statement;
          t1 = A._asInt(t1.bindings.sqlite3.sqlite3_bind_int64(t1.stmt, i, type$.JavaScriptBigInt._as(init.G.BigInt(A.BigIntRangeCheck_get_checkRange(param).toString$0(0)))));
          break $label0$0;
        }
        if (A._isBool(param)) {
          t1 = _this.statement;
          _this0 = param ? 1 : 0;
          t1 = A._asInt(t1.bindings.sqlite3.sqlite3_bind_int64(t1.stmt, i, type$.JavaScriptBigInt._as(init.G.BigInt(_this0))));
          break $label0$0;
        }
        if (typeof param == "number") {
          t1 = _this.statement;
          t1 = A._asInt(t1.bindings.sqlite3.sqlite3_bind_double(t1.stmt, i, param));
          break $label0$0;
        }
        if (typeof param == "string") {
          t1 = _this.statement;
          encoded = B.C_Utf8Encoder.convert$1(param);
          t2 = t1.bindings;
          ptr = t2.allocateBytes$1(encoded);
          B.JSArray_methods.add$1(t1._allocatedArguments, ptr);
          t1 = A.callMethod(t2.sqlite3, "sqlite3_bind_text", [t1.stmt, i, ptr, encoded.length, 0], type$.int);
          break $label0$0;
        }
        t1 = type$.List_int;
        if (t1._is(param)) {
          t2 = _this.statement;
          t1._as(param);
          t1 = t2.bindings;
          ptr = t1.allocateBytes$1(param);
          B.JSArray_methods.add$1(t2._allocatedArguments, ptr);
          t2 = A.callMethod(t1.sqlite3, "sqlite3_bind_blob64", [t2.stmt, i, ptr, type$.JavaScriptBigInt._as(init.G.BigInt(J.get$length$asx(param))), 0], type$.int);
          t1 = t2;
          break $label0$0;
        }
        t1 = _this._bindCustomParam$2(param, i);
        break $label0$0;
      }
      if (t1 !== 0)
        A.throwException(_this.database, t1, "binding parameter", _this.sql, _this._latestArguments);
    },
    _bindCustomParam$2(param, i) {
      A._asObject(param);
      throw A.wrapException(A.ArgumentError$value(param, "params[" + i + "]", "Allowed parameters must either be null or bool, int, num, String or List<int>."));
    },
    _bindParams$1(parameters) {
      $label0$0: {
        this._bindIndexedParams$1(parameters.parameters);
        break $label0$0;
      }
    },
    dispose$0() {
      var t2,
        t1 = this.finalizable;
      if (!t1._statement$_closed) {
        $.$get$disposeFinalizer().detach$1(this);
        t1.dispose$0();
        t2 = this.database;
        if (!t2._isClosed)
          B.JSArray_methods.remove$1(t2.finalizable._statements, t1);
      }
    },
    selectWith$1(parameters) {
      var _this = this;
      if (_this.finalizable._statement$_closed)
        A.throwExpression(A.StateError$(string$.Tried_));
      _this._reset$0();
      _this._bindParams$1(parameters);
      return _this._selectResults$0();
    },
    executeWith$1(parameters) {
      var _this = this;
      if (_this.finalizable._statement$_closed)
        A.throwExpression(A.StateError$(string$.Tried_));
      _this._reset$0();
      _this._bindParams$1(parameters);
      _this._execute$0();
    }
  };
  A.InMemoryFileSystem.prototype = {
    xAccess$2(path, flags) {
      return this.fileData.containsKey$1(path) ? 1 : 0;
    },
    xDelete$2(path, syncDir) {
      this.fileData.remove$1(0, path);
    },
    xFullPathName$1(path) {
      return $.$get$url().normalize$1("/" + path);
    },
    xOpen$2(path, flags) {
      var t1,
        pathStr = path.path;
      if (pathStr == null)
        pathStr = A.GenerateFilename_randomFileName(this.random, "/");
      t1 = this.fileData;
      if (!t1.containsKey$1(pathStr))
        if ((flags & 4) !== 0)
          t1.$indexSet(0, pathStr, new A.Uint8Buffer(new Uint8Array(0), 0));
        else
          throw A.wrapException(A.VfsException$(14));
      return new A._Record_2_file_outFlags(new A._InMemoryFile(this, pathStr, (flags & 8) !== 0), 0);
    },
    xSleep$1(duration) {
    }
  };
  A._InMemoryFile.prototype = {
    readInto$2(buffer, offset) {
      var available,
        file = this.vfs.fileData.$index(0, this.path);
      if (file == null || file._typed_buffer$_length <= offset)
        return 0;
      available = Math.min(buffer.length, file._typed_buffer$_length - offset);
      B.NativeUint8List_methods.setRange$4(buffer, 0, available, J.asUint8List$2$x(B.NativeUint8List_methods.get$buffer(file._typed_buffer$_buffer), 0, file._typed_buffer$_length), offset);
      return available;
    },
    xCheckReservedLock$0() {
      return this._lockMode >= 2 ? 1 : 0;
    },
    xClose$0() {
      if (this.deleteOnClose)
        this.vfs.fileData.remove$1(0, this.path);
    },
    xFileSize$0() {
      return this.vfs.fileData.$index(0, this.path)._typed_buffer$_length;
    },
    xLock$1(mode) {
      this._lockMode = mode;
    },
    xSync$1(flags) {
    },
    xTruncate$1(size) {
      var t1 = this.vfs.fileData,
        t2 = this.path,
        file = t1.$index(0, t2);
      if (file == null) {
        t1.$indexSet(0, t2, new A.Uint8Buffer(new Uint8Array(0), 0));
        t1.$index(0, t2).set$length(0, size);
      } else
        file.set$length(0, size);
    },
    xUnlock$1(mode) {
      this._lockMode = mode;
    },
    xWrite$2(buffer, fileOffset) {
      var endIndex,
        t1 = this.vfs.fileData,
        t2 = this.path,
        file = t1.$index(0, t2);
      if (file == null) {
        file = new A.Uint8Buffer(new Uint8Array(0), 0);
        t1.$indexSet(0, t2, file);
      }
      endIndex = fileOffset + buffer.length;
      if (endIndex > file._typed_buffer$_length)
        file.set$length(0, endIndex);
      file.setRange$3(0, fileOffset, endIndex, buffer);
    }
  };
  A.Cursor.prototype = {
    _calculateIndexes$0() {
      var t2, t3, _i, column,
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.int);
      for (t2 = this._result_set$_columnNames, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        column = t2[_i];
        t1.$indexSet(0, column, B.JSArray_methods.lastIndexOf$1(t2, column));
      }
      this._calculatedIndexes = t1;
    }
  };
  A.ResultSet.prototype = {
    get$iterator(_) {
      return new A._ResultIterator(this);
    },
    $index(_, index) {
      var t1 = this.rows;
      if (!(index >= 0 && index < t1.length))
        return A.ioore(t1, index);
      return new A.Row(this, A.List_List$unmodifiable(t1[index], type$.nullable_Object));
    },
    $indexSet(_, index, value) {
      type$.Row._as(value);
      throw A.wrapException(A.UnsupportedError$("Can't change rows from a result set"));
    },
    get$length(_) {
      return this.rows.length;
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  A.Row.prototype = {
    $index(_, key) {
      var t1, index;
      if (typeof key != "string") {
        if (A._isInt(key)) {
          t1 = this._data;
          if (key >>> 0 !== key || key >= t1.length)
            return A.ioore(t1, key);
          return t1[key];
        }
        return null;
      }
      index = this._result._calculatedIndexes.$index(0, key);
      if (index == null)
        return null;
      t1 = this._data;
      if (index >>> 0 !== index || index >= t1.length)
        return A.ioore(t1, index);
      return t1[index];
    },
    get$keys() {
      return this._result._result_set$_columnNames;
    },
    get$values() {
      return this._data;
    },
    $isMap: 1
  };
  A._ResultIterator.prototype = {
    get$current() {
      var t1 = this.result,
        t2 = t1.rows,
        t3 = this.index;
      if (!(t3 >= 0 && t3 < t2.length))
        return A.ioore(t2, t3);
      return new A.Row(t1, A.List_List$unmodifiable(t2[t3], type$.nullable_Object));
    },
    moveNext$0() {
      return ++this.index < this.result.rows.length;
    },
    $isIterator: 1
  };
  A._ResultSet_Cursor_ListMixin.prototype = {};
  A._ResultSet_Cursor_ListMixin_NonGrowableListMixin.prototype = {};
  A._Row_Object_UnmodifiableMapMixin.prototype = {};
  A._Row_Object_UnmodifiableMapMixin_MapMixin.prototype = {};
  A.OpenMode.prototype = {
    _enumToString$0() {
      return "OpenMode." + this._name;
    }
  };
  A.CommonPreparedStatement.prototype = {};
  A.IndexedParameters.prototype = {$isStatementParameters: 1};
  A.VfsException.prototype = {
    toString$0(_) {
      return "VfsException(" + this.returnCode + ")";
    },
    $isException: 1
  };
  A.Sqlite3Filename.prototype = {};
  A.VirtualFileSystem.prototype = {};
  A.BaseVirtualFileSystem.prototype = {};
  A.BaseVfsFile.prototype = {
    get$xDeviceCharacteristics() {
      return 0;
    },
    xRead$2(target, fileOffset) {
      var bytesRead = this.readInto$2(target, fileOffset),
        t1 = target.length;
      if (bytesRead < t1) {
        B.NativeUint8List_methods.fillRange$3(target, bytesRead, t1, 0);
        throw A.wrapException(B.VfsException_522);
      }
    },
    $isVirtualFileSystemFile: 1
  };
  A.WasmSqliteBindings.prototype = {};
  A.WasmDatabase0.prototype = {};
  A.WasmStatementCompiler.prototype = {
    close$0() {
      var _this = this,
        t1 = _this.database.bindings.sqlite3;
      t1.dart_sqlite3_free(_this.sql);
      t1.dart_sqlite3_free(_this.stmtOut);
      t1.dart_sqlite3_free(_this.pzTail);
    },
    sqlite3_prepare$3(byteOffset, $length, prepFlag) {
      var stmt, libraryStatement, _this = this,
        t1 = _this.database,
        t2 = t1.bindings,
        t3 = _this.stmtOut;
      t1 = A.callMethod(t2.sqlite3, "sqlite3_prepare_v3", [t1.db, _this.sql + byteOffset, $length, prepFlag, t3, _this.pzTail], type$.int);
      stmt = A.WrappedMemory_int32ValueOfPointer(t2.memory, t3);
      libraryStatement = stmt === 0 ? null : new A.WasmStatement(stmt, t2, A._setArrayType([], type$.JSArray_int));
      return new A.SqliteResult(t1, libraryStatement, type$.SqliteResult_nullable_RawSqliteStatement);
    }
  };
  A.WasmStatement.prototype = {
    deallocateArguments$0() {
      var t1, t2, t3, _i;
      for (t1 = this._allocatedArguments, t2 = t1.length, t3 = this.bindings.sqlite3, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i)
        t3.dart_sqlite3_free(t1[_i]);
      B.JSArray_methods.clear$0(t1);
    }
  };
  A.WasmContext.prototype = {};
  A.WasmValue.prototype = {};
  A.WasmValueList.prototype = {
    $index(_, index) {
      var t1 = this.bindings;
      return new A.WasmValue(t1, A.WrappedMemory_int32ValueOfPointer(t1.memory, this.value + index * 4));
    },
    $indexSet(_, index, value) {
      type$.WasmValue._as(value);
      throw A.wrapException(A.UnsupportedError$("Setting element in WasmValueList"));
    },
    get$length(receiver) {
      return this.length;
    }
  };
  A.AsyncJavaScriptIteratable.prototype = {
    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
      var iterator, controller, _null = null, t1 = {},
        t2 = this.$ti;
      t2._eval$1("~(1)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      iterator = A._asJSObject(A.JSObjectUnsafeUtilExtension__callMethod(this._jsObject, type$.JavaScriptSymbol._as(init.G.Symbol.asyncIterator), _null, _null, _null, _null));
      controller = A.StreamController_StreamController(_null, _null, true, t2._precomputed1);
      t1.currentlyPendingPromise = null;
      t2 = new A.AsyncJavaScriptIteratable_listen_fetchNext(t1, this, iterator, controller);
      controller.set$onListen(t2);
      controller.set$onResume(new A.AsyncJavaScriptIteratable_listen_fetchNextIfNecessary(t1, controller, t2));
      return new A._ControllerStream(controller, A._instanceType(controller)._eval$1("_ControllerStream<1>")).listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError);
    },
    listen$3$onDone$onError(onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
    }
  };
  A.AsyncJavaScriptIteratable_listen_fetchNext.prototype = {
    call$0() {
      var currentlyPendingPromise, t2, _this = this,
        t1 = _this._box_0;
      A.assertHelper(t1.currentlyPendingPromise == null);
      currentlyPendingPromise = A._asJSObject(_this.iterator.next());
      t1.currentlyPendingPromise = currentlyPendingPromise;
      t2 = _this.controller;
      A.promiseToFuture(currentlyPendingPromise, type$.JSObject).then$1$2$onError(new A.AsyncJavaScriptIteratable_listen_fetchNext_closure(t1, _this.$this, t2, _this), t2.get$addError(), type$.Null);
    },
    $signature: 0
  };
  A.AsyncJavaScriptIteratable_listen_fetchNext_closure.prototype = {
    call$1(result) {
      var t1, t2, value, t3, _this = this;
      A._asJSObject(result);
      t1 = A._asBoolQ(result.done);
      if (t1 == null)
        t1 = null;
      t2 = _this.$this.$ti;
      value = t2._eval$1("1?")._as(result.value);
      t3 = _this.controller;
      if (t1 === true) {
        t3.close$0();
        _this._box_0.currentlyPendingPromise = null;
      } else {
        t3.add$1(0, value == null ? t2._precomputed1._as(value) : value);
        _this._box_0.currentlyPendingPromise = null;
        t1 = t3._state;
        if (!((t1 & 1) !== 0 ? (t3.get$_subscription()._state & 4) !== 0 : (t1 & 2) === 0))
          _this.fetchNext.call$0();
      }
    },
    $signature: 12
  };
  A.AsyncJavaScriptIteratable_listen_fetchNextIfNecessary.prototype = {
    call$0() {
      var t1, t2;
      if (this._box_0.currentlyPendingPromise == null) {
        t1 = this.controller;
        t2 = t1._state;
        t1 = !((t2 & 1) !== 0 ? (t1.get$_subscription()._state & 4) !== 0 : (t2 & 2) === 0);
      } else
        t1 = false;
      if (t1)
        this.fetchNext.call$0();
    },
    $signature: 0
  };
  A._CursorReader.prototype = {
    cancel$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$cancel$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._onSuccess;
              if (t1 != null)
                t1.cancel$0();
              t1 = $async$self._indexed_db0$_onError;
              if (t1 != null)
                t1.cancel$0();
              $async$self._indexed_db0$_onError = $async$self._onSuccess = null;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$cancel$0, $async$completer);
    },
    get$current() {
      var t1 = this._cursor;
      return t1 == null ? A.throwExpression(A.StateError$("Await moveNext() first")) : t1;
    },
    moveNext$0() {
      var t1, completer, t2, t3, t4, _this = this;
      if (A.assertTest(_this._onSuccess == null && _this._indexed_db0$_onError == null))
        A.assertThrow("moveNext() called twice");
      t1 = _this._cursor;
      if (t1 != null)
        t1.continue();
      t1 = new A._Future($.Zone__current, type$._Future_bool);
      completer = new A._SyncCompleter(t1, type$._SyncCompleter_bool);
      t2 = _this._cursorRequest;
      t3 = type$.nullable_void_Function_JSObject;
      t4 = type$.JSObject;
      _this._onSuccess = A._EventStreamSubscription$(t2, "success", t3._as(new A._CursorReader_moveNext_closure(_this, completer)), false, t4);
      _this._indexed_db0$_onError = A._EventStreamSubscription$(t2, "error", t3._as(new A._CursorReader_moveNext_closure0(_this, completer)), false, t4);
      return t1;
    }
  };
  A._CursorReader_moveNext_closure.prototype = {
    call$1($event) {
      var t2,
        t1 = this.$this;
      t1.cancel$0();
      t2 = t1.$ti._eval$1("1?")._as(t1._cursorRequest.result);
      t1._cursor = t2;
      this.completer.complete$1(t2 != null);
    },
    $signature: 1
  };
  A._CursorReader_moveNext_closure0.prototype = {
    call$1($event) {
      var t1 = this.$this;
      t1.cancel$0();
      t1 = A._asJSObjectQ(t1._cursorRequest.error);
      if (t1 == null)
        t1 = $event;
      this.completer.completeError$1(t1);
    },
    $signature: 1
  };
  A.CompleteIdbRequest_complete_closure.prototype = {
    call$1($event) {
      this.completer.complete$1(this.T._as(this._this.result));
    },
    $signature: 1
  };
  A.CompleteIdbRequest_complete_closure0.prototype = {
    call$1($event) {
      var t1 = A._asJSObjectQ(this._this.error);
      if (t1 == null)
        t1 = $event;
      this.completer.completeError$1(t1);
    },
    $signature: 1
  };
  A.CompleteOpenIdbRequest_completeOrBlocked_closure.prototype = {
    call$1($event) {
      this.completer.complete$1(this.T._as(this._this.result));
    },
    $signature: 1
  };
  A.CompleteOpenIdbRequest_completeOrBlocked_closure0.prototype = {
    call$1($event) {
      var t1 = A._asJSObjectQ(this._this.error);
      if (t1 == null)
        t1 = $event;
      this.completer.completeError$1(t1);
    },
    $signature: 1
  };
  A.CompleteOpenIdbRequest_completeOrBlocked_closure1.prototype = {
    call$1($event) {
      var t1 = A._asJSObjectQ(this._this.error);
      if (t1 == null)
        t1 = $event;
      this.completer.completeError$1(t1);
    },
    $signature: 1
  };
  A.WasmInstance_load_closure.prototype = {
    call$2(module, moduleImports) {
      var _this;
      A._asString(module);
      type$.Map_of_String_and_nullable_Object._as(moduleImports);
      _this = {};
      this.importsJs[module] = _this;
      moduleImports.forEach$1(0, new A.WasmInstance_load__closure(_this));
    },
    $signature: 64
  };
  A.WasmInstance_load__closure.prototype = {
    call$2($name, value) {
      this.moduleJs[A._asString($name)] = value;
    },
    $signature: 65
  };
  A.WasmSqlite3.prototype = {};
  A.WasmVfs.prototype = {
    _runInWorker$2$2(operation, requestData, $Req, $Res) {
      var t2, t3, rc,
        _s12_ = "_runInWorker",
        t1 = type$.Message_2;
      A.checkTypeBound($Req, t1, "Req", _s12_);
      A.checkTypeBound($Res, t1, "Res", _s12_);
      $Req._eval$1("@<0>")._bind$1($Res)._eval$1("WorkerOperation<1,2>")._as(operation);
      t1 = this.serializer;
      t1.write$1($Req._as(requestData));
      t2 = this.synchronizer.int32View;
      t3 = init.G;
      A._asInt(t3.Atomics.store(t2, 1, -1));
      A._asInt(t3.Atomics.store(t2, 0, operation.index));
      A.Atomics_notify(t2, 0);
      A._asString(t3.Atomics.wait(t2, 1, -1));
      rc = A._asInt(t3.Atomics.load(t2, 1));
      if (rc !== 0)
        throw A.wrapException(A.VfsException$(rc));
      return operation.readResponse.call$1(t1);
    },
    xAccess$2(path, flags) {
      return this._runInWorker$2$2(B.WorkerOperation_W3i, new A.NameAndInt32Flags(path, flags, 0, 0), type$.NameAndInt32Flags, type$.Flags).flag0;
    },
    xDelete$2(path, syncDir) {
      this._runInWorker$2$2(B.WorkerOperation_aCN, new A.NameAndInt32Flags(path, syncDir, 0, 0), type$.NameAndInt32Flags, type$.EmptyMessage);
    },
    xFullPathName$1(path) {
      var resolved = this.pathContext.absolute$1(path);
      if ($.$get$context()._isWithinOrEquals$2("/", resolved) !== B._PathRelation_within)
        throw A.wrapException(B.VfsException_14);
      return resolved;
    },
    xOpen$2(path, flags) {
      var filePath = path.path,
        result = this._runInWorker$2$2(B.WorkerOperation_readNameAndFlags_readFlags_2_xOpen, new A.NameAndInt32Flags(filePath == null ? A.GenerateFilename_randomFileName(this.random, "/") : filePath, flags, 0, 0), type$.NameAndInt32Flags, type$.Flags);
      return new A._Record_2_file_outFlags(new A.WasmFile(this, result.flag1), result.flag0);
    },
    xSleep$1(duration) {
      this._runInWorker$2$2(B.WorkerOperation_readFlags_readEmpty_5_xSleep, new A.Flags(B.JSInt_methods._tdivFast$1(duration._duration, 1000), 0, 0), type$.Flags, type$.EmptyMessage);
    },
    close$0() {
      var t1 = type$.EmptyMessage;
      this._runInWorker$2$2(B.WorkerOperation_readEmpty_readEmpty_12_stopServer, B.C_EmptyMessage, t1, t1);
    }
  };
  A.WasmFile.prototype = {
    get$xDeviceCharacteristics() {
      return 2048;
    },
    readInto$2(buffer, offset) {
      var t1, t2, t3, t4, t5, t6, t7, t8, totalBytesRead, bytesToRead, bytesRead, t9, t10,
        remainingBytes = buffer.length;
      for (t1 = type$.JSObject, t2 = this.vfs, t3 = this.fd, t4 = type$.Flags, t5 = t2.serializer.buffer, t6 = init.G, t7 = type$.JavaScriptFunction, t8 = type$.NativeUint8List, totalBytesRead = 0; remainingBytes > 0;) {
        bytesToRead = Math.min(65536, remainingBytes);
        remainingBytes -= bytesToRead;
        bytesRead = t2._runInWorker$2$2(B.WorkerOperation_readFlags_readFlags_3_xRead, new A.Flags(t3, offset + totalBytesRead, bytesToRead), t4, t4).flag0;
        t9 = t7._as(t6.Uint8Array);
        t10 = [t5];
        t10.push(0);
        t10.push(bytesRead);
        A.JSObjectUnsafeUtilExtension__callMethod(buffer, "set", t8._as(A.callConstructor(t9, t10, t1)), totalBytesRead, null, null);
        totalBytesRead += bytesRead;
        if (bytesRead < bytesToRead)
          break;
      }
      return totalBytesRead;
    },
    xCheckReservedLock$0() {
      return this.lockStatus !== 0 ? 1 : 0;
    },
    xClose$0() {
      this.vfs._runInWorker$2$2(B.WorkerOperation_readFlags_readEmpty_6_xClose, new A.Flags(this.fd, 0, 0), type$.Flags, type$.EmptyMessage);
    },
    xFileSize$0() {
      var t1 = type$.Flags;
      return this.vfs._runInWorker$2$2(B.WorkerOperation_readFlags_readFlags_7_xFileSize, new A.Flags(this.fd, 0, 0), t1, t1).flag0;
    },
    xLock$1(mode) {
      var _this = this;
      if (_this.lockStatus === 0)
        _this.vfs._runInWorker$2$2(B.WorkerOperation_readFlags_readEmpty_10_xLock, new A.Flags(_this.fd, mode, 0), type$.Flags, type$.EmptyMessage);
      _this.lockStatus = mode;
    },
    xSync$1(flags) {
      this.vfs._runInWorker$2$2(B.WorkerOperation_readFlags_readEmpty_8_xSync, new A.Flags(this.fd, 0, 0), type$.Flags, type$.EmptyMessage);
    },
    xTruncate$1(size) {
      this.vfs._runInWorker$2$2(B.WorkerOperation_readFlags_readEmpty_9_xTruncate, new A.Flags(this.fd, size, 0), type$.Flags, type$.EmptyMessage);
    },
    xUnlock$1(mode) {
      if (this.lockStatus !== 0 && mode === 0)
        this.vfs._runInWorker$2$2(B.WorkerOperation_readFlags_readEmpty_11_xUnlock, new A.Flags(this.fd, mode, 0), type$.Flags, type$.EmptyMessage);
    },
    xWrite$2(buffer, fileOffset) {
      var t1, t2, t3, t4, t5, totalBytesWritten, bytesToWrite,
        remainingBytes = buffer.length;
      for (t1 = this.vfs, t2 = t1.serializer.byteView, t3 = this.fd, t4 = type$.Flags, t5 = type$.EmptyMessage, totalBytesWritten = 0; remainingBytes > 0;) {
        bytesToWrite = Math.min(65536, remainingBytes);
        A.JSObjectUnsafeUtilExtension__callMethod(t2, "set", bytesToWrite === remainingBytes && totalBytesWritten === 0 ? buffer : J.asUint8List$2$x(B.NativeUint8List_methods.get$buffer(buffer), buffer.byteOffset + totalBytesWritten, bytesToWrite), 0, null, null);
        t1._runInWorker$2$2(B.WorkerOperation_readFlags_readEmpty_4_xWrite, new A.Flags(t3, fileOffset + totalBytesWritten, bytesToWrite), t4, t5);
        totalBytesWritten += bytesToWrite;
        remainingBytes -= bytesToWrite;
      }
    }
  };
  A.RequestResponseSynchronizer.prototype = {};
  A.MessageSerializer.prototype = {
    write$1(message) {
      var t1, encoded;
      if (!(message instanceof A.EmptyMessage))
        if (message instanceof A.Flags) {
          t1 = this.dataView;
          t1.$flags & 2 && A.throwUnsupportedOperation(t1, 8);
          t1.setInt32(0, message.flag0, false);
          t1.setInt32(4, message.flag1, false);
          t1.setInt32(8, message.flag2, false);
          if (message instanceof A.NameAndInt32Flags) {
            encoded = B.C_Utf8Encoder.convert$1(message.name);
            t1.setInt32(12, encoded.length, false);
            B.NativeUint8List_methods.setAll$2(this.byteView, 16, encoded);
          }
        } else
          throw A.wrapException(A.UnsupportedError$("Message " + message.toString$0(0)));
    }
  };
  A.WorkerOperation.prototype = {
    _enumToString$0() {
      return "WorkerOperation." + this._name;
    }
  };
  A.Message0.prototype = {};
  A.EmptyMessage.prototype = {};
  A.Flags.prototype = {};
  A.NameAndInt32Flags.prototype = {};
  A._ResolvedPath.prototype = {};
  A.VfsWorker.prototype = {
    _resolvePath$2$createDirectories(absolutePath, createDirectories) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$._ResolvedPath),
        $async$returnValue, $async$self = this, file, t2, $directories, dirHandle, _i, t1, fullPath, _0_0, _0_1;
      var $async$_resolvePath$2$createDirectories = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $.$get$url();
              fullPath = t1.relative$2$from(absolutePath, "/");
              _0_0 = t1.split$1(0, fullPath);
              _0_1 = _0_0.length;
              t1 = _0_1 >= 1;
              file = null;
              if (t1) {
                t2 = _0_1 - 1;
                $directories = B.JSArray_methods.sublist$2(_0_0, 0, t2);
                if (!(t2 >= 0 && t2 < _0_0.length)) {
                  $async$returnValue = A.ioore(_0_0, t2);
                  // goto return
                  $async$goto = 1;
                  break;
                }
                file = _0_0[t2];
              } else
                $directories = null;
              if (!t1)
                throw A.wrapException(A.StateError$("Pattern matching error"));
              dirHandle = $async$self.root;
              t1 = $directories.length, t2 = type$.JSObject, _i = 0;
            case 3:
              // for condition
              if (!(_i < $directories.length)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(dirHandle.getDirectoryHandle($directories[_i], {create: createDirectories})), t2), $async$_resolvePath$2$createDirectories);
            case 6:
              // returning from await.
              dirHandle = $async$result;
            case 4:
              // for update
              $directories.length === t1 || (0, A.throwConcurrentModificationError)($directories), ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = new A._ResolvedPath(fullPath, dirHandle, file);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_resolvePath$2$createDirectories, $async$completer);
    },
    _resolvePath$1(absolutePath) {
      return this._resolvePath$2$createDirectories(absolutePath, false);
    },
    _xAccess$1(flags) {
      return this._xAccess$body$VfsWorker(flags);
    },
    _xAccess$body$VfsWorker(flags) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Flags),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, resolved, t1, exception, $async$exception;
      var $async$_xAccess$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait($async$self._resolvePath$1(flags.name), $async$_xAccess$1);
            case 7:
              // returning from await.
              resolved = $async$result;
              t1 = resolved;
              $async$goto = 8;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(t1.directory.getFileHandle(t1.filename, {create: false})), type$.JSObject), $async$_xAccess$1);
            case 8:
              // returning from await.
              $async$returnValue = new A.Flags(1, 0, 0);
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$errorStack.pop();
              $async$returnValue = new A.Flags(0, 0, 0);
              // goto return
              $async$goto = 1;
              break;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_xAccess$1, $async$completer);
    },
    _xDelete$1(options) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$handler = 1, $async$errorStack = [], $async$self = this, e, exception, resolved, $async$exception;
      var $async$_xDelete$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait($async$self._resolvePath$1(options.name), $async$_xDelete$1);
            case 2:
              // returning from await.
              resolved = $async$result;
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(A.FileSystemDirectoryHandleApi_remove(resolved.directory, resolved.filename), $async$_xDelete$1);
            case 7:
              // returning from await.
              $async$handler = 1;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$errorStack.pop();
              e = A.unwrapException($async$exception);
              A.S(e);
              throw A.wrapException(B.VfsException_2570);
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 1;
              break;
            case 6:
              // after finally
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_xDelete$1, $async$completer);
    },
    _xOpen$1(req) {
      return this._xOpen$body$VfsWorker(req);
    },
    _xOpen$body$VfsWorker(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Flags),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, exception, t1, t2, fileHandle, readonly, flags, create, resolved, $async$exception;
      var $async$_xOpen$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              flags = req.flag0;
              create = (flags & 4) !== 0;
              resolved = null;
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait($async$self._resolvePath$2$createDirectories(req.name, create), $async$_xOpen$1);
            case 7:
              // returning from await.
              resolved = $async$result;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$errorStack.pop();
              t1 = A.VfsException$(12);
              throw A.wrapException(t1);
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
              t1 = resolved;
              t2 = A._asBool(create);
              $async$goto = 8;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(t1.directory.getFileHandle(t1.filename, {create: t2})), type$.JSObject), $async$_xOpen$1);
            case 8:
              // returning from await.
              fileHandle = $async$result;
              readonly = !create && (flags & 1) !== 0;
              t1 = $async$self._fdCounter++;
              t2 = resolved.directory;
              $async$self._openFiles.$indexSet(0, t1, new A._OpenedFileHandle(t1, readonly, (flags & 8) !== 0, resolved.fullPath, t2, resolved.filename, fileHandle));
              $async$returnValue = new A.Flags(readonly ? 1 : 0, t1, 0);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_xOpen$1, $async$completer);
    },
    _xRead$1(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Flags),
        $async$returnValue, $async$self = this, bufferLength, t1, $async$temp1, $async$temp2;
      var $async$_xRead$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._openFiles.$index(0, req.flag0);
              t1.toString;
              bufferLength = req.flag2;
              A.assertHelper(bufferLength <= 65536);
              $async$temp1 = A;
              $async$temp2 = A;
              $async$goto = 3;
              return A._asyncAwait($async$self._openForSynchronousAccess$1(t1), $async$_xRead$1);
            case 3:
              // returning from await.
              $async$returnValue = new $async$temp1.Flags($async$temp2.FileSystemSyncAccessHandleApi_readDart($async$result, A.SharedArrayBuffer_asUint8ListSlice($async$self.messages.buffer, 0, bufferLength), {at: req.flag1}), 0, 0);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_xRead$1, $async$completer);
    },
    _xWrite$1(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.EmptyMessage),
        $async$returnValue, $async$self = this, bufferLength, t1, $async$temp1;
      var $async$_xWrite$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._openFiles.$index(0, req.flag0);
              t1.toString;
              bufferLength = req.flag2;
              A.assertHelper(bufferLength <= 65536);
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait($async$self._openForSynchronousAccess$1(t1), $async$_xWrite$1);
            case 3:
              // returning from await.
              if ($async$temp1.FileSystemSyncAccessHandleApi_writeDart($async$result, A.SharedArrayBuffer_asUint8ListSlice($async$self.messages.buffer, 0, bufferLength), {at: req.flag1}) !== bufferLength)
                throw A.wrapException(B.VfsException_778);
              $async$returnValue = B.C_EmptyMessage;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_xWrite$1, $async$completer);
    },
    _xClose$1(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, file;
      var $async$_xClose$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              file = $async$self._openFiles.remove$1(0, req.flag0);
              $async$self._implicitlyHeldLocks.remove$1(0, file);
              if (file == null)
                throw A.wrapException(B.VfsException_12);
              $async$self._closeSyncHandle$1(file);
              $async$goto = file.deleteOnClose ? 2 : 3;
              break;
            case 2:
              // then
              $async$goto = 4;
              return A._asyncAwait(A.FileSystemDirectoryHandleApi_remove(file.directory, file.filename), $async$_xClose$1);
            case 4:
              // returning from await.
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_xClose$1, $async$completer);
    },
    _xFileSize$1(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Flags),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$next = [], $async$self = this, file, syncHandle, size, t1;
      var $async$_xFileSize$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._openFiles.$index(0, req.flag0);
              t1.toString;
              file = t1;
              $async$handler = 3;
              $async$goto = 6;
              return A._asyncAwait($async$self._openForSynchronousAccess$1(file), $async$_xFileSize$1);
            case 6:
              // returning from await.
              syncHandle = $async$result;
              size = A._asInt(syncHandle.getSize());
              $async$returnValue = new A.Flags(size, 0, 0);
              $async$next = [1];
              // goto finally
              $async$goto = 4;
              break;
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 4:
              // finally
              $async$handler = 2;
              t1 = type$._OpenedFileHandle._as(file);
              if ($async$self._implicitlyHeldLocks.remove$1(0, t1))
                $async$self._closeSyncHandleNoThrow$1(t1);
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_xFileSize$1, $async$completer);
    },
    _xTruncate$1(req) {
      return this._xTruncate$body$VfsWorker(req);
    },
    _xTruncate$body$VfsWorker(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.EmptyMessage),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$next = [], $async$self = this, file, syncHandle, t1;
      var $async$_xTruncate$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._openFiles.$index(0, req.flag0);
              t1.toString;
              file = t1;
              if (file.readonly)
                A.throwExpression(B.VfsException_8);
              $async$handler = 3;
              $async$goto = 6;
              return A._asyncAwait($async$self._openForSynchronousAccess$1(file), $async$_xTruncate$1);
            case 6:
              // returning from await.
              syncHandle = $async$result;
              syncHandle.truncate(req.flag1);
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 4:
              // finally
              $async$handler = 2;
              t1 = type$._OpenedFileHandle._as(file);
              if ($async$self._implicitlyHeldLocks.remove$1(0, t1))
                $async$self._closeSyncHandleNoThrow$1(t1);
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
              $async$returnValue = B.C_EmptyMessage;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_xTruncate$1, $async$completer);
    },
    _xSync$1(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.EmptyMessage),
        $async$returnValue, $async$self = this, file, syncHandle;
      var $async$_xSync$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              file = $async$self._openFiles.$index(0, req.flag0);
              syncHandle = file.syncHandle;
              if (!file.readonly && syncHandle != null)
                syncHandle.flush();
              $async$returnValue = B.C_EmptyMessage;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_xSync$1, $async$completer);
    },
    _xLock$1(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.EmptyMessage),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, file, exception, t1, $async$exception;
      var $async$_xLock$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._openFiles.$index(0, req.flag0);
              t1.toString;
              file = t1;
              $async$goto = file.syncHandle == null ? 3 : 5;
              break;
            case 3:
              // then
              $async$handler = 7;
              $async$goto = 10;
              return A._asyncAwait($async$self._openForSynchronousAccess$1(file), $async$_xLock$1);
            case 10:
              // returning from await.
              file.explicitlyLocked = true;
              $async$handler = 2;
              // goto after finally
              $async$goto = 9;
              break;
            case 7:
              // catch
              $async$handler = 6;
              $async$exception = $async$errorStack.pop();
              throw A.wrapException(B.VfsException_3850);
              // goto after finally
              $async$goto = 9;
              break;
            case 6:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 9:
              // after finally
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              file.explicitlyLocked = true;
            case 4:
              // join
              $async$returnValue = B.C_EmptyMessage;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_xLock$1, $async$completer);
    },
    _xUnlock$1(req) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.EmptyMessage),
        $async$returnValue, $async$self = this, file;
      var $async$_xUnlock$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              file = $async$self._openFiles.$index(0, req.flag0);
              if (file.syncHandle != null && req.flag1 === 0)
                $async$self._closeSyncHandle$1(file);
              $async$returnValue = B.C_EmptyMessage;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_xUnlock$1, $async$completer);
    },
    start$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, rc, opcode, request, response, e, e0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, opcode0, exception, $async$exception;
      var $async$start$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.synchronizer.int32View, t2 = init.G, t3 = $async$self.messages, t4 = $async$self.get$_releaseImplicitLock(), t5 = $async$self._implicitlyHeldLocks, t6 = t5.$ti._precomputed1, t7 = type$.Flags, t8 = type$.NameAndInt32Flags, t9 = type$.void;
            case 3:
              // for condition
              if (!!$async$self._stopped) {
                // goto after for
                $async$goto = 4;
                break;
              }
              if (A._asString(t2.Atomics.wait(t1, 0, -1, 150)) === "timed-out") {
                t10 = A.List_List$_of(t5, t6);
                B.JSArray_methods.forEach$1(t10, t4);
                // goto for condition
                $async$goto = 3;
                break;
              }
              rc = null;
              opcode = null;
              request = null;
              $async$handler = 6;
              opcode0 = A._asInt(t2.Atomics.load(t1, 0));
              A._asInt(t2.Atomics.store(t1, 0, -1));
              if (!(opcode0 >= 0 && opcode0 < 13)) {
                $async$returnValue = A.ioore(B.List_mvT, opcode0);
                // goto return
                $async$goto = 1;
                break;
              }
              opcode = B.List_mvT[opcode0];
              request = opcode.readRequest.call$1(t3);
              response = null;
            case 9:
              // switch
              switch (opcode.index) {
                case 5:
                  // goto case
                  $async$goto = 11;
                  break;
                case 0:
                  // goto case
                  $async$goto = 12;
                  break;
                case 1:
                  // goto case
                  $async$goto = 13;
                  break;
                case 2:
                  // goto case
                  $async$goto = 14;
                  break;
                case 3:
                  // goto case
                  $async$goto = 15;
                  break;
                case 4:
                  // goto case
                  $async$goto = 16;
                  break;
                case 6:
                  // goto case
                  $async$goto = 17;
                  break;
                case 7:
                  // goto case
                  $async$goto = 18;
                  break;
                case 9:
                  // goto case
                  $async$goto = 19;
                  break;
                case 8:
                  // goto case
                  $async$goto = 20;
                  break;
                case 10:
                  // goto case
                  $async$goto = 21;
                  break;
                case 11:
                  // goto case
                  $async$goto = 22;
                  break;
                case 12:
                  // goto case
                  $async$goto = 23;
                  break;
                default:
                  // goto after switch
                  $async$goto = 10;
                  break;
              }
              break;
            case 11:
              // case
              t10 = A.List_List$_of(t5, t6);
              B.JSArray_methods.forEach$1(t10, t4);
              $async$goto = 24;
              return A._asyncAwait(A.Future_Future$delayed(A.Duration$(0, t7._as(request).flag0), t9), $async$start$0);
            case 24:
              // returning from await.
              response = B.C_EmptyMessage;
              // goto after switch
              $async$goto = 10;
              break;
            case 12:
              // case
              $async$goto = 25;
              return A._asyncAwait($async$self._xAccess$1(t8._as(request)), $async$start$0);
            case 25:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 13:
              // case
              $async$goto = 26;
              return A._asyncAwait($async$self._xDelete$1(t8._as(request)), $async$start$0);
            case 26:
              // returning from await.
              response = B.C_EmptyMessage;
              // goto after switch
              $async$goto = 10;
              break;
            case 14:
              // case
              $async$goto = 27;
              return A._asyncAwait($async$self._xOpen$1(t8._as(request)), $async$start$0);
            case 27:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 15:
              // case
              $async$goto = 28;
              return A._asyncAwait($async$self._xRead$1(t7._as(request)), $async$start$0);
            case 28:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 16:
              // case
              $async$goto = 29;
              return A._asyncAwait($async$self._xWrite$1(t7._as(request)), $async$start$0);
            case 29:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 17:
              // case
              $async$goto = 30;
              return A._asyncAwait($async$self._xClose$1(t7._as(request)), $async$start$0);
            case 30:
              // returning from await.
              response = B.C_EmptyMessage;
              // goto after switch
              $async$goto = 10;
              break;
            case 18:
              // case
              $async$goto = 31;
              return A._asyncAwait($async$self._xFileSize$1(t7._as(request)), $async$start$0);
            case 31:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 19:
              // case
              $async$goto = 32;
              return A._asyncAwait($async$self._xTruncate$1(t7._as(request)), $async$start$0);
            case 32:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 20:
              // case
              $async$goto = 33;
              return A._asyncAwait($async$self._xSync$1(t7._as(request)), $async$start$0);
            case 33:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 21:
              // case
              $async$goto = 34;
              return A._asyncAwait($async$self._xLock$1(t7._as(request)), $async$start$0);
            case 34:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 22:
              // case
              $async$goto = 35;
              return A._asyncAwait($async$self._xUnlock$1(t7._as(request)), $async$start$0);
            case 35:
              // returning from await.
              response = $async$result;
              // goto after switch
              $async$goto = 10;
              break;
            case 23:
              // case
              response = B.C_EmptyMessage;
              $async$self._stopped = true;
              t10 = A.List_List$_of(t5, t6);
              B.JSArray_methods.forEach$1(t10, t4);
              // goto after switch
              $async$goto = 10;
              break;
            case 10:
              // after switch
              t3.write$1(response);
              rc = 0;
              $async$handler = 2;
              // goto after finally
              $async$goto = 8;
              break;
            case 6:
              // catch
              $async$handler = 5;
              $async$exception = $async$errorStack.pop();
              t10 = A.unwrapException($async$exception);
              if (t10 instanceof A.VfsException) {
                e = t10;
                A.S(e);
                A.S(opcode);
                A.S(request);
                rc = e.returnCode;
              } else {
                e0 = t10;
                A.S(e0);
                A.S(opcode);
                A.S(request);
                rc = 1;
              }
              // goto after finally
              $async$goto = 8;
              break;
            case 5:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 8:
              // after finally
              t10 = A._asInt(rc);
              A.assertHelper(t10 !== -1);
              A._asInt(t2.Atomics.store(t1, 1, t10));
              t2.Atomics.notify(t1, 1, 1 / 0);
              // goto for condition
              $async$goto = 3;
              break;
            case 4:
              // after for
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$start$0, $async$completer);
    },
    _releaseImplicitLock$1(handle) {
      type$._OpenedFileHandle._as(handle);
      if (this._implicitlyHeldLocks.remove$1(0, handle))
        this._closeSyncHandleNoThrow$1(handle);
    },
    _openForSynchronousAccess$1(file) {
      return this._openForSynchronousAccess$body$VfsWorker(file);
    },
    _openForSynchronousAccess$body$VfsWorker(file) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.JSObject),
        $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, attempt, handle, t1, t2, t3, handle0, t4, exception, existing, $async$exception;
      var $async$_openForSynchronousAccess$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$errorStack.push($async$result);
          $async$goto = $async$handler;
        }
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              existing = file.syncHandle;
              if (existing != null) {
                $async$returnValue = existing;
                // goto return
                $async$goto = 1;
                break;
              }
              attempt = 1;
              t1 = file.file, t2 = type$.JSObject, t3 = $async$self._implicitlyHeldLocks;
            case 3:
              // for condition
              // trivial condition
              $async$handler = 6;
              $async$goto = 9;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject(t1.createSyncAccessHandle()), t2), $async$_openForSynchronousAccess$1);
            case 9:
              // returning from await.
              handle0 = $async$result;
              file.set$syncHandle(handle0);
              handle = handle0;
              if (!file.explicitlyLocked)
                t3.add$1(0, file);
              t4 = handle;
              $async$returnValue = t4;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 8;
              break;
            case 6:
              // catch
              $async$handler = 5;
              $async$exception = $async$errorStack.pop();
              if (J.$eq$(attempt, 6))
                throw A.wrapException(B.VfsException_10);
              A.S(attempt);
              t4 = attempt;
              if (typeof t4 !== "number") {
                $async$returnValue = t4.$add();
                // goto return
                $async$goto = 1;
                break;
              }
              attempt = t4 + 1;
              // goto after finally
              $async$goto = 8;
              break;
            case 5:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 8:
              // after finally
              // goto for condition
              $async$goto = 3;
              break;
            case 4:
              // after for
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$errorStack.at(-1), $async$completer);
          }
      });
      return A._asyncStartSync($async$_openForSynchronousAccess$1, $async$completer);
    },
    _closeSyncHandleNoThrow$1(handle) {
      var exception;
      try {
        this._closeSyncHandle$1(handle);
      } catch (exception) {
      }
    },
    _closeSyncHandle$1(handle) {
      var syncHandle = handle.syncHandle;
      if (syncHandle != null) {
        handle.syncHandle = null;
        this._implicitlyHeldLocks.remove$1(0, handle);
        handle.explicitlyLocked = false;
        syncHandle.close();
      }
    }
  };
  A._OpenedFileHandle.prototype = {
    set$syncHandle(syncHandle) {
      this.syncHandle = A._asJSObjectQ(syncHandle);
    }
  };
  A.AsynchronousIndexedDbFileSystem.prototype = {
    _rangeOverFile$3$endOffsetInclusive$startOffset(fileId, endOffsetInclusive, startOffset) {
      var t1 = type$.JSArray_double;
      return A._asJSObject(init.G.IDBKeyRange.bound(A._setArrayType([fileId, startOffset], t1), A._setArrayType([fileId, endOffsetInclusive], t1)));
    },
    _rangeOverFile$1(fileId) {
      return this._rangeOverFile$3$endOffsetInclusive$startOffset(fileId, 9007199254740992, 0);
    },
    _rangeOverFile$2$startOffset(fileId, startOffset) {
      return this._rangeOverFile$3$endOffsetInclusive$startOffset(fileId, 9007199254740992, startOffset);
    },
    open$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, openRequest;
      var $async$open$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = new A._Future($.Zone__current, type$._Future_JSObject);
              openRequest = A._asJSObject(A._asJSObjectQ(init.G.indexedDB).open($async$self._dbName, 1));
              openRequest.onupgradeneeded = A._functionToJS1(new A.AsynchronousIndexedDbFileSystem_open_closure(openRequest));
              new A._SyncCompleter(t1, type$._SyncCompleter_JSObject).complete$1(A.CompleteOpenIdbRequest_completeOrBlocked(openRequest, type$.JSObject));
              $async$goto = 2;
              return A._asyncAwait(t1, $async$open$0);
            case 2:
              // returning from await.
              $async$self._indexed_db$_database = $async$result;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$open$0, $async$completer);
    },
    close$0() {
      var t1 = this._indexed_db$_database;
      if (t1 != null)
        t1.close();
    },
    listFiles$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Map_String_int),
        $async$returnValue, $async$self = this, row, t1, t2, result, iterator;
      var $async$listFiles$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              result = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.int);
              iterator = new A._CursorReader(A._asJSObject(A._asJSObject(A._asJSObject(A._asJSObject($async$self._indexed_db$_database.transaction("files", "readonly")).objectStore("files")).index("fileName")).openKeyCursor()), type$._CursorReader_JSObject);
            case 3:
              // while condition
              $async$goto = 5;
              return A._asyncAwait(iterator.moveNext$0(), $async$listFiles$0);
            case 5:
              // returning from await.
              if (!$async$result) {
                // goto after while
                $async$goto = 4;
                break;
              }
              row = iterator._cursor;
              if (row == null)
                row = A.throwExpression(A.StateError$("Await moveNext() first"));
              t1 = row.key;
              t1.toString;
              A._asString(t1);
              t2 = row.primaryKey;
              t2.toString;
              result.$indexSet(0, t1, A._asInt(A._asDouble(t2)));
              // goto while condition
              $async$goto = 3;
              break;
            case 4:
              // after while
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$listFiles$0, $async$completer);
    },
    fileIdForPath$1(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_int),
        $async$returnValue, $async$self = this, $async$temp1;
      var $async$fileIdForPath$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(A._asJSObject(A._asJSObject(A._asJSObject($async$self._indexed_db$_database.transaction("files", "readonly")).objectStore("files")).index("fileName")).getKey(path)), type$.double), $async$fileIdForPath$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$temp1._asInt($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$fileIdForPath$1, $async$completer);
    },
    createFile$1(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.int),
        $async$returnValue, $async$self = this, $async$temp1;
      var $async$createFile$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(A._asJSObject(A._asJSObject($async$self._indexed_db$_database.transaction("files", "readwrite")).objectStore("files")).put({name: path, length: 0})), type$.double), $async$createFile$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$temp1._asInt($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$createFile$1, $async$completer);
    },
    _readFile$2(transaction, fileId) {
      return A.CompleteIdbRequest_complete(A._asJSObject(A._asJSObject(transaction.objectStore("files")).get(fileId)), type$.nullable_JSObject).then$1$1(new A.AsynchronousIndexedDbFileSystem__readFile_closure(fileId), type$.JSObject);
    },
    readFully$1(fileId) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Uint8List),
        $async$returnValue, $async$self = this, transaction, blocks, file, result, readOperations, reader, t2, row, t, rowOffset, t1;
      var $async$readFully$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._indexed_db$_database;
              t1.toString;
              transaction = A._asJSObject(t1.transaction($.$get$AsynchronousIndexedDbFileSystem__storesJs(), "readonly"));
              blocks = A._asJSObject(transaction.objectStore("blocks"));
              $async$goto = 3;
              return A._asyncAwait($async$self._readFile$2(transaction, fileId), $async$readFully$1);
            case 3:
              // returning from await.
              file = $async$result;
              t1 = A._asInt(file.length);
              result = new Uint8Array(t1);
              readOperations = A._setArrayType([], type$.JSArray_Future_void);
              reader = new A._CursorReader(A._asJSObject(blocks.openCursor($async$self._rangeOverFile$1(fileId))), type$._CursorReader_JSObject);
              t1 = type$.void, t2 = type$.JSArray_nullable_Object;
            case 4:
              // for condition
              $async$goto = 6;
              return A._asyncAwait(reader.moveNext$0(), $async$readFully$1);
            case 6:
              // returning from await.
              if (!$async$result) {
                // goto after for
                $async$goto = 5;
                break;
              }
              row = reader._cursor;
              if (row == null)
                row = A.throwExpression(A.StateError$("Await moveNext() first"));
              t = t2._as(row.key);
              if (1 < 0 || 1 >= t.length) {
                $async$returnValue = A.ioore(t, 1);
                // goto return
                $async$goto = 1;
                break;
              }
              rowOffset = A._asInt(A._asDouble(t[1]));
              B.JSArray_methods.add$1(readOperations, A.Future_Future$sync(new A.AsynchronousIndexedDbFileSystem_readFully_closure(row, result, rowOffset, Math.min(4096, A._asInt(file.length) - rowOffset)), t1));
              // goto for condition
              $async$goto = 4;
              break;
            case 5:
              // after for
              $async$goto = 7;
              return A._asyncAwait(A.Future_wait(readOperations, t1), $async$readFully$1);
            case 7:
              // returning from await.
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$readFully$1, $async$completer);
    },
    _write$2(fileId, writes) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, transaction, blocks, file, t2, changedOffsets, fileCursor, t1;
      var $async$_write$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._indexed_db$_database;
              t1.toString;
              transaction = A._asJSObject(t1.transaction($.$get$AsynchronousIndexedDbFileSystem__storesJs(), "readwrite"));
              blocks = A._asJSObject(transaction.objectStore("blocks"));
              $async$goto = 2;
              return A._asyncAwait($async$self._readFile$2(transaction, fileId), $async$_write$2);
            case 2:
              // returning from await.
              file = $async$result;
              t1 = writes.replacedBlocks;
              t2 = A._instanceType(t1)._eval$1("LinkedHashMapKeysIterable<1>");
              changedOffsets = A.List_List$_of(new A.LinkedHashMapKeysIterable(t1, t2), t2._eval$1("Iterable.E"));
              B.JSArray_methods.sort$0(changedOffsets);
              t1 = A._arrayInstanceType(changedOffsets);
              $async$goto = 3;
              return A._asyncAwait(A.Future_wait(new A.MappedListIterable(changedOffsets, t1._eval$1("Future<~>(1)")._as(new A.AsynchronousIndexedDbFileSystem__write_closure(new A.AsynchronousIndexedDbFileSystem__write_writeBlock(blocks, fileId), writes)), t1._eval$1("MappedListIterable<1,Future<~>>")), type$.void), $async$_write$2);
            case 3:
              // returning from await.
              $async$goto = writes.newFileLength !== A._asInt(file.length) ? 4 : 5;
              break;
            case 4:
              // then
              fileCursor = new A._CursorReader(A._asJSObject(A._asJSObject(transaction.objectStore("files")).openCursor(fileId)), type$._CursorReader_JSObject);
              $async$goto = 6;
              return A._asyncAwait(fileCursor.moveNext$0(), $async$_write$2);
            case 6:
              // returning from await.
              $async$goto = 7;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(fileCursor.get$current().update({name: A._asString(file.name), length: writes.newFileLength})), type$.nullable_Object), $async$_write$2);
            case 7:
              // returning from await.
            case 5:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_write$2, $async$completer);
    },
    truncate$2(_, fileId, $length) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, transaction, files, blocks, file, fileCursor, t1;
      var $async$truncate$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._indexed_db$_database;
              t1.toString;
              transaction = A._asJSObject(t1.transaction($.$get$AsynchronousIndexedDbFileSystem__storesJs(), "readwrite"));
              files = A._asJSObject(transaction.objectStore("files"));
              blocks = A._asJSObject(transaction.objectStore("blocks"));
              $async$goto = 2;
              return A._asyncAwait($async$self._readFile$2(transaction, fileId), $async$truncate$2);
            case 2:
              // returning from await.
              file = $async$result;
              $async$goto = A._asInt(file.length) > $length ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(blocks.delete($async$self._rangeOverFile$2$startOffset(fileId, B.JSInt_methods._tdivFast$1($length, 4096) * 4096 + 1))), type$.nullable_Object), $async$truncate$2);
            case 5:
              // returning from await.
            case 4:
              // join
              fileCursor = new A._CursorReader(A._asJSObject(files.openCursor(fileId)), type$._CursorReader_JSObject);
              $async$goto = 6;
              return A._asyncAwait(fileCursor.moveNext$0(), $async$truncate$2);
            case 6:
              // returning from await.
              $async$goto = 7;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(fileCursor.get$current().update({name: A._asString(file.name), length: $length})), type$.nullable_Object), $async$truncate$2);
            case 7:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$truncate$2, $async$completer);
    },
    deleteFile$1(id) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, transaction, blocksRange, t1;
      var $async$deleteFile$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._indexed_db$_database;
              t1.toString;
              transaction = A._asJSObject(t1.transaction(A._setArrayType(["files", "blocks"], type$.JSArray_String), "readwrite"));
              blocksRange = $async$self._rangeOverFile$3$endOffsetInclusive$startOffset(id, 9007199254740992, 0);
              t1 = type$.nullable_Object;
              $async$goto = 2;
              return A._asyncAwait(A.Future_wait(A._setArrayType([A.CompleteIdbRequest_complete(A._asJSObject(A._asJSObject(transaction.objectStore("blocks")).delete(blocksRange)), t1), A.CompleteIdbRequest_complete(A._asJSObject(A._asJSObject(transaction.objectStore("files")).delete(id)), t1)], type$.JSArray_Future_void), type$.void), $async$deleteFile$1);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$deleteFile$1, $async$completer);
    }
  };
  A.AsynchronousIndexedDbFileSystem_open_closure.prototype = {
    call$1(change) {
      var database;
      A._asJSObject(change);
      database = A._asJSObject(this.openRequest.result);
      if (A._asInt(change.oldVersion) === 0) {
        A._asJSObject(A._asJSObject(database.createObjectStore("files", {autoIncrement: true})).createIndex("fileName", "name", {unique: true}));
        A._asJSObject(database.createObjectStore("blocks"));
      }
    },
    $signature: 12
  };
  A.AsynchronousIndexedDbFileSystem__readFile_closure.prototype = {
    call$1(value) {
      A._asJSObjectQ(value);
      if (value == null)
        throw A.wrapException(A.ArgumentError$value(this.fileId, "fileId", "File not found in database"));
      else
        return value;
    },
    $signature: 67
  };
  A.AsynchronousIndexedDbFileSystem_readFully_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, data;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.row;
              $async$goto = A.JSAnyUtilityExtension_instanceOfString(t1.value, "Blob") ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.ReadBlob_byteBuffer(A._asJSObject(t1.value)), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              $async$result = type$.NativeArrayBuffer._as(t1.value);
            case 3:
              // join
              data = $async$result;
              B.NativeUint8List_methods.setAll$2($async$self.result, $async$self.rowOffset, J.asUint8List$2$x(data, 0, $async$self.length));
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 2
  };
  A.AsynchronousIndexedDbFileSystem__write_writeBlock.prototype = {
    call$2(blockStart, block) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, _this, t2, cursor, value, t3;
      var $async$call$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              if (A.assertTest(block.length === 4096))
                A.assertThrow("Invalid block size");
              t1 = $async$self.blocks;
              _this = $async$self.fileId;
              t2 = type$.JSArray_double;
              $async$goto = 2;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(t1.openCursor(A._asJSObject(init.G.IDBKeyRange.only(A._setArrayType([_this, blockStart], t2))))), type$.nullable_JSObject), $async$call$2);
            case 2:
              // returning from await.
              cursor = $async$result;
              value = type$.NativeArrayBuffer._as(B.NativeUint8List_methods.get$buffer(block));
              t3 = type$.nullable_Object;
              $async$goto = cursor == null ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(t1.put(value, A._setArrayType([_this, blockStart], t2))), t3), $async$call$2);
            case 6:
              // returning from await.
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$goto = 7;
              return A._asyncAwait(A.CompleteIdbRequest_complete(A._asJSObject(cursor.update(value)), t3), $async$call$2);
            case 7:
              // returning from await.
            case 4:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$2, $async$completer);
    },
    $signature: 68
  };
  A.AsynchronousIndexedDbFileSystem__write_closure.prototype = {
    call$1(offset) {
      var t1;
      A._asInt(offset);
      t1 = this.writes.replacedBlocks.$index(0, offset);
      t1.toString;
      return this.writeBlock.call$2(offset, t1);
    },
    $signature: 69
  };
  A._FileWriteRequest.prototype = {
    _updateBlock$3(blockOffset, offsetInBlock, data) {
      B.NativeUint8List_methods.setAll$2(this.replacedBlocks.putIfAbsent$2(blockOffset, new A._FileWriteRequest__updateBlock_closure(this, blockOffset)), offsetInBlock, data);
    },
    addWrite$2(offset, data) {
      var t1, offsetInData, offsetInFile, t2, offsetInBlock, t3, bytesToWrite, offsetInData0;
      for (t1 = data.length, offsetInData = 0; offsetInData < t1; offsetInData = offsetInData0) {
        offsetInFile = offset + offsetInData;
        t2 = B.JSInt_methods._tdivFast$1(offsetInFile, 4096);
        offsetInBlock = B.JSInt_methods.$mod(offsetInFile, 4096);
        t3 = t1 - offsetInData;
        if (offsetInBlock !== 0)
          bytesToWrite = Math.min(4096 - offsetInBlock, t3);
        else {
          bytesToWrite = Math.min(4096, t3);
          offsetInBlock = 0;
        }
        offsetInData0 = offsetInData + bytesToWrite;
        this._updateBlock$3(t2 * 4096, offsetInBlock, J.asUint8List$2$x(B.NativeUint8List_methods.get$buffer(data), data.byteOffset + offsetInData, bytesToWrite));
      }
      this.newFileLength = Math.max(this.newFileLength, offset + t1);
    }
  };
  A._FileWriteRequest__updateBlock_closure.prototype = {
    call$0() {
      var block = new Uint8Array(4096),
        t1 = this.$this.originalContent,
        t2 = t1.length,
        t3 = this.blockOffset;
      if (t2 > t3)
        B.NativeUint8List_methods.setAll$2(block, 0, J.asUint8List$2$x(B.NativeUint8List_methods.get$buffer(t1), t1.byteOffset + t3, Math.min(4096, t2 - t3)));
      return block;
    },
    $signature: 70
  };
  A._OffsetAndBuffer.prototype = {};
  A.IndexedDbFileSystem.prototype = {
    _submitWork$1(work) {
      var _this = this;
      if (_this._isClosing || _this._asynchronous._indexed_db$_database == null)
        A.throwExpression(A.VfsException$(10));
      if (work.insertInto$1(_this._pendingWork)) {
        _this._startWorkingIfNeeded$0();
        return work.completer.future;
      } else
        return A.Future_Future$value(null, type$.void);
    },
    _startWorkingIfNeeded$0() {
      var t1, item, _this = this;
      if (_this._currentWorkItem == null && !_this._pendingWork.get$isEmpty(0)) {
        t1 = _this._pendingWork;
        item = _this._currentWorkItem = t1.get$first(0);
        t1.remove$1(0, item);
        item.completer.complete$1(A.Future_Future(item.get$run(), type$.void).whenComplete$1(new A.IndexedDbFileSystem__startWorkingIfNeeded_closure(_this)));
      }
    },
    close$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, result, t1;
      var $async$close$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              if (!$async$self._isClosing) {
                result = $async$self._submitWork$1(new A._FunctionWorkItem(type$.void_Function._as($async$self._asynchronous.get$close()), new A._SyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._SyncCompleter_void)));
                $async$self._isClosing = true;
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              } else {
                t1 = $async$self._pendingWork;
                if (!t1.get$isEmpty(0)) {
                  $async$returnValue = t1.get$last(0).completer.future;
                  // goto return
                  $async$goto = 1;
                  break;
                }
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$close$0, $async$completer);
    },
    _fileId$1(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.int),
        $async$returnValue, $async$self = this, t2, t1;
      var $async$_fileId$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._knownFileIds;
              $async$goto = t1.containsKey$1(path) ? 3 : 5;
              break;
            case 3:
              // then
              t1 = t1.$index(0, path);
              t1.toString;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$goto = 6;
              return A._asyncAwait($async$self._asynchronous.fileIdForPath$1(path), $async$_fileId$1);
            case 6:
              // returning from await.
              t2 = $async$result;
              t2.toString;
              t1.$indexSet(0, path, t2);
              $async$returnValue = t2;
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_fileId$1, $async$completer);
    },
    _readFiles$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t2, t3, t4, t5, $name, fileId, buffer, data, t6, t1, rawFiles;
      var $async$_readFiles$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._asynchronous;
              $async$goto = 2;
              return A._asyncAwait(t1.listFiles$0(), $async$_readFiles$0);
            case 2:
              // returning from await.
              rawFiles = $async$result;
              $async$self._knownFileIds.addAll$1(0, rawFiles);
              t2 = rawFiles.get$entries(), t2 = t2.get$iterator(t2), t3 = $async$self._memory.fileData, t4 = type$.Uint8Buffer._eval$1("Iterable<TypedDataBuffer.E>");
            case 3:
              // for condition
              if (!t2.moveNext$0()) {
                // goto after for
                $async$goto = 4;
                break;
              }
              t5 = t2.get$current();
              $name = t5.key;
              fileId = t5.value;
              buffer = new A.Uint8Buffer(new Uint8Array(0), 0);
              $async$goto = 5;
              return A._asyncAwait(t1.readFully$1(fileId), $async$_readFiles$0);
            case 5:
              // returning from await.
              data = $async$result;
              t5 = data.length;
              buffer.set$length(0, t5);
              t4._as(data);
              t6 = buffer._typed_buffer$_length;
              if (t5 > t6)
                A.throwExpression(A.RangeError$range(t5, 0, t6, null, null));
              B.NativeUint8List_methods.setRange$4(buffer._typed_buffer$_buffer, 0, t5, data, 0);
              t3.$indexSet(0, $name, buffer);
              // goto for condition
              $async$goto = 3;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_readFiles$0, $async$completer);
    },
    xAccess$2(path, flags) {
      return this._memory.fileData.containsKey$1(path) ? 1 : 0;
    },
    xDelete$2(path, syncDir) {
      var _this = this;
      _this._memory.fileData.remove$1(0, path);
      if (!_this._inMemoryOnlyFiles.remove$1(0, path))
        _this._submitWork$1(new A._DeleteFileWorkItem(_this, path, new A._SyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._SyncCompleter_void)));
    },
    xFullPathName$1(path) {
      return $.$get$url().normalize$1("/" + path);
    },
    xOpen$2(path, flags) {
      var t1, t2, inMemoryFile, _this = this,
        pathStr = path.path;
      if (pathStr == null)
        pathStr = A.GenerateFilename_randomFileName(_this.random, "/");
      t1 = _this._memory;
      t2 = t1.fileData.containsKey$1(pathStr) ? 1 : 0;
      inMemoryFile = t1.xOpen$2(new A.Sqlite3Filename(pathStr), flags);
      if (t2 === 0)
        if ((flags & 8) !== 0)
          _this._inMemoryOnlyFiles.add$1(0, pathStr);
        else
          _this._submitWork$1(new A._CreateFileWorkItem(_this, pathStr, new A._SyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._SyncCompleter_void)));
      return new A._Record_2_file_outFlags(new A._IndexedDbFile(_this, inMemoryFile._0, pathStr), 0);
    },
    xSleep$1(duration) {
    }
  };
  A.IndexedDbFileSystem__startWorkingIfNeeded_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._currentWorkItem = null;
      t1._startWorkingIfNeeded$0();
    },
    $signature: 6
  };
  A._IndexedDbFile.prototype = {
    xRead$2(target, fileOffset) {
      this.memoryFile.xRead$2(target, fileOffset);
    },
    get$xDeviceCharacteristics() {
      return 0;
    },
    xCheckReservedLock$0() {
      return this.memoryFile._lockMode >= 2 ? 1 : 0;
    },
    xClose$0() {
    },
    xFileSize$0() {
      return this.memoryFile.xFileSize$0();
    },
    xLock$1(mode) {
      this.memoryFile._lockMode = mode;
      return null;
    },
    xSync$1(flags) {
    },
    xTruncate$1(size) {
      var _this = this,
        t1 = _this.vfs;
      if (t1._isClosing || t1._asynchronous._indexed_db$_database == null)
        A.throwExpression(A.VfsException$(10));
      _this.memoryFile.xTruncate$1(size);
      if (!t1._inMemoryOnlyFiles.contains$1(0, _this.path))
        t1._submitWork$1(new A._FunctionWorkItem(type$.void_Function._as(new A._IndexedDbFile_xTruncate_closure(_this, size)), new A._SyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._SyncCompleter_void)));
    },
    xUnlock$1(mode) {
      this.memoryFile._lockMode = mode;
      return null;
    },
    xWrite$2(buffer, fileOffset) {
      var t2, previousContent, previousList, copy, t3, t4, _this = this,
        t1 = _this.vfs;
      if (t1._isClosing || t1._asynchronous._indexed_db$_database == null)
        A.throwExpression(A.VfsException$(10));
      t2 = _this.path;
      if (t1._inMemoryOnlyFiles.contains$1(0, t2)) {
        _this.memoryFile.xWrite$2(buffer, fileOffset);
        return;
      }
      previousContent = t1._memory.fileData.$index(0, t2);
      if (previousContent == null)
        previousContent = new A.Uint8Buffer(new Uint8Array(0), 0);
      previousList = J.asUint8List$2$x(B.NativeUint8List_methods.get$buffer(previousContent._typed_buffer$_buffer), 0, previousContent._typed_buffer$_length);
      _this.memoryFile.xWrite$2(buffer, fileOffset);
      copy = new Uint8Array(buffer.length);
      B.NativeUint8List_methods.setAll$2(copy, 0, buffer);
      t3 = A._setArrayType([], type$.JSArray__OffsetAndBuffer);
      t4 = $.Zone__current;
      B.JSArray_methods.add$1(t3, new A._OffsetAndBuffer(fileOffset, copy));
      t1._submitWork$1(new A._WriteFileWorkItem(t1, t2, previousList, t3, new A._SyncCompleter(new A._Future(t4, type$._Future_void), type$._SyncCompleter_void)));
    },
    $isVirtualFileSystemFile: 1
  };
  A._IndexedDbFile_xTruncate_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, t1, t2, $async$temp1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = t1.vfs;
              $async$temp1 = t2._asynchronous;
              $async$goto = 3;
              return A._asyncAwait(t2._fileId$1(t1.path), $async$call$0);
            case 3:
              // returning from await.
              $async$returnValue = $async$temp1.truncate$2(0, $async$result, $async$self.size);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 2
  };
  A._IndexedDbWorkItem.prototype = {
    insertInto$1(pending) {
      type$.LinkedList__IndexedDbWorkItem._as(pending);
      pending.$ti._precomputed1._as(this);
      pending._insertBefore$3$updateFirst(pending._first, this, false);
      return true;
    }
  };
  A._FunctionWorkItem.prototype = {
    run$0() {
      return this.work.call$0();
    }
  };
  A._DeleteFileWorkItem.prototype = {
    insertInto$1(pending) {
      var current, t1, previous, t2;
      type$.LinkedList__IndexedDbWorkItem._as(pending);
      if (!pending.get$isEmpty(0)) {
        current = pending.get$last(0);
        for (t1 = this.path; current != null;)
          if (current instanceof A._DeleteFileWorkItem)
            if (current.path === t1)
              return false;
            else
              current = current.get$previous();
          else if (current instanceof A._WriteFileWorkItem) {
            previous = current.get$previous();
            if (current.path === t1) {
              t2 = current._list;
              t2.toString;
              t2._unlink$1(A._instanceType(current)._eval$1("LinkedListEntry.E")._as(current));
            }
            current = previous;
          } else if (current instanceof A._CreateFileWorkItem) {
            if (current.path === t1) {
              t1 = current._list;
              t1.toString;
              t1._unlink$1(A._instanceType(current)._eval$1("LinkedListEntry.E")._as(current));
              return false;
            }
            current = current.get$previous();
          } else
            break;
      }
      pending.$ti._precomputed1._as(this);
      pending._insertBefore$3$updateFirst(pending._first, this, false);
      return true;
    },
    run$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, t2, id;
      var $async$run$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.fileSystem;
              t2 = $async$self.path;
              $async$goto = 2;
              return A._asyncAwait(t1._fileId$1(t2), $async$run$0);
            case 2:
              // returning from await.
              id = $async$result;
              t1._knownFileIds.remove$1(0, t2);
              $async$goto = 3;
              return A._asyncAwait(t1._asynchronous.deleteFile$1(id), $async$run$0);
            case 3:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$run$0, $async$completer);
    }
  };
  A._CreateFileWorkItem.prototype = {
    run$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, t2, $async$temp1, $async$temp2;
      var $async$run$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.fileSystem;
              t2 = $async$self.path;
              $async$temp1 = t1._knownFileIds;
              $async$temp2 = t2;
              $async$goto = 2;
              return A._asyncAwait(t1._asynchronous.createFile$1(t2), $async$run$0);
            case 2:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, $async$result);
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$run$0, $async$completer);
    }
  };
  A._WriteFileWorkItem.prototype = {
    insertInto$1(pending) {
      var current, t1;
      type$.LinkedList__IndexedDbWorkItem._as(pending);
      current = pending._collection$_length === 0 ? null : pending.get$last(0);
      for (t1 = this.path; current != null;)
        if (current instanceof A._WriteFileWorkItem)
          if (current.path === t1) {
            B.JSArray_methods.addAll$1(current.writes, this.writes);
            return false;
          } else
            current = current.get$previous();
        else if (current instanceof A._CreateFileWorkItem) {
          if (current.path === t1)
            break;
          current = current.get$previous();
        } else
          break;
      pending.$ti._precomputed1._as(this);
      pending._insertBefore$3$updateFirst(pending._first, this, false);
      return true;
    },
    run$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t2, _i, write, t1, request, $async$temp1;
      var $async$run$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.originalContent;
              request = new A._FileWriteRequest(t1, A.LinkedHashMap_LinkedHashMap$_empty(type$.int, type$.Uint8List), t1.length);
              for (t1 = $async$self.writes, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
                write = t1[_i];
                request.addWrite$2(write.offset, write.buffer);
              }
              t1 = $async$self.fileSystem;
              $async$temp1 = t1._asynchronous;
              $async$goto = 3;
              return A._asyncAwait(t1._fileId$1($async$self.path), $async$run$0);
            case 3:
              // returning from await.
              $async$goto = 2;
              return A._asyncAwait($async$temp1._write$2($async$result, request), $async$run$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$run$0, $async$completer);
    }
  };
  A.FileType.prototype = {
    _enumToString$0() {
      return "FileType." + this._name;
    }
  };
  A.SimpleOpfsFileSystem.prototype = {
    _markExists$2(type, exists) {
      var t1 = this._existsList,
        t2 = type.index,
        t3 = exists ? 1 : 0;
      t1.$flags & 2 && A.throwUnsupportedOperation(t1);
      if (!(t2 < t1.length))
        return A.ioore(t1, t2);
      t1[t2] = t3;
      A.FileSystemSyncAccessHandleApi_writeDart(this._metaHandle, t1, {at: 0});
    },
    xAccess$2(path, flags) {
      var t1, t2,
        type = $.$get$FileType_byName().$index(0, path);
      if (type == null)
        return this._simple_opfs$_memory.fileData.containsKey$1(path) ? 1 : 0;
      else {
        t1 = this._existsList;
        A.FileSystemSyncAccessHandleApi_readDart(this._metaHandle, t1, {at: 0});
        t2 = type.index;
        if (!(t2 < t1.length))
          return A.ioore(t1, t2);
        return t1[t2];
      }
    },
    xDelete$2(path, syncDir) {
      var type = $.$get$FileType_byName().$index(0, path);
      if (type == null) {
        this._simple_opfs$_memory.fileData.remove$1(0, path);
        return null;
      } else
        this._markExists$2(type, false);
    },
    xFullPathName$1(path) {
      return $.$get$url().normalize$1("/" + path);
    },
    xOpen$2(path, flags) {
      var recognized, t1, t2, _this = this,
        pathStr = path.path;
      if (pathStr == null)
        return _this._simple_opfs$_memory.xOpen$2(path, flags);
      recognized = $.$get$FileType_byName().$index(0, pathStr);
      if (recognized == null)
        return _this._simple_opfs$_memory.xOpen$2(path, flags);
      t1 = _this._existsList;
      A.FileSystemSyncAccessHandleApi_readDart(_this._metaHandle, t1, {at: 0});
      t2 = recognized.index;
      if (!(t2 < t1.length))
        return A.ioore(t1, t2);
      t2 = t1[t2];
      t1 = _this._files.$index(0, recognized);
      t1.toString;
      if (t2 === 0)
        if ((flags & 4) !== 0) {
          t1.truncate(0);
          _this._markExists$2(recognized, true);
        } else
          throw A.wrapException(B.VfsException_14);
      return new A._Record_2_file_outFlags(new A._SimpleOpfsFile(_this, recognized, t1, (flags & 8) !== 0), 0);
    },
    xSleep$1(duration) {
    },
    close$0() {
      this._metaHandle.close();
      for (var t1 = this._files, t1 = new A.LinkedHashMapValueIterator(t1, t1.__js_helper$_modifications, t1.__js_helper$_first, A._instanceType(t1)._eval$1("LinkedHashMapValueIterator<2>")); t1.moveNext$0();)
        t1.__js_helper$_current.close();
    }
  };
  A.SimpleOpfsFileSystem_inDirectory_open.prototype = {
    call$1($name) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.JSObject),
        $async$returnValue, $async$self = this, t1, syncHandlePromise, $async$temp1;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        for (;;)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.JSObject;
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A.promiseToFuture(A._asJSObject($async$self.root.getFileHandle($name, {create: true})), t1), $async$call$1);
            case 3:
              // returning from await.
              syncHandlePromise = $async$temp1._asJSObject($async$result.createSyncAccessHandle());
              $async$goto = 4;
              return A._asyncAwait(A.promiseToFuture(syncHandlePromise, t1), $async$call$1);
            case 4:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 71
  };
  A._SimpleOpfsFile.prototype = {
    readInto$2(buffer, offset) {
      return A.FileSystemSyncAccessHandleApi_readDart(this.syncHandle, buffer, {at: offset});
    },
    xCheckReservedLock$0() {
      return this._simple_opfs$_lockMode >= 2 ? 1 : 0;
    },
    xClose$0() {
      var _this = this;
      _this.syncHandle.flush();
      if (_this.deleteOnClose)
        _this.vfs._markExists$2(_this.type, false);
    },
    xFileSize$0() {
      return A._asInt(this.syncHandle.getSize());
    },
    xLock$1(mode) {
      this._simple_opfs$_lockMode = mode;
    },
    xSync$1(flags) {
      this.syncHandle.flush();
    },
    xTruncate$1(size) {
      this.syncHandle.truncate(size);
    },
    xUnlock$1(mode) {
      this._simple_opfs$_lockMode = mode;
    },
    xWrite$2(buffer, fileOffset) {
      if (A.FileSystemSyncAccessHandleApi_writeDart(this.syncHandle, buffer, {at: fileOffset}) < buffer.length)
        throw A.wrapException(B.VfsException_778);
    }
  };
  A.WasmBindings.prototype = {
    allocateBytes$2$additionalLength(bytes, additionalLength) {
      var t1, ptr, t2;
      type$.List_int._as(bytes);
      t1 = J.getInterceptor$asx(bytes);
      ptr = A._asInt(this.sqlite3.dart_sqlite3_malloc(t1.get$length(bytes) + additionalLength));
      t2 = A.NativeUint8List_NativeUint8List$view(type$.NativeArrayBuffer._as(this.memory.buffer), 0, null);
      B.NativeUint8List_methods.setRange$3(t2, ptr, ptr + t1.get$length(bytes), bytes);
      B.NativeUint8List_methods.fillRange$3(t2, ptr + t1.get$length(bytes), ptr + t1.get$length(bytes) + additionalLength, 0);
      return ptr;
    },
    allocateBytes$1(bytes) {
      return this.allocateBytes$2$additionalLength(bytes, 0);
    },
    sqlite3_initialize$0() {
      var t1,
        _0_0 = type$.nullable_JavaScriptFunction._as(this.sqlite3.sqlite3_initialize);
      $label0$0: {
        if (_0_0 != null) {
          t1 = A._asInt(A._asDouble(_0_0.call(null)));
          break $label0$0;
        }
        t1 = 0;
        break $label0$0;
      }
      return t1;
    }
  };
  A._InjectedValues.prototype = {
    _InjectedValues$0() {
      var t1, t2, _this = this,
        memory = A._asJSObject(new init.G.WebAssembly.Memory({initial: 16}));
      _this.___InjectedValues_memory_A = memory;
      t1 = type$.String;
      t2 = type$.JSObject;
      _this.___InjectedValues_injectedValues_A = type$.Map_of_String_and_Map_String_JSObject._as(A.LinkedHashMap_LinkedHashMap$_literal(["env", A.LinkedHashMap_LinkedHashMap$_literal(["memory", memory], t1, t2), "dart", A.LinkedHashMap_LinkedHashMap$_literal(["error_log", A._functionToJS1(new A._InjectedValues_closure(memory)), "xOpen", A._functionToJS5(new A._InjectedValues_closure0(_this, memory)), "xDelete", A._functionToJS3(new A._InjectedValues_closure1(_this, memory)), "xAccess", A._functionToJS4(new A._InjectedValues_closure2(_this, memory)), "xFullPathname", A._functionToJS4(new A._InjectedValues_closure3(_this, memory)), "xRandomness", A._functionToJS3(new A._InjectedValues_closure4(_this, memory)), "xSleep", A._functionToJS2(new A._InjectedValues_closure5(_this)), "xCurrentTimeInt64", A._functionToJS2(new A._InjectedValues_closure6(_this, memory)), "xDeviceCharacteristics", A._functionToJS1(new A._InjectedValues_closure7(_this)), "xClose", A._functionToJS1(new A._InjectedValues_closure8(_this)), "xRead", A._functionToJS4(new A._InjectedValues_closure9(_this, memory)), "xWrite", A._functionToJS4(new A._InjectedValues_closure10(_this, memory)), "xTruncate", A._functionToJS2(new A._InjectedValues_closure11(_this)), "xSync", A._functionToJS2(new A._InjectedValues_closure12(_this)), "xFileSize", A._functionToJS2(new A._InjectedValues_closure13(_this, memory)), "xLock", A._functionToJS2(new A._InjectedValues_closure14(_this)), "xUnlock", A._functionToJS2(new A._InjectedValues_closure15(_this)), "xCheckReservedLock", A._functionToJS2(new A._InjectedValues_closure16(_this, memory)), "function_xFunc", A._functionToJS3(new A._InjectedValues_closure17(_this)), "function_xStep", A._functionToJS3(new A._InjectedValues_closure18(_this)), "function_xInverse", A._functionToJS3(new A._InjectedValues_closure19(_this)), "function_xFinal", A._functionToJS1(new A._InjectedValues_closure20(_this)), "function_xValue", A._functionToJS1(new A._InjectedValues_closure21(_this)), "function_forget", A._functionToJS1(new A._InjectedValues_closure22(_this)), "function_compare", A._functionToJS5(new A._InjectedValues_closure23(_this, memory)), "function_hook", A._functionToJS5(new A._InjectedValues_closure24(_this, memory)), "function_commit_hook", A._functionToJS1(new A._InjectedValues_closure25(_this)), "function_rollback_hook", A._functionToJS1(new A._InjectedValues_closure26(_this)), "localtime", A._functionToJS2(new A._InjectedValues_closure27(memory)), "changeset_apply_filter", A._functionToJS2(new A._InjectedValues_closure28(_this)), "changeset_apply_conflict", A._functionToJS3(new A._InjectedValues_closure29(_this))], t1, t2)], t1, type$.Map_String_JSObject));
    }
  };
  A._InjectedValues_closure.prototype = {
    call$1(ptr) {
      A.print("[sqlite3] " + A.WrappedMemory_readString(this.memory, A._asInt(ptr), null));
    },
    $signature: 10
  };
  A._InjectedValues_closure0.prototype = {
    call$5(vfsId, zName, dartFdPtr, flags, pOutFlags) {
      var t1, t2, t3;
      A._asInt(vfsId);
      A._asInt(zName);
      A._asInt(dartFdPtr);
      A._asInt(flags);
      A._asInt(pOutFlags);
      t1 = this.$this;
      t2 = t1.callbacks.registeredVfs.$index(0, vfsId);
      t2.toString;
      t3 = this.memory;
      return A._runVfs(new A._InjectedValues__closure13(t1, t2, new A.Sqlite3Filename(A.WrappedMemory_readNullableString(t3, zName, null)), flags, t3, dartFdPtr, pOutFlags));
    },
    $signature: 25
  };
  A._InjectedValues__closure13.prototype = {
    call$0() {
      var _this = this,
        result = _this.vfs.xOpen$2(_this.path, _this.flags),
        t1 = _this.$this.callbacks,
        t2 = t1._id++;
      t1.openedFiles.$indexSet(0, t2, result._0);
      t1 = _this.memory;
      A.WrappedMemory_setInt32Value(t1, _this.dartFdPtr, t2);
      t2 = _this.pOutFlags;
      if (t2 !== 0)
        A.WrappedMemory_setInt32Value(t1, t2, result._1);
    },
    $signature: 0
  };
  A._InjectedValues_closure1.prototype = {
    call$3(vfsId, zName, syncDir) {
      var t1;
      A._asInt(vfsId);
      A._asInt(zName);
      A._asInt(syncDir);
      t1 = this.$this.callbacks.registeredVfs.$index(0, vfsId);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure12(t1, A.WrappedMemory_readString(this.memory, zName, null), syncDir));
    },
    $signature: 17
  };
  A._InjectedValues__closure12.prototype = {
    call$0() {
      return this.vfs.xDelete$2(this.path, this.syncDir);
    },
    $signature: 0
  };
  A._InjectedValues_closure2.prototype = {
    call$4(vfsId, zName, flags, pResOut) {
      var t1, t2;
      A._asInt(vfsId);
      A._asInt(zName);
      A._asInt(flags);
      A._asInt(pResOut);
      t1 = this.$this.callbacks.registeredVfs.$index(0, vfsId);
      t1.toString;
      t2 = this.memory;
      return A._runVfs(new A._InjectedValues__closure11(t1, A.WrappedMemory_readString(t2, zName, null), flags, t2, pResOut));
    },
    $signature: 27
  };
  A._InjectedValues__closure11.prototype = {
    call$0() {
      var _this = this;
      A.WrappedMemory_setInt32Value(_this.memory, _this.pResOut, _this.vfs.xAccess$2(_this.path, _this.flags));
    },
    $signature: 0
  };
  A._InjectedValues_closure3.prototype = {
    call$4(vfsId, zName, nOut, zOut) {
      var t1, t2;
      A._asInt(vfsId);
      A._asInt(zName);
      A._asInt(nOut);
      A._asInt(zOut);
      t1 = this.$this.callbacks.registeredVfs.$index(0, vfsId);
      t1.toString;
      t2 = this.memory;
      return A._runVfs(new A._InjectedValues__closure10(t1, A.WrappedMemory_readString(t2, zName, null), nOut, t2, zOut));
    },
    $signature: 27
  };
  A._InjectedValues__closure10.prototype = {
    call$0() {
      var t2, t3, _this = this,
        encoded = B.C_Utf8Encoder.convert$1(_this.vfs.xFullPathName$1(_this.path)),
        t1 = encoded.length;
      if (t1 > _this.nOut)
        throw A.wrapException(A.VfsException$(14));
      t2 = A.NativeUint8List_NativeUint8List$view(type$.NativeArrayBuffer._as(_this.memory.buffer), 0, null);
      t3 = _this.zOut;
      B.NativeUint8List_methods.setAll$2(t2, t3, encoded);
      t1 = t3 + t1;
      t2.$flags & 2 && A.throwUnsupportedOperation(t2);
      if (!(t1 >= 0 && t1 < t2.length))
        return A.ioore(t2, t1);
      t2[t1] = 0;
    },
    $signature: 0
  };
  A._InjectedValues_closure4.prototype = {
    call$3(vfsId, nByte, zOut) {
      A._asInt(vfsId);
      A._asInt(nByte);
      return A._runVfs(new A._InjectedValues__closure9(this.memory, A._asInt(zOut), nByte, this.$this.callbacks.registeredVfs.$index(0, vfsId)));
    },
    $signature: 17
  };
  A._InjectedValues__closure9.prototype = {
    call$0() {
      var _this = this,
        target = A.NativeUint8List_NativeUint8List$view(type$.NativeArrayBuffer._as(_this.memory.buffer), _this.zOut, _this.nByte),
        t1 = _this.vfs;
      if (t1 != null)
        A.BaseVirtualFileSystem_generateRandomness(target, t1.random);
      else
        return A.BaseVirtualFileSystem_generateRandomness(target, null);
    },
    $signature: 0
  };
  A._InjectedValues_closure5.prototype = {
    call$2(vfsId, micros) {
      var t1;
      A._asInt(vfsId);
      A._asInt(micros);
      t1 = this.$this.callbacks.registeredVfs.$index(0, vfsId);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure8(t1, micros));
    },
    $signature: 4
  };
  A._InjectedValues__closure8.prototype = {
    call$0() {
      this.vfs.xSleep$1(A.Duration$(this.micros, 0));
    },
    $signature: 0
  };
  A._InjectedValues_closure6.prototype = {
    call$2(vfsId, target) {
      var t1;
      A._asInt(vfsId);
      A._asInt(target);
      this.$this.callbacks.registeredVfs.$index(0, vfsId).toString;
      t1 = type$.JavaScriptBigInt._as(init.G.BigInt(Date.now()));
      if (A.assertTest(target !== 0))
        A.assertThrow("Null pointer dereference");
      A.JSObjectUnsafeUtilExtension__callMethod(A.NativeByteData_NativeByteData$view(type$.NativeArrayBuffer._as(this.memory.buffer), 0, null), "setBigInt64", target, t1, true, null);
    },
    $signature: 115
  };
  A._InjectedValues_closure7.prototype = {
    call$1(fd) {
      return this.$this.callbacks.openedFiles.$index(0, A._asInt(fd)).get$xDeviceCharacteristics();
    },
    $signature: 13
  };
  A._InjectedValues_closure8.prototype = {
    call$1(fd) {
      var t1, t2;
      A._asInt(fd);
      t1 = this.$this;
      t2 = t1.callbacks.openedFiles.$index(0, fd);
      t2.toString;
      return A._runVfs(new A._InjectedValues__closure7(t1, t2, fd));
    },
    $signature: 13
  };
  A._InjectedValues__closure7.prototype = {
    call$0() {
      this.file.xClose$0();
      this.$this.callbacks.openedFiles.remove$1(0, this.fd);
    },
    $signature: 0
  };
  A._InjectedValues_closure9.prototype = {
    call$4(fd, target, amount, offset) {
      var t1;
      A._asInt(fd);
      A._asInt(target);
      A._asInt(amount);
      type$.JavaScriptBigInt._as(offset);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure6(t1, this.memory, target, amount, offset));
    },
    $signature: 29
  };
  A._InjectedValues__closure6.prototype = {
    call$0() {
      var _this = this;
      _this.file.xRead$2(A.NativeUint8List_NativeUint8List$view(type$.NativeArrayBuffer._as(_this.memory.buffer), _this.target, _this.amount), A._asInt(A._asDouble(init.G.Number(_this.offset))));
    },
    $signature: 0
  };
  A._InjectedValues_closure10.prototype = {
    call$4(fd, source, amount, offset) {
      var t1;
      A._asInt(fd);
      A._asInt(source);
      A._asInt(amount);
      type$.JavaScriptBigInt._as(offset);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure5(t1, this.memory, source, amount, offset));
    },
    $signature: 29
  };
  A._InjectedValues__closure5.prototype = {
    call$0() {
      var _this = this;
      _this.file.xWrite$2(A.NativeUint8List_NativeUint8List$view(type$.NativeArrayBuffer._as(_this.memory.buffer), _this.source, _this.amount), A._asInt(A._asDouble(init.G.Number(_this.offset))));
    },
    $signature: 0
  };
  A._InjectedValues_closure11.prototype = {
    call$2(fd, size) {
      var t1;
      A._asInt(fd);
      type$.JavaScriptBigInt._as(size);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure4(t1, size));
    },
    $signature: 78
  };
  A._InjectedValues__closure4.prototype = {
    call$0() {
      return this.file.xTruncate$1(A._asInt(A._asDouble(init.G.Number(this.size))));
    },
    $signature: 0
  };
  A._InjectedValues_closure12.prototype = {
    call$2(fd, flags) {
      var t1;
      A._asInt(fd);
      A._asInt(flags);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure3(t1, flags));
    },
    $signature: 4
  };
  A._InjectedValues__closure3.prototype = {
    call$0() {
      return this.file.xSync$1(this.flags);
    },
    $signature: 0
  };
  A._InjectedValues_closure13.prototype = {
    call$2(fd, sizePtr) {
      var t1;
      A._asInt(fd);
      A._asInt(sizePtr);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure2(t1, this.memory, sizePtr));
    },
    $signature: 4
  };
  A._InjectedValues__closure2.prototype = {
    call$0() {
      A.WrappedMemory_setInt32Value(this.memory, this.sizePtr, this.file.xFileSize$0());
    },
    $signature: 0
  };
  A._InjectedValues_closure14.prototype = {
    call$2(fd, flags) {
      var t1;
      A._asInt(fd);
      A._asInt(flags);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure1(t1, flags));
    },
    $signature: 4
  };
  A._InjectedValues__closure1.prototype = {
    call$0() {
      return this.file.xLock$1(this.flags);
    },
    $signature: 0
  };
  A._InjectedValues_closure15.prototype = {
    call$2(fd, flags) {
      var t1;
      A._asInt(fd);
      A._asInt(flags);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure0(t1, flags));
    },
    $signature: 4
  };
  A._InjectedValues__closure0.prototype = {
    call$0() {
      return this.file.xUnlock$1(this.flags);
    },
    $signature: 0
  };
  A._InjectedValues_closure16.prototype = {
    call$2(fd, pResOut) {
      var t1;
      A._asInt(fd);
      A._asInt(pResOut);
      t1 = this.$this.callbacks.openedFiles.$index(0, fd);
      t1.toString;
      return A._runVfs(new A._InjectedValues__closure(t1, this.memory, pResOut));
    },
    $signature: 4
  };
  A._InjectedValues__closure.prototype = {
    call$0() {
      A.WrappedMemory_setInt32Value(this.memory, this.pResOut, this.file.xCheckReservedLock$0());
    },
    $signature: 0
  };
  A._InjectedValues_closure17.prototype = {
    call$3(ctx, args, value) {
      var t1, t2;
      A._asInt(ctx);
      A._asInt(args);
      A._asInt(value);
      t1 = this.$this;
      t2 = t1.___InjectedValues_bindings_A;
      t2 === $ && A.throwLateFieldNI("bindings");
      t2 = t1.callbacks.functions.$index(0, A._asInt(t2.sqlite3.sqlite3_user_data(ctx))).xFunc;
      t1 = t1.___InjectedValues_bindings_A;
      t2.call$2(new A.WasmContext(t1, ctx), new A.WasmValueList(t1, args, value));
    },
    $signature: 22
  };
  A._InjectedValues_closure18.prototype = {
    call$3(ctx, args, value) {
      var t1, t2;
      A._asInt(ctx);
      A._asInt(args);
      A._asInt(value);
      t1 = this.$this;
      t2 = t1.___InjectedValues_bindings_A;
      t2 === $ && A.throwLateFieldNI("bindings");
      t2 = t1.callbacks.functions.$index(0, A._asInt(t2.sqlite3.sqlite3_user_data(ctx))).xStep;
      t1 = t1.___InjectedValues_bindings_A;
      t2.call$2(new A.WasmContext(t1, ctx), new A.WasmValueList(t1, args, value));
    },
    $signature: 22
  };
  A._InjectedValues_closure19.prototype = {
    call$3(ctx, args, value) {
      var t1, t2;
      A._asInt(ctx);
      A._asInt(args);
      A._asInt(value);
      t1 = this.$this;
      t2 = t1.___InjectedValues_bindings_A;
      t2 === $ && A.throwLateFieldNI("bindings");
      t1.callbacks.functions.$index(0, A._asInt(t2.sqlite3.sqlite3_user_data(ctx))).toString;
      t1 = t1.___InjectedValues_bindings_A;
      null.call$2(new A.WasmContext(t1, ctx), new A.WasmValueList(t1, args, value));
    },
    $signature: 22
  };
  A._InjectedValues_closure20.prototype = {
    call$1(ctx) {
      var t1, t2;
      A._asInt(ctx);
      t1 = this.$this;
      t2 = t1.___InjectedValues_bindings_A;
      t2 === $ && A.throwLateFieldNI("bindings");
      t1.callbacks.functions.$index(0, A._asInt(t2.sqlite3.sqlite3_user_data(ctx))).xFinal.call$1(new A.WasmContext(t1.___InjectedValues_bindings_A, ctx));
    },
    $signature: 10
  };
  A._InjectedValues_closure21.prototype = {
    call$1(ctx) {
      var t1, t2;
      A._asInt(ctx);
      t1 = this.$this;
      t2 = t1.___InjectedValues_bindings_A;
      t2 === $ && A.throwLateFieldNI("bindings");
      t1.callbacks.functions.$index(0, A._asInt(t2.sqlite3.sqlite3_user_data(ctx))).toString;
      null.call$1(new A.WasmContext(t1.___InjectedValues_bindings_A, ctx));
    },
    $signature: 10
  };
  A._InjectedValues_closure22.prototype = {
    call$1(ctx) {
      this.$this.callbacks.functions.remove$1(0, A._asInt(ctx));
    },
    $signature: 10
  };
  A._InjectedValues_closure23.prototype = {
    call$5(ctx, lengthA, a, lengthB, b) {
      var t1, aStr, bStr;
      A._asInt(ctx);
      A._asInt(lengthA);
      A._asInt(a);
      A._asInt(lengthB);
      A._asInt(b);
      t1 = this.memory;
      aStr = A.WrappedMemory_readNullableString(t1, a, lengthA);
      bStr = A.WrappedMemory_readNullableString(t1, b, lengthB);
      this.$this.callbacks.functions.$index(0, ctx).toString;
      return null.call$2(aStr, bStr);
    },
    $signature: 25
  };
  A._InjectedValues_closure24.prototype = {
    call$5(id, kind, _, table, rowId) {
      A._asInt(id);
      A._asInt(kind);
      A._asInt(_);
      A._asInt(table);
      type$.JavaScriptBigInt._as(rowId);
      A.WrappedMemory_readString(this.memory, table, null);
    },
    $signature: 80
  };
  A._InjectedValues_closure25.prototype = {
    call$1(id) {
      A._asInt(id);
      return null;
    },
    $signature: 26
  };
  A._InjectedValues_closure26.prototype = {
    call$1(id) {
      A._asInt(id);
    },
    $signature: 10
  };
  A._InjectedValues_closure27.prototype = {
    call$2(timestamp, resultPtr) {
      var dateTime, tmValues, t1, t2;
      type$.JavaScriptBigInt._as(timestamp);
      A._asInt(resultPtr);
      dateTime = new A.DateTime(A.DateTime__validate(A._asInt(A._asDouble(init.G.Number(timestamp))) * 1000, 0, false), 0, false);
      tmValues = A.NativeUint32List_NativeUint32List$view(type$.NativeArrayBuffer._as(this.memory.buffer), resultPtr, 8);
      tmValues.$flags & 2 && A.throwUnsupportedOperation(tmValues);
      t1 = tmValues.length;
      if (0 >= t1)
        return A.ioore(tmValues, 0);
      tmValues[0] = A.Primitives_getSeconds(dateTime);
      if (1 >= t1)
        return A.ioore(tmValues, 1);
      tmValues[1] = A.Primitives_getMinutes(dateTime);
      if (2 >= t1)
        return A.ioore(tmValues, 2);
      tmValues[2] = A.Primitives_getHours(dateTime);
      if (3 >= t1)
        return A.ioore(tmValues, 3);
      tmValues[3] = A.Primitives_getDay(dateTime);
      if (4 >= t1)
        return A.ioore(tmValues, 4);
      tmValues[4] = A.Primitives_getMonth(dateTime) - 1;
      if (5 >= t1)
        return A.ioore(tmValues, 5);
      tmValues[5] = A.Primitives_getYear(dateTime) - 1900;
      t2 = B.JSInt_methods.$mod(A.Primitives_getWeekday(dateTime), 7);
      if (6 >= t1)
        return A.ioore(tmValues, 6);
      tmValues[6] = t2;
    },
    $signature: 81
  };
  A._InjectedValues_closure28.prototype = {
    call$2(context, zTab) {
      A._asInt(context);
      A._asInt(zTab);
      return this.$this.callbacks.sessionApply.$index(0, context).get$filter().call$1(zTab);
    },
    $signature: 4
  };
  A._InjectedValues_closure29.prototype = {
    call$3(context, eConflict, iter) {
      A._asInt(context);
      A._asInt(eConflict);
      A._asInt(iter);
      return this.$this.callbacks.sessionApply.$index(0, context).get$conflict().call$2(eConflict, iter);
    },
    $signature: 17
  };
  A.DartCallbacks.prototype = {
    register$1(set) {
      var t1 = this._id++;
      this.functions.$indexSet(0, t1, set);
      return t1;
    },
    set$installedUpdateHook(installedUpdateHook) {
      this.installedUpdateHook = type$.nullable_void_Function_int_String_int._as(installedUpdateHook);
    },
    set$installedCommitHook(installedCommitHook) {
      this.installedCommitHook = type$.nullable_int_Function._as(installedCommitHook);
    },
    set$installedRollbackHook(installedRollbackHook) {
      this.installedRollbackHook = type$.nullable_void_Function._as(installedRollbackHook);
    }
  };
  A.RegisteredFunctionSet.prototype = {};
  A.Chain.prototype = {
    toTrace$0() {
      var t1 = this.traces,
        t2 = A._arrayInstanceType(t1);
      return A.Trace$(new A.ExpandIterable(t1, t2._eval$1("Iterable<Frame>(1)")._as(new A.Chain_toTrace_closure()), t2._eval$1("ExpandIterable<1,Frame>")), null);
    },
    toString$0(_) {
      var t1 = this.traces,
        t2 = A._arrayInstanceType(t1);
      return new A.MappedListIterable(t1, t2._eval$1("String(1)")._as(new A.Chain_toString_closure(new A.MappedListIterable(t1, t2._eval$1("int(1)")._as(new A.Chain_toString_closure0()), t2._eval$1("MappedListIterable<1,int>")).fold$1$2(0, 0, B.CONSTANT, type$.int))), t2._eval$1("MappedListIterable<1,String>")).join$1(0, string$.x3d_____);
    },
    $isStackTrace: 1
  };
  A.Chain_Chain$parse_closure.prototype = {
    call$1(line) {
      return A._asString(line).length !== 0;
    },
    $signature: 3
  };
  A.Chain_toTrace_closure.prototype = {
    call$1(trace) {
      return type$.Trace._as(trace).get$frames();
    },
    $signature: 82
  };
  A.Chain_toString_closure0.prototype = {
    call$1(trace) {
      var t1 = type$.Trace._as(trace).get$frames(),
        t2 = A._arrayInstanceType(t1);
      return new A.MappedListIterable(t1, t2._eval$1("int(1)")._as(new A.Chain_toString__closure0()), t2._eval$1("MappedListIterable<1,int>")).fold$1$2(0, 0, B.CONSTANT, type$.int);
    },
    $signature: 83
  };
  A.Chain_toString__closure0.prototype = {
    call$1(frame) {
      return type$.Frame._as(frame).get$location().length;
    },
    $signature: 31
  };
  A.Chain_toString_closure.prototype = {
    call$1(trace) {
      var t1 = type$.Trace._as(trace).get$frames(),
        t2 = A._arrayInstanceType(t1);
      return new A.MappedListIterable(t1, t2._eval$1("String(1)")._as(new A.Chain_toString__closure(this.longest)), t2._eval$1("MappedListIterable<1,String>")).join$0(0);
    },
    $signature: 85
  };
  A.Chain_toString__closure.prototype = {
    call$1(frame) {
      type$.Frame._as(frame);
      return B.JSString_methods.padRight$1(frame.get$location(), this.longest) + "  " + A.S(frame.get$member()) + "\n";
    },
    $signature: 32
  };
  A.Frame.prototype = {
    get$library() {
      var t1 = this.uri;
      if (t1.get$scheme() === "data")
        return "data:...";
      return $.$get$context().prettyUri$1(t1);
    },
    get$location() {
      var t2, _this = this,
        t1 = _this.line;
      if (t1 == null)
        return _this.get$library();
      t2 = _this.column;
      if (t2 == null)
        return _this.get$library() + " " + A.S(t1);
      return _this.get$library() + " " + A.S(t1) + ":" + A.S(t2);
    },
    toString$0(_) {
      return this.get$location() + " in " + A.S(this.member);
    },
    get$member() {
      return this.member;
    }
  };
  A.Frame_Frame$parseVM_closure.prototype = {
    call$0() {
      var match, t2, t3, member, uri, lineAndColumn, line, _null = null,
        t1 = this.frame;
      if (t1 === "...")
        return new A.Frame(A._Uri__Uri(_null, _null, _null, _null), _null, _null, "...");
      match = $.$get$_vmFrame().firstMatch$1(t1);
      if (match == null)
        return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), t1);
      t1 = match._match;
      if (1 >= t1.length)
        return A.ioore(t1, 1);
      t2 = t1[1];
      t2.toString;
      t3 = $.$get$_asyncBody();
      t2 = A.stringReplaceAllUnchecked(t2, t3, "<async>");
      member = A.stringReplaceAllUnchecked(t2, "<anonymous closure>", "<fn>");
      if (2 >= t1.length)
        return A.ioore(t1, 2);
      t2 = t1[2];
      t3 = t2;
      t3.toString;
      if (B.JSString_methods.startsWith$1(t3, "<data:"))
        uri = A.Uri_Uri$dataFromString("");
      else {
        t2 = t2;
        t2.toString;
        uri = A.Uri_parse(t2);
      }
      if (3 >= t1.length)
        return A.ioore(t1, 3);
      lineAndColumn = t1[3].split(":");
      t1 = lineAndColumn.length;
      line = t1 > 1 ? A.int_parse(lineAndColumn[1], _null) : _null;
      return new A.Frame(uri, line, t1 > 2 ? A.int_parse(lineAndColumn[2], _null) : _null, member);
    },
    $signature: 11
  };
  A.Frame_Frame$parseV8_closure.prototype = {
    call$0() {
      var member, uri, t2, functionOffset, t3, t4, _s4_ = "<fn>",
        t1 = this.frame,
        match = $.$get$_v8WasmFrame().firstMatch$1(t1);
      if (match != null) {
        member = match.namedGroup$1("member");
        t1 = match.namedGroup$1("uri");
        t1.toString;
        uri = A.Frame__uriOrPathToUri(t1);
        t1 = match.namedGroup$1("index");
        t1.toString;
        t2 = match.namedGroup$1("offset");
        t2.toString;
        functionOffset = A.int_parse(t2, 16);
        if (!(member == null))
          t1 = member;
        return new A.Frame(uri, 1, functionOffset + 1, t1);
      }
      match = $.$get$_v8JsFrame().firstMatch$1(t1);
      if (match != null) {
        t1 = new A.Frame_Frame$parseV8_closure_parseJsLocation(t1);
        t2 = match._match;
        t3 = t2.length;
        if (2 >= t3)
          return A.ioore(t2, 2);
        t4 = t2[2];
        if (t4 != null) {
          t3 = t4;
          t3.toString;
          t2 = t2[1];
          t2.toString;
          t2 = A.stringReplaceAllUnchecked(t2, "<anonymous>", _s4_);
          t2 = A.stringReplaceAllUnchecked(t2, "Anonymous function", _s4_);
          return t1.call$2(t3, A.stringReplaceAllUnchecked(t2, "(anonymous function)", _s4_));
        } else {
          if (3 >= t3)
            return A.ioore(t2, 3);
          t2 = t2[3];
          t2.toString;
          return t1.call$2(t2, _s4_);
        }
      }
      return new A.UnparsedFrame(A._Uri__Uri(null, "unparsed", null, null), t1);
    },
    $signature: 11
  };
  A.Frame_Frame$parseV8_closure_parseJsLocation.prototype = {
    call$2($location, member) {
      var t2, urlMatch, uri, line, columnMatch, _null = null,
        t1 = $.$get$_v8EvalLocation(),
        evalMatch = t1.firstMatch$1($location);
      for (; evalMatch != null; $location = t2) {
        t2 = evalMatch._match;
        if (1 >= t2.length)
          return A.ioore(t2, 1);
        t2 = t2[1];
        t2.toString;
        evalMatch = t1.firstMatch$1(t2);
      }
      if ($location === "native")
        return new A.Frame(A.Uri_parse("native"), _null, _null, member);
      urlMatch = $.$get$_v8JsUrlLocation().firstMatch$1($location);
      if (urlMatch == null)
        return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), this.frame);
      t1 = urlMatch._match;
      if (1 >= t1.length)
        return A.ioore(t1, 1);
      t2 = t1[1];
      t2.toString;
      uri = A.Frame__uriOrPathToUri(t2);
      if (2 >= t1.length)
        return A.ioore(t1, 2);
      t2 = t1[2];
      t2.toString;
      line = A.int_parse(t2, _null);
      if (3 >= t1.length)
        return A.ioore(t1, 3);
      columnMatch = t1[3];
      return new A.Frame(uri, line, columnMatch != null ? A.int_parse(columnMatch, _null) : _null, member);
    },
    $signature: 88
  };
  A.Frame_Frame$_parseFirefoxEval_closure.prototype = {
    call$0() {
      var t2, member, uri, line, _null = null,
        t1 = this.frame,
        match = $.$get$_firefoxEvalLocation().firstMatch$1(t1);
      if (match == null)
        return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), t1);
      t1 = match._match;
      if (1 >= t1.length)
        return A.ioore(t1, 1);
      t2 = t1[1];
      t2.toString;
      member = A.stringReplaceAllUnchecked(t2, "/<", "");
      if (2 >= t1.length)
        return A.ioore(t1, 2);
      t2 = t1[2];
      t2.toString;
      uri = A.Frame__uriOrPathToUri(t2);
      if (3 >= t1.length)
        return A.ioore(t1, 3);
      t1 = t1[3];
      t1.toString;
      line = A.int_parse(t1, _null);
      return new A.Frame(uri, line, _null, member.length === 0 || member === "anonymous" ? "<fn>" : member);
    },
    $signature: 11
  };
  A.Frame_Frame$parseFirefox_closure.prototype = {
    call$0() {
      var t2, t3, t4, uri, member, line, column, functionOffset, _null = null,
        t1 = this.frame,
        match = $.$get$_firefoxSafariJSFrame().firstMatch$1(t1);
      if (match != null) {
        t2 = match._match;
        if (3 >= t2.length)
          return A.ioore(t2, 3);
        t3 = t2[3];
        t4 = t3;
        t4.toString;
        if (B.JSString_methods.contains$1(t4, " line "))
          return A.Frame_Frame$_parseFirefoxEval(t1);
        t1 = t3;
        t1.toString;
        uri = A.Frame__uriOrPathToUri(t1);
        t1 = t2.length;
        if (1 >= t1)
          return A.ioore(t2, 1);
        member = t2[1];
        if (member != null) {
          if (2 >= t1)
            return A.ioore(t2, 2);
          t1 = t2[2];
          t1.toString;
          member += B.JSArray_methods.join$0(A.List_List$filled(B.JSString_methods.allMatches$1("/", t1).get$length(0), ".<fn>", false, type$.String));
          if (member === "")
            member = "<fn>";
          member = B.JSString_methods.replaceFirst$2(member, $.$get$_initialDot(), "");
        } else
          member = "<fn>";
        if (4 >= t2.length)
          return A.ioore(t2, 4);
        t1 = t2[4];
        if (t1 === "")
          line = _null;
        else {
          t1 = t1;
          t1.toString;
          line = A.int_parse(t1, _null);
        }
        if (5 >= t2.length)
          return A.ioore(t2, 5);
        t1 = t2[5];
        if (t1 == null || t1 === "")
          column = _null;
        else {
          t1 = t1;
          t1.toString;
          column = A.int_parse(t1, _null);
        }
        return new A.Frame(uri, line, column, member);
      }
      match = $.$get$_firefoxWasmFrame().firstMatch$1(t1);
      if (match != null) {
        t1 = match.namedGroup$1("member");
        t1.toString;
        t2 = match.namedGroup$1("uri");
        t2.toString;
        uri = A.Frame__uriOrPathToUri(t2);
        t2 = match.namedGroup$1("index");
        t2.toString;
        t3 = match.namedGroup$1("offset");
        t3.toString;
        functionOffset = A.int_parse(t3, 16);
        if (!(t1.length !== 0))
          t1 = t2;
        return new A.Frame(uri, 1, functionOffset + 1, t1);
      }
      match = $.$get$_safariWasmFrame().firstMatch$1(t1);
      if (match != null) {
        t1 = match.namedGroup$1("member");
        t1.toString;
        return new A.Frame(A._Uri__Uri(_null, "wasm code", _null, _null), _null, _null, t1);
      }
      return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), t1);
    },
    $signature: 11
  };
  A.Frame_Frame$parseFriendly_closure.prototype = {
    call$0() {
      var t2, uri, line, column, _null = null,
        t1 = this.frame,
        match = $.$get$_friendlyFrame().firstMatch$1(t1);
      if (match == null)
        throw A.wrapException(A.FormatException$("Couldn't parse package:stack_trace stack trace line '" + t1 + "'.", _null, _null));
      t1 = match._match;
      if (1 >= t1.length)
        return A.ioore(t1, 1);
      t2 = t1[1];
      if (t2 === "data:...")
        uri = A.Uri_Uri$dataFromString("");
      else {
        t2 = t2;
        t2.toString;
        uri = A.Uri_parse(t2);
      }
      if (uri.get$scheme() === "") {
        t2 = $.$get$context();
        uri = t2.toUri$1(t2.absolute$15(t2.style.pathFromUri$1(A._parseUri(uri)), _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null));
      }
      if (2 >= t1.length)
        return A.ioore(t1, 2);
      t2 = t1[2];
      if (t2 == null)
        line = _null;
      else {
        t2 = t2;
        t2.toString;
        line = A.int_parse(t2, _null);
      }
      if (3 >= t1.length)
        return A.ioore(t1, 3);
      t2 = t1[3];
      if (t2 == null)
        column = _null;
      else {
        t2 = t2;
        t2.toString;
        column = A.int_parse(t2, _null);
      }
      if (4 >= t1.length)
        return A.ioore(t1, 4);
      return new A.Frame(uri, line, column, t1[4]);
    },
    $signature: 11
  };
  A.LazyTrace.prototype = {
    get$_lazy_trace$_trace() {
      var result, _this = this,
        value = _this.__LazyTrace__trace_FI;
      if (value === $) {
        result = _this._thunk.call$0();
        _this.__LazyTrace__trace_FI !== $ && A.throwLateFieldADI("_trace");
        _this.__LazyTrace__trace_FI = result;
        value = result;
      }
      return value;
    },
    get$frames() {
      return this.get$_lazy_trace$_trace().get$frames();
    },
    toString$0(_) {
      return this.get$_lazy_trace$_trace().toString$0(0);
    },
    $isStackTrace: 1,
    $isTrace: 1
  };
  A.Trace.prototype = {
    toString$0(_) {
      var t1 = this.frames,
        t2 = A._arrayInstanceType(t1);
      return new A.MappedListIterable(t1, t2._eval$1("String(1)")._as(new A.Trace_toString_closure(new A.MappedListIterable(t1, t2._eval$1("int(1)")._as(new A.Trace_toString_closure0()), t2._eval$1("MappedListIterable<1,int>")).fold$1$2(0, 0, B.CONSTANT, type$.int))), t2._eval$1("MappedListIterable<1,String>")).join$0(0);
    },
    $isStackTrace: 1,
    get$frames() {
      return this.frames;
    }
  };
  A.Trace_Trace$from_closure.prototype = {
    call$0() {
      return A.Trace_Trace$parse(this.trace.toString$0(0));
    },
    $signature: 89
  };
  A.Trace__parseVM_closure.prototype = {
    call$1(line) {
      return A._asString(line).length !== 0;
    },
    $signature: 3
  };
  A.Trace$parseV8_closure.prototype = {
    call$1(line) {
      return !B.JSString_methods.startsWith$1(A._asString(line), $.$get$_v8TraceLine());
    },
    $signature: 3
  };
  A.Trace$parseJSCore_closure.prototype = {
    call$1(line) {
      return A._asString(line) !== "\tat ";
    },
    $signature: 3
  };
  A.Trace$parseFirefox_closure.prototype = {
    call$1(line) {
      A._asString(line);
      return line.length !== 0 && line !== "[native code]";
    },
    $signature: 3
  };
  A.Trace$parseFriendly_closure.prototype = {
    call$1(line) {
      return !B.JSString_methods.startsWith$1(A._asString(line), "=====");
    },
    $signature: 3
  };
  A.Trace_toString_closure0.prototype = {
    call$1(frame) {
      return type$.Frame._as(frame).get$location().length;
    },
    $signature: 31
  };
  A.Trace_toString_closure.prototype = {
    call$1(frame) {
      type$.Frame._as(frame);
      if (frame instanceof A.UnparsedFrame)
        return frame.toString$0(0) + "\n";
      return B.JSString_methods.padRight$1(frame.get$location(), this.longest) + "  " + A.S(frame.get$member()) + "\n";
    },
    $signature: 32
  };
  A.UnparsedFrame.prototype = {
    toString$0(_) {
      return this.member;
    },
    $isFrame: 1,
    get$location() {
      return "unparsed";
    },
    get$member() {
      return this.member;
    }
  };
  A.CloseGuaranteeChannel.prototype = {
    set$_close_guarantee_channel$_subscription(_subscription) {
      this._close_guarantee_channel$_subscription = this.$ti._eval$1("StreamSubscription<1>?")._as(_subscription);
    }
  };
  A._CloseGuaranteeStream.prototype = {
    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
      var t1, subscription;
      this.$ti._eval$1("~(1)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      t1 = this._channel;
      if (t1._disconnected) {
        onData = null;
        onError = null;
      }
      subscription = this._inner.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError);
      if (!t1._disconnected)
        t1.set$_close_guarantee_channel$_subscription(subscription);
      return subscription;
    },
    listen$3$onDone$onError(onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
    },
    listen$2$onDone(onData, onDone) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, null);
    }
  };
  A._CloseGuaranteeSink.prototype = {
    close$0() {
      var subscription,
        done = this.super$DelegatingStreamSink$close(),
        t1 = this._channel;
      t1._disconnected = true;
      subscription = t1._close_guarantee_channel$_subscription;
      if (subscription != null) {
        subscription.onData$1(null);
        subscription.onError$1(null);
      }
      return done;
    }
  };
  A.GuaranteeChannel.prototype = {
    get$stream() {
      var t1 = this.__GuaranteeChannel__streamController_F;
      t1 === $ && A.throwLateFieldNI("_streamController");
      return new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>"));
    },
    get$sink() {
      var t1 = this.__GuaranteeChannel__sink_F;
      t1 === $ && A.throwLateFieldNI("_sink");
      return t1;
    },
    GuaranteeChannel$3$allowSinkErrors(innerSink, allowSinkErrors, _box_0, $T) {
      var _this = this,
        t1 = _this.$ti,
        t2 = t1._eval$1("_GuaranteeSink<1>")._as(new A._GuaranteeSink(innerSink, _this, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), true, $T._eval$1("_GuaranteeSink<0>")));
      _this.__GuaranteeChannel__sink_F !== $ && A.throwLateFieldAI("_sink");
      _this.__GuaranteeChannel__sink_F = t2;
      t1 = t1._eval$1("StreamController<1>")._as(A.StreamController_StreamController(null, new A.GuaranteeChannel_closure(_box_0, _this, $T), true, $T));
      _this.__GuaranteeChannel__streamController_F !== $ && A.throwLateFieldAI("_streamController");
      _this.__GuaranteeChannel__streamController_F = t1;
    },
    _onSinkDisconnected$0() {
      var subscription, t1;
      this._guarantee_channel$_disconnected = true;
      subscription = this._guarantee_channel$_subscription;
      if (subscription != null)
        subscription.cancel$0();
      t1 = this.__GuaranteeChannel__streamController_F;
      t1 === $ && A.throwLateFieldNI("_streamController");
      t1.close$0();
    }
  };
  A.GuaranteeChannel_closure.prototype = {
    call$0() {
      var t2, t3,
        t1 = this.$this;
      if (t1._guarantee_channel$_disconnected)
        return;
      t2 = this._box_0.innerStream;
      t3 = t1.__GuaranteeChannel__streamController_F;
      t3 === $ && A.throwLateFieldNI("_streamController");
      t1._guarantee_channel$_subscription = t2.listen$3$onDone$onError(this.T._eval$1("~(0)")._as(t3.get$add(t3)), new A.GuaranteeChannel__closure(t1), t3.get$addError());
    },
    $signature: 0
  };
  A.GuaranteeChannel__closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1.__GuaranteeChannel__sink_F;
      t2 === $ && A.throwLateFieldNI("_sink");
      t2._onStreamDisconnected$0();
      t1 = t1.__GuaranteeChannel__streamController_F;
      t1 === $ && A.throwLateFieldNI("_streamController");
      t1.close$0();
    },
    $signature: 0
  };
  A._GuaranteeSink.prototype = {
    add$1(_, data) {
      var t1, _this = this;
      _this.$ti._precomputed1._as(data);
      if (_this._closed)
        throw A.wrapException(A.StateError$("Cannot add event after closing."));
      if (_this._guarantee_channel$_disconnected)
        return;
      t1 = _this._guarantee_channel$_inner;
      t1._async$_target.add$1(0, t1.$ti._precomputed1._as(data));
    },
    addError$2(error, stackTrace) {
      if (this._closed)
        throw A.wrapException(A.StateError$("Cannot add event after closing."));
      if (this._guarantee_channel$_disconnected)
        return;
      this._guarantee_channel$_addError$2(error, stackTrace);
    },
    _guarantee_channel$_addError$2(error, stackTrace) {
      this._guarantee_channel$_inner._async$_target.addError$2(error, stackTrace);
      return;
    },
    close$0() {
      var _this = this;
      if (_this._closed)
        return _this._doneCompleter.future;
      _this._closed = true;
      if (!_this._guarantee_channel$_disconnected) {
        _this._guarantee_channel$_channel._onSinkDisconnected$0();
        _this._doneCompleter.complete$1(_this._guarantee_channel$_inner._async$_target.close$0());
      }
      return _this._doneCompleter.future;
    },
    _onStreamDisconnected$0() {
      this._guarantee_channel$_disconnected = true;
      var t1 = this._doneCompleter;
      if ((t1.future._state & 30) === 0)
        t1.complete$0();
      return;
    },
    $isEventSink: 1,
    $isStreamSink: 1
  };
  A.StreamChannelController.prototype = {};
  A.StreamChannelMixin.prototype = {$isStreamChannel: 1};
  A.TypedDataBuffer.prototype = {
    get$length(_) {
      return this._typed_buffer$_length;
    },
    $index(_, index) {
      var t1;
      if (index >= this._typed_buffer$_length)
        throw A.wrapException(A.IndexError$(index, this));
      t1 = this._typed_buffer$_buffer;
      if (!(index >= 0 && index < t1.length))
        return A.ioore(t1, index);
      return t1[index];
    },
    $indexSet(_, index, value) {
      var _this = this;
      A._instanceType(_this)._eval$1("TypedDataBuffer.E")._as(value);
      if (index >= _this._typed_buffer$_length)
        throw A.wrapException(A.IndexError$(index, _this));
      B.NativeUint8List_methods.$indexSet(_this._typed_buffer$_buffer, index, value);
    },
    set$length(_, newLength) {
      var t2, t3, i, newBuffer, _this = this,
        t1 = _this._typed_buffer$_length;
      if (newLength < t1)
        for (t2 = _this._typed_buffer$_buffer, t3 = t2.$flags | 0, i = newLength; i < t1; ++i) {
          t3 & 2 && A.throwUnsupportedOperation(t2);
          if (!(i >= 0 && i < t2.length))
            return A.ioore(t2, i);
          t2[i] = 0;
        }
      else {
        t1 = _this._typed_buffer$_buffer.length;
        if (newLength > t1) {
          if (t1 === 0)
            newBuffer = new Uint8Array(newLength);
          else
            newBuffer = _this._createBiggerBuffer$1(newLength);
          B.NativeUint8List_methods.setRange$3(newBuffer, 0, _this._typed_buffer$_length, _this._typed_buffer$_buffer);
          _this._typed_buffer$_buffer = newBuffer;
        }
      }
      _this._typed_buffer$_length = newLength;
    },
    _createBiggerBuffer$1(requiredCapacity) {
      var newLength = this._typed_buffer$_buffer.length * 2;
      if (requiredCapacity != null && newLength < requiredCapacity)
        newLength = requiredCapacity;
      else if (newLength < 8)
        newLength = 8;
      return new Uint8Array(newLength);
    },
    setRange$4(_, start, end, iterable, skipCount) {
      var t1;
      A._instanceType(this)._eval$1("Iterable<TypedDataBuffer.E>")._as(iterable);
      t1 = this._typed_buffer$_length;
      if (end > t1)
        throw A.wrapException(A.RangeError$range(end, 0, t1, null, null));
      t1 = this._typed_buffer$_buffer;
      if (iterable instanceof A.Uint8Buffer)
        B.NativeUint8List_methods.setRange$4(t1, start, end, iterable._typed_buffer$_buffer, skipCount);
      else
        B.NativeUint8List_methods.setRange$4(t1, start, end, iterable, skipCount);
    },
    setRange$3(_, start, end, iterable) {
      return this.setRange$4(0, start, end, iterable, 0);
    }
  };
  A._IntBuffer.prototype = {};
  A.Uint8Buffer.prototype = {};
  A.EventStreamProvider.prototype = {};
  A._EventStream.prototype = {
    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
      var t1 = this.$ti;
      t1._eval$1("~(1)?")._as(onData);
      type$.nullable_void_Function._as(onDone);
      return A._EventStreamSubscription$(this._target, this._eventType, onData, false, t1._precomputed1);
    },
    listen$3$onDone$onError(onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
    }
  };
  A._EventStreamSubscription.prototype = {
    cancel$0() {
      var _this = this,
        emptyFuture = A.Future_Future$value(null, type$.void);
      if (_this._target == null)
        return emptyFuture;
      _this._unlisten$0();
      _this._onData = _this._target = null;
      return emptyFuture;
    },
    onData$1(handleData) {
      var t1, _this = this;
      _this.$ti._eval$1("~(1)?")._as(handleData);
      if (_this._target == null)
        throw A.wrapException(A.StateError$("Subscription has been canceled."));
      _this._unlisten$0();
      if (handleData == null)
        t1 = null;
      else {
        t1 = A._wrapZone(new A._EventStreamSubscription_onData_closure(handleData), type$.JSObject);
        t1 = t1 == null ? null : A._functionToJS1(t1);
      }
      _this._onData = t1;
      _this._tryResume$0();
    },
    onError$1(handleError) {
    },
    pause$0() {
      if (this._target == null)
        return;
      ++this._pauseCount;
      this._unlisten$0();
    },
    resume$0() {
      var _this = this;
      if (_this._target == null || _this._pauseCount <= 0)
        return;
      --_this._pauseCount;
      _this._tryResume$0();
    },
    _tryResume$0() {
      var _this = this,
        t1 = _this._onData;
      if (t1 != null && _this._pauseCount <= 0)
        _this._target.addEventListener(_this._eventType, t1, false);
    },
    _unlisten$0() {
      var t1 = this._onData;
      if (t1 != null)
        this._target.removeEventListener(this._eventType, t1, false);
    },
    $isStreamSubscription: 1
  };
  A._EventStreamSubscription_closure.prototype = {
    call$1(e) {
      return this.onData.call$1(A._asJSObject(e));
    },
    $signature: 1
  };
  A._EventStreamSubscription_onData_closure.prototype = {
    call$1(e) {
      return this.handleData.call$1(A._asJSObject(e));
    },
    $signature: 1
  };
  (function aliases() {
    var _ = J.LegacyJavaScriptObject.prototype;
    _.super$LegacyJavaScriptObject$toString = _.toString$0;
    _ = A._BroadcastStreamController.prototype;
    _.super$_BroadcastStreamController$_addEventError = _._addEventError$0;
    _ = A._BufferingStreamSubscription.prototype;
    _.super$_BufferingStreamSubscription$_add = _._async$_add$1;
    _.super$_BufferingStreamSubscription$_addError = _._addError$2;
    _.super$_BufferingStreamSubscription$_close = _._close$0;
    _ = A._StreamSinkTransformer.prototype;
    _.super$_StreamSinkTransformer$bind = _.bind$1;
    _ = A.ListBase.prototype;
    _.super$ListBase$setRange = _.setRange$4;
    _ = A.Iterable.prototype;
    _.super$Iterable$skipWhile = _.skipWhile$1;
    _ = A.DelegatingStreamSink.prototype;
    _.super$DelegatingStreamSink$close = _.close$0;
    _ = A.Sqlite3Delegate.prototype;
    _.super$Sqlite3Delegate$close = _.close$0;
  })();
  (function installTearOffs() {
    var _static_2 = hunkHelpers._static_2,
      _static_1 = hunkHelpers._static_1,
      _static_0 = hunkHelpers._static_0,
      _static = hunkHelpers.installStaticTearOff,
      _instance_0_u = hunkHelpers._instance_0u,
      _instance = hunkHelpers.installInstanceTearOff,
      _instance_2_u = hunkHelpers._instance_2u,
      _instance_1_i = hunkHelpers._instance_1i,
      _instance_1_u = hunkHelpers._instance_1u;
    _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 90);
    _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 21);
    _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 21);
    _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 21);
    _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
    _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 16);
    _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 7);
    _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
    _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 92, 0);
    _static(A, "async___rootRun$closure", 4, null, ["call$1$4", "call$4"], ["_rootRun", function($self, $parent, zone, f) {
      return A._rootRun($self, $parent, zone, f, type$.dynamic);
    }], 93, 0);
    _static(A, "async___rootRunUnary$closure", 5, null, ["call$2$5", "call$5"], ["_rootRunUnary", function($self, $parent, zone, f, arg) {
      var t1 = type$.dynamic;
      return A._rootRunUnary($self, $parent, zone, f, arg, t1, t1);
    }], 94, 0);
    _static(A, "async___rootRunBinary$closure", 6, null, ["call$3$6"], ["_rootRunBinary"], 95, 0);
    _static(A, "async___rootRegisterCallback$closure", 4, null, ["call$1$4", "call$4"], ["_rootRegisterCallback", function($self, $parent, zone, f) {
      return A._rootRegisterCallback($self, $parent, zone, f, type$.dynamic);
    }], 96, 0);
    _static(A, "async___rootRegisterUnaryCallback$closure", 4, null, ["call$2$4", "call$4"], ["_rootRegisterUnaryCallback", function($self, $parent, zone, f) {
      var t1 = type$.dynamic;
      return A._rootRegisterUnaryCallback($self, $parent, zone, f, t1, t1);
    }], 97, 0);
    _static(A, "async___rootRegisterBinaryCallback$closure", 4, null, ["call$3$4", "call$4"], ["_rootRegisterBinaryCallback", function($self, $parent, zone, f) {
      var t1 = type$.dynamic;
      return A._rootRegisterBinaryCallback($self, $parent, zone, f, t1, t1, t1);
    }], 98, 0);
    _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 99, 0);
    _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 100, 0);
    _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 101, 0);
    _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 102, 0);
    _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 103, 0);
    _static_1(A, "async___printToZone$closure", "_printToZone", 104);
    _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 105, 0);
    var _;
    _instance_0_u(_ = A._BroadcastSubscription.prototype, "get$_onPause", "_onPause$0", 0);
    _instance_0_u(_, "get$_onResume", "_onResume$0", 0);
    _instance(A._Completer.prototype, "get$completeError", 0, 1, null, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 30, 0, 0);
    _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 7);
    _instance_1_i(_ = A._StreamController.prototype, "get$add", "add$1", 9);
    _instance(_, "get$addError", 0, 1, null, ["call$2", "call$1"], ["addError$2", "addError$1"], 30, 0, 0);
    _instance_0_u(_ = A._ControllerSubscription.prototype, "get$_onPause", "_onPause$0", 0);
    _instance_0_u(_, "get$_onResume", "_onResume$0", 0);
    _instance_0_u(_ = A._BufferingStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0);
    _instance_0_u(_, "get$_onResume", "_onResume$0", 0);
    _instance_0_u(A._DoneStreamSubscription.prototype, "get$_onMicrotask", "_onMicrotask$0", 0);
    _instance_1_u(_ = A._StreamIterator.prototype, "get$_async$_onData", "_async$_onData$1", 9);
    _instance_2_u(_, "get$_onError", "_onError$2", 7);
    _instance_0_u(_, "get$_onDone", "_onDone$0", 0);
    _instance_0_u(_ = A._ForwardingStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0);
    _instance_0_u(_, "get$_onResume", "_onResume$0", 0);
    _instance_1_u(_, "get$_handleData", "_handleData$1", 9);
    _instance_2_u(_, "get$_handleError", "_handleError$2", 41);
    _instance_0_u(_, "get$_handleDone", "_handleDone$0", 0);
    _instance_0_u(_ = A._SinkTransformerStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0);
    _instance_0_u(_, "get$_onResume", "_onResume$0", 0);
    _instance_1_u(_, "get$_handleData", "_handleData$1", 9);
    _instance_2_u(_, "get$_handleError", "_handleError$2", 7);
    _instance_0_u(_, "get$_handleDone", "_handleDone$0", 0);
    _instance_1_u(A._StreamHandlerTransformer.prototype, "get$bind", "bind$1", "Stream<2>(Object?)");
    _static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 8);
    _static(A, "math__max$closure", 2, null, ["call$1$2", "call$2"], ["max", function(a, b) {
      return A.max(a, b, type$.num);
    }], 106, 0);
    _static_1(A, "math__sqrt$closure", "sqrt", 5);
    _static_1(A, "math__sin$closure", "sin", 5);
    _static_1(A, "math__cos$closure", "cos", 5);
    _static_1(A, "math__tan$closure", "tan", 5);
    _static_1(A, "math__acos$closure", "acos", 5);
    _static_1(A, "math__asin$closure", "asin", 5);
    _static_1(A, "math__atan$closure", "atan", 5);
    _instance_1_u(A.DriftCommunication.prototype, "get$_handleMessage", "_handleMessage$1", 9);
    _instance_1_u(A.DriftProtocol.prototype, "get$_decodeDbValue", "_decodeDbValue$1", 15);
    _instance_1_u(A.WebProtocol.prototype, "get$_web_protocol$_decodeDbValue", "_web_protocol$_decodeDbValue$1", 15);
    _static_1(A, "delegates___defaultSavepoint$closure", "_defaultSavepoint", 18);
    _static_1(A, "delegates___defaultRelease$closure", "_defaultRelease", 18);
    _static_1(A, "delegates___defaultRollbackToSavepoint$closure", "_defaultRollbackToSavepoint", 18);
    _static_1(A, "native_functions___pow$closure", "_pow", 36);
    _static_1(A, "native_functions___regexpImpl$closure", "_regexpImpl", 109);
    _static_1(A, "native_functions___containsImpl$closure", "_containsImpl", 110);
    _instance_0_u(A.WasmVfs.prototype, "get$close", "close$0", 0);
    _static_1(A, "sync_channel_MessageSerializer_readEmpty$closure", "MessageSerializer_readEmpty", 111);
    _static_1(A, "sync_channel_MessageSerializer_readFlags$closure", "MessageSerializer_readFlags", 112);
    _static_1(A, "sync_channel_MessageSerializer_readNameAndFlags$closure", "MessageSerializer_readNameAndFlags", 113);
    _instance_1_u(A.VfsWorker.prototype, "get$_releaseImplicitLock", "_releaseImplicitLock$1", 66);
    _instance_0_u(A.AsynchronousIndexedDbFileSystem.prototype, "get$close", "close$0", 0);
    _instance_0_u(A.IndexedDbFileSystem.prototype, "get$close", "close$0", 2);
    _instance_0_u(A._FunctionWorkItem.prototype, "get$run", "run$0", 0);
    _instance_0_u(A._DeleteFileWorkItem.prototype, "get$run", "run$0", 2);
    _instance_0_u(A._CreateFileWorkItem.prototype, "get$run", "run$0", 2);
    _instance_0_u(A._WriteFileWorkItem.prototype, "get$run", "run$0", 2);
    _instance_0_u(A.SimpleOpfsFileSystem.prototype, "get$close", "close$0", 0);
    _static_1(A, "frame_Frame___parseVM_tearOff$closure", "Frame___parseVM_tearOff", 14);
    _static_1(A, "frame_Frame___parseV8_tearOff$closure", "Frame___parseV8_tearOff", 14);
    _static_1(A, "frame_Frame___parseFirefox_tearOff$closure", "Frame___parseFirefox_tearOff", 14);
    _static_1(A, "frame_Frame___parseFriendly_tearOff$closure", "Frame___parseFriendly_tearOff", 14);
    _static_1(A, "trace_Trace___parseVM_tearOff$closure", "Trace___parseVM_tearOff", 28);
    _static_1(A, "trace_Trace___parseFriendly_tearOff$closure", "Trace___parseFriendly_tearOff", 28);
  })();
  (function inheritance() {
    var _mixin = hunkHelpers.mixin,
      _inherit = hunkHelpers.inherit,
      _inheritMany = hunkHelpers.inheritMany;
    _inherit(A.Object, null);
    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, A.SafeToStringHook, J.ArrayIterator, A.Iterable, A.CastIterator, A.Error, A.ListBase, A.Closure, A.SentinelValue, A.ListIterator, A.MappedIterator, A.WhereIterator, A.ExpandIterator, A.TakeIterator, A.SkipIterator, A.SkipWhileIterator, A.EmptyIterator, A.WhereTypeIterator, A.IndexedIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A.Symbol, A._Record, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.MapBase, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.LinkedHashMapValueIterator, A.LinkedHashMapEntryIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A._UnmodifiableNativeByteBufferView, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A._SyncStarIterator, A.AsyncError, A.Stream, A._BufferingStreamSubscription, A._BroadcastStreamController, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.StreamTransformerBase, A._StreamController, A._SyncStreamControllerDispatch, A._AsyncStreamControllerDispatch, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._EventSinkWrapper, A._HandlerEventSink, A._ZoneFunction, A._ZoneSpecification, A._ZoneDelegate, A._Zone, A._HashMapKeyIterator, A.SetBase, A._LinkedHashSetCell, A._LinkedHashSetIterator, A._LinkedListIterator, A.LinkedListEntry, A._MapBaseValueIterator, A.Codec, A.Converter, A._Utf8Encoder, A._Utf8Decoder, A._BigIntImpl, A._FinalizationRegistryWrapper, A.DateTime, A.Duration, A._Enum, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.IntegerDivisionByZeroException, A.MapEntry, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.Expando, A.NullRejectionException, A._JSSecureRandom, A.DelegatingStreamSink, A.DefaultEquality, A.ListEquality, A.NonGrowableListMixin, A.UnmodifiableMapMixin, A.DriftCommunication, A._PendingRequest, A.ConnectionClosedException, A.DriftRemoteException, A.DriftProtocol, A.Message, A.PrimitiveResponsePayload, A.ExecuteQuery, A.RequestCancellation, A.ExecuteBatchedStatement, A.RunNestedExecutorControl, A.EnsureOpen, A.ServerInfo, A.RunBeforeOpen, A.NotifyTablesUpdated, A.SelectResult, A.ServerImplementation, A._ServerDbUser, A.WebProtocol, A.TableUpdate, A.CancellationToken, A.CancellationException, A.QueryExecutor, A.BatchedStatements, A.ArgumentsForBatchedStatement, A.QueryDelegate, A.TransactionDelegate, A.DbVersionDelegate, A.QueryResult, A.QueryInterceptor, A.OpeningDetails, A.PreparedStatementsCache, A.Lock, A.DedicatedDriftWorker, A.WasmInitializationMessage, A.DriftServerController, A.RunningWasmServer, A.WasmCompatibility, A.SharedDriftWorker, A.Context, A._PathDirection, A._PathRelation, A.Style, A.ParsedPath, A.PathException, A.SqliteException, A.AllowedArgumentCount, A.RawSqliteBindings, A.SqliteResult, A.RawSqliteDatabase, A.RawStatementCompiler, A.RawSqliteStatement, A.RawSqliteContext, A.RawSqliteValue, A.FinalizablePart, A.DatabaseImplementation, A.Sqlite3Implementation, A.CommonPreparedStatement, A.VirtualFileSystem, A.BaseVfsFile, A.Cursor, A._Row_Object_UnmodifiableMapMixin, A._ResultIterator, A.IndexedParameters, A.VfsException, A.Sqlite3Filename, A._CursorReader, A.RequestResponseSynchronizer, A.MessageSerializer, A.Message0, A._ResolvedPath, A.VfsWorker, A._OpenedFileHandle, A.AsynchronousIndexedDbFileSystem, A._FileWriteRequest, A._OffsetAndBuffer, A._IndexedDbFile, A.WasmBindings, A._InjectedValues, A.DartCallbacks, A.RegisteredFunctionSet, A.Chain, A.Frame, A.LazyTrace, A.Trace, A.UnparsedFrame, A.StreamChannelMixin, A._GuaranteeSink, A.StreamChannelController, A.EventStreamProvider, A._EventStreamSubscription]);
    _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JavaScriptBigInt, J.JavaScriptSymbol, J.JSNumber, J.JSString]);
    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, J.JSArray, A.NativeByteBuffer, A.NativeTypedData]);
    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction]);
    _inherit(J.JSArraySafeToStringHook, A.SafeToStringHook);
    _inherit(J.JSUnmodifiableArray, J.JSArray);
    _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]);
    _inheritMany(A.Iterable, [A._CastIterableBase, A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A.ExpandIterable, A.TakeIterable, A.SkipIterable, A.SkipWhileIterable, A.WhereTypeIterable, A.IndexedIterable, A._KeysOrValues, A._AllMatchesIterable, A._StringAllMatchesIterable, A._SyncStarIterable, A.LinkedList]);
    _inheritMany(A._CastIterableBase, [A.CastIterable, A.__CastListBase__CastIterableBase_ListMixin]);
    _inherit(A._EfficientLengthCastIterable, A.CastIterable);
    _inherit(A._CastListBase, A.__CastListBase__CastIterableBase_ListMixin);
    _inherit(A.CastList, A._CastListBase);
    _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A.RuntimeError, A.AssertionError, A._Error, A.ArgumentError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError]);
    _inheritMany(A.ListBase, [A.UnmodifiableListBase, A.ValueList, A.WasmValueList, A.TypedDataBuffer]);
    _inherit(A.CodeUnits, A.UnmodifiableListBase);
    _inheritMany(A.Closure, [A.Closure0Args, A.Instantiation, A.Closure2Args, A.TearOffClosure, A.assertInteropArgs_closure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._SyncBroadcastStreamController__sendData_closure, A._SyncBroadcastStreamController__sendError_closure, A._SyncBroadcastStreamController__sendDone_closure, A.Future_wait_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_length_closure, A.Stream_first_closure0, A.Stream_firstWhere_closure0, A.Stream_firstWhere__closure0, A._StreamHandlerTransformer_closure, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A._HashMap_values_closure, A.MapBase_entries_closure, A._BigIntImpl_hashCode_finish, A._Uri__makePath_closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.DriftCommunication_setRequestHandler_closure, A.DriftProtocol_decodePayload_readInt, A.DriftProtocol_decodePayload_readNullableInt, A.ServerImplementation_closure, A.ServerImplementation_serve_closure, A.ServerImplementation_serve_closure0, A.ServerImplementation__waitForTurn_closure, A.WebProtocol__serializeRequest_closure, A.WebProtocol__deserializeRequest_readBatched_closure, A.WebProtocol__deserializeRequest_readBatched_closure0, A.WebProtocol__deserializeRequest_closure, A.WebProtocol__serializeSelectResult_closure, A.WebProtocol__deserializeResponse_closure, A.QueryResult_asMap_closure, A.EnableNativeFunctions_useNativeFunctions_closure, A._unaryNumFunction_closure, A.LazyDatabase__awaitOpened_closure, A.LazyDatabase_ensureOpen_closure, A.Lock_synchronized_closure, A.WebPortToChannel_channel_closure, A.WebPortToChannel_channel_closure0, A.DedicatedDriftWorker_start_closure, A.SharedWorkerCompatibilityResult_SharedWorkerCompatibilityResult$fromJsPayload_asBoolean, A.checkIndexedDbExists_closure, A.opfsDatabases_closure, A.DriftServerController_serve___closure, A.RunningWasmServer_serve_closure, A.CompleteIdbRequest_complete_closure1, A.CompleteIdbRequest_complete_closure2, A.CompleteIdbRequest_complete_closure3, A.SharedDriftWorker_start_closure, A.SharedDriftWorker__newConnection_closure, A.SharedDriftWorker__startFeatureDetection_result, A.SharedDriftWorker__startFeatureDetection_closure, A.SharedDriftWorker__startFeatureDetection_closure0, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.WindowsStyle_absolutePathToUri_closure, A.SqliteException_toString_closure, A.disposeFinalizer_closure, A.AsyncJavaScriptIteratable_listen_fetchNext_closure, A._CursorReader_moveNext_closure, A._CursorReader_moveNext_closure0, A.CompleteIdbRequest_complete_closure, A.CompleteIdbRequest_complete_closure0, A.CompleteOpenIdbRequest_completeOrBlocked_closure, A.CompleteOpenIdbRequest_completeOrBlocked_closure0, A.CompleteOpenIdbRequest_completeOrBlocked_closure1, A.AsynchronousIndexedDbFileSystem_open_closure, A.AsynchronousIndexedDbFileSystem__readFile_closure, A.AsynchronousIndexedDbFileSystem__write_closure, A.SimpleOpfsFileSystem_inDirectory_open, A._InjectedValues_closure, A._InjectedValues_closure0, A._InjectedValues_closure1, A._InjectedValues_closure2, A._InjectedValues_closure3, A._InjectedValues_closure4, A._InjectedValues_closure7, A._InjectedValues_closure8, A._InjectedValues_closure9, A._InjectedValues_closure10, A._InjectedValues_closure17, A._InjectedValues_closure18, A._InjectedValues_closure19, A._InjectedValues_closure20, A._InjectedValues_closure21, A._InjectedValues_closure22, A._InjectedValues_closure23, A._InjectedValues_closure24, A._InjectedValues_closure25, A._InjectedValues_closure26, A._InjectedValues_closure29, A.Chain_Chain$parse_closure, A.Chain_toTrace_closure, A.Chain_toString_closure0, A.Chain_toString__closure0, A.Chain_toString_closure, A.Chain_toString__closure, A.Trace__parseVM_closure, A.Trace$parseV8_closure, A.Trace$parseJSCore_closure, A.Trace$parseFirefox_closure, A.Trace$parseFriendly_closure, A.Trace_toString_closure0, A.Trace_toString_closure, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure]);
    _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._TimerImpl$periodic_closure, A.Future_Future_closure, A.Future_Future$delayed_closure, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainCoreFuture_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteErrorObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A.Stream_first_closure, A.Stream_firstWhere_closure, A.Stream_firstWhere__closure, A._StreamController__subscribe_closure, A._StreamController__recordCancel_complete, A._BufferingStreamSubscription__sendError_sendError, A._BufferingStreamSubscription__sendDone_sendDone, A._PendingEvents_schedule_closure, A._cancelAndError_closure, A._cancelAndValue_closure, A._CustomZone_bindCallback_closure, A._CustomZone_bindCallbackGuarded_closure, A._rootHandleError_closure, A._RootZone_bindCallback_closure, A._RootZone_bindCallbackGuarded_closure, A._Utf8Decoder__decoder_closure, A._Utf8Decoder__decoderNonfatal_closure, A.DriftCommunication_closure, A.ServerImplementation__handleRequest_closure, A.ServerImplementation__handleRequest_closure0, A.ServerImplementation__waitForTurn_idIsActive, A.WebProtocol_deserialize_decodeRequest, A.WebProtocol_deserialize_decodeSuccess, A.WebProtocol__deserializeRequest_readBatched, A.runCancellable_closure, A._BaseExecutor__synchronized_closure, A._BaseExecutor_runSelect_closure, A._BaseExecutor_runDelete_closure, A._BaseExecutor_runInsert_closure, A._BaseExecutor_runCustom_closure, A._BaseExecutor_runBatched_closure, A._StatementBasedTransactionExecutor_ensureOpen_closure, A._StatementBasedTransactionExecutor_ensureOpen_closure0, A.DelegatedDatabase_ensureOpen_closure, A.DelegatedDatabase_close_closure, A._ExclusiveExecutor_ensureOpen_closure, A.Lock_synchronized_callBlockAndComplete, A.Lock_synchronized_callBlockAndComplete_closure, A.WebPortToChannel_channel_closure1, A.DedicatedDriftWorker__handleMessage_closure, A.DriftServerController_serve_closure, A.DriftServerController_serve__closure, A.DriftServerController_serve__closure0, A.DriftServerController_serve__closure1, A.DatabaseImplementation__prepareInternal_freeIntermediateResults, A.AsyncJavaScriptIteratable_listen_fetchNext, A.AsyncJavaScriptIteratable_listen_fetchNextIfNecessary, A.AsynchronousIndexedDbFileSystem_readFully_closure, A._FileWriteRequest__updateBlock_closure, A.IndexedDbFileSystem__startWorkingIfNeeded_closure, A._IndexedDbFile_xTruncate_closure, A._InjectedValues__closure13, A._InjectedValues__closure12, A._InjectedValues__closure11, A._InjectedValues__closure10, A._InjectedValues__closure9, A._InjectedValues__closure8, A._InjectedValues__closure7, A._InjectedValues__closure6, A._InjectedValues__closure5, A._InjectedValues__closure4, A._InjectedValues__closure3, A._InjectedValues__closure2, A._InjectedValues__closure1, A._InjectedValues__closure0, A._InjectedValues__closure, A.Frame_Frame$parseVM_closure, A.Frame_Frame$parseV8_closure, A.Frame_Frame$_parseFirefoxEval_closure, A.Frame_Frame$parseFirefox_closure, A.Frame_Frame$parseFriendly_closure, A.Trace_Trace$from_closure, A.GuaranteeChannel_closure, A.GuaranteeChannel__closure]);
    _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.EmptyIterable, A.LinkedHashMapKeysIterable, A.LinkedHashMapValuesIterable, A.LinkedHashMapEntriesIterable, A._HashMapKeyIterable, A._MapBaseValueIterable]);
    _inheritMany(A.ListIterable, [A.SubListIterable, A.MappedListIterable, A.ReversedListIterable]);
    _inherit(A.EfficientLengthMappedIterable, A.MappedIterable);
    _inherit(A.EfficientLengthTakeIterable, A.TakeIterable);
    _inherit(A.EfficientLengthSkipIterable, A.SkipIterable);
    _inherit(A.EfficientLengthIndexedIterable, A.IndexedIterable);
    _inherit(A._Record2, A._Record);
    _inheritMany(A._Record2, [A._Record_2, A._Record_2_file_outFlags]);
    _inherit(A.ConstantStringMap, A.ConstantMap);
    _inherit(A.Instantiation1, A.Instantiation);
    _inherit(A.NullError, A.TypeError);
    _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]);
    _inherit(A._AssertionError, A.AssertionError);
    _inheritMany(A.MapBase, [A.JsLinkedHashMap, A._HashMap]);
    _inheritMany(A.Closure2Args, [A.JsLinkedHashMap_addAll_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A.Future_wait_handleError, A._Future__propagateToListeners_handleWhenCompleteCallback_closure0, A._cancelAndErrorClosure_closure, A.HashMap_HashMap$from_closure, A.MapBase_mapToString_closure, A._BigIntImpl_hashCode_combine, A.Uri_parseIPv6Address_error, A.WasmInitializationMessage_sendToWorker_closure, A.WasmInitializationMessage_sendToPort_closure, A.WasmInitializationMessage_sendToClient_closure, A.DatabaseImplementation_createFunction_closure, A.WasmInstance_load_closure, A.WasmInstance_load__closure, A.AsynchronousIndexedDbFileSystem__write_writeBlock, A._InjectedValues_closure5, A._InjectedValues_closure6, A._InjectedValues_closure11, A._InjectedValues_closure12, A._InjectedValues_closure13, A._InjectedValues_closure14, A._InjectedValues_closure15, A._InjectedValues_closure16, A._InjectedValues_closure27, A._InjectedValues_closure28, A.Frame_Frame$parseV8_closure_parseJsLocation]);
    _inherit(A.NativeArrayBuffer, A.NativeByteBuffer);
    _inheritMany(A.NativeTypedData, [A.NativeByteData, A.NativeTypedArray]);
    _inheritMany(A.NativeTypedArray, [A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]);
    _inherit(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin);
    _inherit(A.NativeTypedArrayOfDouble, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin);
    _inherit(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin);
    _inherit(A.NativeTypedArrayOfInt, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin);
    _inheritMany(A.NativeTypedArrayOfDouble, [A.NativeFloat32List, A.NativeFloat64List]);
    _inheritMany(A.NativeTypedArrayOfInt, [A.NativeInt16List, A.NativeInt32List, A.NativeInt8List, A.NativeUint16List, A.NativeUint32List, A.NativeUint8ClampedList, A.NativeUint8List]);
    _inherit(A._TypeError, A._Error);
    _inheritMany(A.Stream, [A._StreamImpl, A._ForwardingStream, A._BoundSinkStream, A.AsyncJavaScriptIteratable, A._CloseGuaranteeStream, A._EventStream]);
    _inherit(A._ControllerStream, A._StreamImpl);
    _inherit(A._BroadcastStream, A._ControllerStream);
    _inheritMany(A._BufferingStreamSubscription, [A._ControllerSubscription, A._ForwardingStreamSubscription, A._SinkTransformerStreamSubscription]);
    _inherit(A._BroadcastSubscription, A._ControllerSubscription);
    _inherit(A._SyncBroadcastStreamController, A._BroadcastStreamController);
    _inheritMany(A._Completer, [A._AsyncCompleter, A._SyncCompleter]);
    _inheritMany(A._StreamController, [A._AsyncStreamController, A._SyncStreamController]);
    _inheritMany(A._DelayedEvent, [A._DelayedData, A._DelayedError]);
    _inherit(A._MapStream, A._ForwardingStream);
    _inherit(A._StreamSinkTransformer, A.StreamTransformerBase);
    _inherit(A._StreamHandlerTransformer, A._StreamSinkTransformer);
    _inheritMany(A._Zone, [A._CustomZone, A._RootZone]);
    _inherit(A._IdentityHashMap, A._HashMap);
    _inherit(A._SetBase, A.SetBase);
    _inherit(A._LinkedHashSet, A._SetBase);
    _inheritMany(A.Codec, [A.Encoding, A.Base64Codec, A._FusedCodec]);
    _inheritMany(A.Encoding, [A.AsciiCodec, A.Utf8Codec]);
    _inheritMany(A.Converter, [A._UnicodeSubsetEncoder, A.Base64Encoder, A.Utf8Encoder]);
    _inherit(A.AsciiEncoder, A._UnicodeSubsetEncoder);
    _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]);
    _inherit(A._DataUri, A._Uri);
    _inheritMany(A.Message, [A.Request, A.SuccessResponse, A.ErrorResponse, A.CancelledResponse]);
    _inheritMany(A._Enum, [A.NoArgsRequest, A.StatementMethod, A.NestedExecutorControl, A.UpdateKind, A.SqlDialect, A.ProtocolVersion, A.WasmStorageImplementation, A.WebStorageApi, A.OpenMode, A.WorkerOperation, A.FileType]);
    _inherit(A.DatabaseDelegate, A.QueryDelegate);
    _inherit(A.NoTransactionDelegate, A.TransactionDelegate);
    _inheritMany(A.DbVersionDelegate, [A.NoVersionDelegate, A.DynamicVersionDelegate]);
    _inheritMany(A.QueryExecutor, [A._BaseExecutor, A._InterceptedExecutor, A.LazyDatabase]);
    _inheritMany(A._BaseExecutor, [A._TransactionExecutor, A.DelegatedDatabase, A._BeforeOpeningExecutor, A._ExclusiveExecutor]);
    _inherit(A._StatementBasedTransactionExecutor, A._TransactionExecutor);
    _inherit(A._InterceptedTransactionExecutor, A._InterceptedExecutor);
    _inherit(A.Sqlite3Delegate, A.DatabaseDelegate);
    _inherit(A._SqliteVersionDelegate, A.DynamicVersionDelegate);
    _inheritMany(A.WasmInitializationMessage, [A.CompatibilityResult, A.WorkerError, A.ServeDriftDatabase, A.RequestCompatibilityCheck, A.StartFileSystemServer, A.DeleteDatabase]);
    _inheritMany(A.CompatibilityResult, [A.SharedWorkerCompatibilityResult, A.DedicatedWorkerCompatibilityResult]);
    _inherit(A._CloseVfsOnClose, A.QueryInterceptor);
    _inherit(A.WasmDatabase, A.DelegatedDatabase);
    _inherit(A._WasmDelegate, A.Sqlite3Delegate);
    _inherit(A.InternalStyle, A.Style);
    _inheritMany(A.InternalStyle, [A.PosixStyle, A.UrlStyle, A.WindowsStyle]);
    _inheritMany(A.FinalizablePart, [A.FinalizableDatabase, A.FinalizableStatement]);
    _inherit(A.StatementImplementation, A.CommonPreparedStatement);
    _inherit(A.BaseVirtualFileSystem, A.VirtualFileSystem);
    _inheritMany(A.BaseVirtualFileSystem, [A.InMemoryFileSystem, A.WasmVfs, A.IndexedDbFileSystem, A.SimpleOpfsFileSystem]);
    _inheritMany(A.BaseVfsFile, [A._InMemoryFile, A.WasmFile, A._SimpleOpfsFile]);
    _inherit(A._ResultSet_Cursor_ListMixin, A.Cursor);
    _inherit(A._ResultSet_Cursor_ListMixin_NonGrowableListMixin, A._ResultSet_Cursor_ListMixin);
    _inherit(A.ResultSet, A._ResultSet_Cursor_ListMixin_NonGrowableListMixin);
    _inherit(A._Row_Object_UnmodifiableMapMixin_MapMixin, A._Row_Object_UnmodifiableMapMixin);
    _inherit(A.Row, A._Row_Object_UnmodifiableMapMixin_MapMixin);
    _inherit(A.WasmSqliteBindings, A.RawSqliteBindings);
    _inherit(A.WasmDatabase0, A.RawSqliteDatabase);
    _inherit(A.WasmStatementCompiler, A.RawStatementCompiler);
    _inherit(A.WasmStatement, A.RawSqliteStatement);
    _inherit(A.WasmContext, A.RawSqliteContext);
    _inherit(A.WasmValue, A.RawSqliteValue);
    _inherit(A.WasmSqlite3, A.Sqlite3Implementation);
    _inheritMany(A.Message0, [A.EmptyMessage, A.Flags]);
    _inherit(A.NameAndInt32Flags, A.Flags);
    _inherit(A._IndexedDbWorkItem, A.LinkedListEntry);
    _inheritMany(A._IndexedDbWorkItem, [A._FunctionWorkItem, A._DeleteFileWorkItem, A._CreateFileWorkItem, A._WriteFileWorkItem]);
    _inheritMany(A.StreamChannelMixin, [A.CloseGuaranteeChannel, A.GuaranteeChannel]);
    _inherit(A._CloseGuaranteeSink, A.DelegatingStreamSink);
    _inherit(A._IntBuffer, A.TypedDataBuffer);
    _inherit(A.Uint8Buffer, A._IntBuffer);
    _mixin(A.UnmodifiableListBase, A.UnmodifiableListMixin);
    _mixin(A.__CastListBase__CastIterableBase_ListMixin, A.ListBase);
    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListBase);
    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListBase);
    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
    _mixin(A._AsyncStreamController, A._AsyncStreamControllerDispatch);
    _mixin(A._SyncStreamController, A._SyncStreamControllerDispatch);
    _mixin(A._ResultSet_Cursor_ListMixin, A.ListBase);
    _mixin(A._ResultSet_Cursor_ListMixin_NonGrowableListMixin, A.NonGrowableListMixin);
    _mixin(A._Row_Object_UnmodifiableMapMixin, A.UnmodifiableMapMixin);
    _mixin(A._Row_Object_UnmodifiableMapMixin_MapMixin, A.MapBase);
  })();
  var init = {
    G: typeof self != "undefined" ? self : globalThis,
    typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []},
    mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List", Object: "Object", Map: "Map", JSObject: "JSObject"},
    mangledNames: {},
    types: ["~()", "~(JSObject)", "Future<~>()", "bool(String)", "int(int,int)", "double(num)", "Null()", "~(Object,StackTrace)", "String(String)", "~(Object?)", "Null(int)", "Frame()", "Null(JSObject)", "int(int)", "Frame(String)", "Object?(Object?)", "~(@)", "int(int,int,int)", "String(int)", "Future<Null>()", "~(JSObject?,List<JSObject>?)", "~(~())", "Null(int,int,int)", "Future<int>()", "bool(~)", "int(int,int,int,int,int)", "int?(int)", "int(int,int,int,int)", "Trace(String)", "int(int,int,int,JavaScriptBigInt)", "~(Object[StackTrace?])", "int(Frame)", "String(Frame)", "@()", "bool()", "Null(@)", "num?(List<Object?>)", "TableUpdate(Object?)", "Null(bool)", "Future<QueryResult>()", "@(@,String)", "~(@,StackTrace)", "int()", "Future<bool>()", "Map<String,@>(List<Object?>)", "int(List<Object?>)", "~(@,@)", "Null(QueryExecutor)", "Future<bool>(~)", "~(Object?,Object?)", "@(String)", "Null(@,StackTrace)", "bool(int)", "JSObject(JSArray<Object?>)", "RunningWasmServer()", "Future<Uint8List?>()", "Future<QueryExecutor>()", "~(EventSink<Object?>)", "~(bool,bool,bool,List<+(WebStorageApi,String)>)", "~(int,@)", "String(String?)", "String(Object?)", "~(RawSqliteContext,List<RawSqliteValue>)", "~(FinalizablePart)", "~(String,Map<String,Object?>)", "~(String,Object?)", "~(_OpenedFileHandle)", "JSObject(JSObject?)", "Future<~>(int,Uint8List)", "Future<~>(int)", "Uint8List()", "Future<JSObject>(String)", "0&(String,int?)", "bool(Object?)", "Null(~())", "Future<~>(Request)", "Null(Object,StackTrace)", "Null(~)", "int(int,JavaScriptBigInt)", "ResponsePayload?/(Request)", "Null(int,int,int,int,JavaScriptBigInt)", "Null(JavaScriptBigInt,int)", "List<Frame>(Trace)", "int(Trace)", "@(@)", "String(Trace)", "Future<ResponsePayload?>()", "CancellationToken<@>?()", "Frame(String,String)", "Trace()", "int(@,@)", "Request()", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())<Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)<Object?,Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)<Object?,Object?,Object?>", "0^()(Zone,ZoneDelegate,Zone,0^())<Object?>", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?,Object?>", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?,Object?,Object?>", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map<Object?,Object?>?)", "0^(0^,0^)<num>", "SuccessResponse()", "ExecuteBatchedStatement()", "bool?(List<Object?>)", "bool?(List<@>)", "EmptyMessage(MessageSerializer)", "Flags(MessageSerializer)", "NameAndInt32Flags(MessageSerializer)", "List<Object?>(JSArray<Object?>)", "Null(int,int)"],
    interceptorsByTag: null,
    leafTags: null,
    arrayRti: Symbol("$ti"),
    rttc: {
      "2;": (t1, t2) => o => o instanceof A._Record_2 && t1._is(o._0) && t2._is(o._1),
      "2;file,outFlags": (t1, t2) => o => o instanceof A._Record_2_file_outFlags && t1._is(o._0) && t2._is(o._1)
    }
  };
  A._Universe_addRules(init.typeUniverse, JSON.parse('{"JavaScriptFunction":"LegacyJavaScriptObject","PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","NativeSharedArrayBuffer":"NativeByteBuffer","JSArray":{"List":["1"],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"]},"JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"JavaScriptObject":{"JSObject":[]},"LegacyJavaScriptObject":{"JSObject":[]},"JSArraySafeToStringHook":{"SafeToStringHook":[]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"]},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[],"Comparable":["num"]},"JSInt":{"double":[],"int":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Comparable":["String"],"Pattern":[],"JSIndexable":["@"],"TrustedGetRuntimeType":[]},"_CastIterableBase":{"Iterable":["2"]},"CastIterator":{"Iterator":["2"]},"CastIterable":{"_CastIterableBase":["1","2"],"Iterable":["2"],"Iterable.E":"2"},"_EfficientLengthCastIterable":{"CastIterable":["1","2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"_CastListBase":{"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"]},"CastList":{"_CastListBase":["1","2"],"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","Iterable.E":"2"},"LateError":{"Error":[]},"CodeUnits":{"ListBase":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListBase.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1","ListIterable.E":"1"},"ListIterator":{"Iterator":["1"]},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedIterator":{"Iterator":["2"]},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2","ListIterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"ExpandIterator":{"Iterator":["2"]},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"TakeIterator":{"Iterator":["1"]},"SkipIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthSkipIterable":{"SkipIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"SkipIterator":{"Iterator":["1"]},"SkipWhileIterable":{"Iterable":["1"],"Iterable.E":"1"},"SkipWhileIterator":{"Iterator":["1"]},"EmptyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"EmptyIterator":{"Iterator":["1"]},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterator":{"Iterator":["1"]},"IndexedIterable":{"Iterable":["+(int,1)"],"Iterable.E":"+(int,1)"},"EfficientLengthIndexedIterable":{"IndexedIterable":["1"],"EfficientLengthIterable":["+(int,1)"],"Iterable":["+(int,1)"],"Iterable.E":"+(int,1)"},"IndexedIterator":{"Iterator":["+(int,1)"]},"UnmodifiableListBase":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1","ListIterable.E":"1"},"_Record_2":{"_Record2":[],"_Record":[]},"_Record_2_file_outFlags":{"_Record2":[],"_Record":[]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_KeysOrValues":{"Iterable":["1"],"Iterable.E":"1"},"_KeysOrValuesOrElementsIterator":{"Iterator":["1"]},"Instantiation":{"Closure":[],"Function":[]},"Instantiation1":{"Closure":[],"Function":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Closure":[],"Function":[]},"Closure2Args":{"Closure":[],"Function":[]},"TearOffClosure":{"Closure":[],"Function":[]},"StaticClosure":{"Closure":[],"Function":[]},"BoundClosure":{"Closure":[],"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeysIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"LinkedHashMapValuesIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapValueIterator":{"Iterator":["1"]},"LinkedHashMapEntriesIterable":{"EfficientLengthIterable":["MapEntry<1,2>"],"Iterable":["MapEntry<1,2>"],"Iterable.E":"MapEntry<1,2>"},"LinkedHashMapEntryIterator":{"Iterator":["MapEntry<1,2>"]},"_Record2":{"_Record":[]},"JSSyntaxRegExp":{"RegExp":[],"Pattern":[]},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"_AllMatchesIterator":{"Iterator":["RegExpMatch"]},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"_StringAllMatchesIterator":{"Iterator":["Match"]},"NativeArrayBuffer":{"NativeByteBuffer":[],"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeByteData":{"ByteData":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeInt32List":{"NativeTypedArrayOfInt":[],"Int32List":[],"ListBase":["int"],"TypedDataList":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"Uint8List":[],"ListBase":["int"],"TypedDataList":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeByteBuffer":{"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeTypedData":{"JSObject":[]},"_UnmodifiableNativeByteBufferView":{"ByteBuffer":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"JSObject":[],"JSIndexable":["1"]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"NativeTypedArrayOfDouble":[],"Float32List":[],"ListBase":["double"],"TypedDataList":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeFloat64List":{"NativeTypedArrayOfDouble":[],"Float64List":[],"ListBase":["double"],"TypedDataList":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeInt16List":{"NativeTypedArrayOfInt":[],"Int16List":[],"ListBase":["int"],"TypedDataList":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"Int8List":[],"ListBase":["int"],"TypedDataList":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"Uint16List":[],"ListBase":["int"],"TypedDataList":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"Uint32List":[],"ListBase":["int"],"TypedDataList":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"Uint8ClampedList":[],"ListBase":["int"],"TypedDataList":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_HandlerEventSink":{"EventSink":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_SyncStarIterator":{"Iterator":["1"]},"_SyncStarIterable":{"Iterable":["1"],"Iterable.E":"1"},"_BroadcastStream":{"_ControllerStream":["1"],"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_BroadcastSubscription":{"_ControllerSubscription":["1"],"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_BroadcastStreamController":{"StreamController":["1"],"StreamSink":["1"],"EventSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_SyncBroadcastStreamController":{"_BroadcastStreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"EventSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Future":{"Future":["1"]},"StreamTransformerBase":{"StreamTransformer":["1","2"]},"_StreamController":{"StreamController":["1"],"StreamSink":["1"],"EventSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"EventSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_SyncStreamController":{"_SyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"EventSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamSinkWrapper":{"StreamSink":["1"],"EventSink":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_ForwardingStream":{"Stream":["2"]},"_ForwardingStreamSubscription":{"_BufferingStreamSubscription":["2"],"StreamSubscription":["2"],"_EventSink":["2"],"_EventDispatch":["2"],"_BufferingStreamSubscription.T":"2"},"_MapStream":{"_ForwardingStream":["1","2"],"Stream":["2"],"Stream.T":"2"},"_EventSinkWrapper":{"EventSink":["1"]},"_SinkTransformerStreamSubscription":{"_BufferingStreamSubscription":["2"],"StreamSubscription":["2"],"_EventSink":["2"],"_EventDispatch":["2"],"_BufferingStreamSubscription.T":"2"},"_StreamSinkTransformer":{"StreamTransformer":["1","2"]},"_BoundSinkStream":{"Stream":["2"],"Stream.T":"2"},"_StreamHandlerTransformer":{"_StreamSinkTransformer":["1","2"],"StreamTransformer":["1","2"]},"_ZoneSpecification":{"ZoneSpecification":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_Zone":{"Zone":[]},"_CustomZone":{"_Zone":[],"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_HashMap":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"_LinkedHashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_LinkedHashSetIterator":{"Iterator":["1"]},"LinkedList":{"Iterable":["1"],"Iterable.E":"1"},"_LinkedListIterator":{"Iterator":["1"]},"ListBase":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"Map":["1","2"]},"_MapBaseValueIterable":{"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"_MapBaseValueIterator":{"Iterator":["2"]},"SetBase":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SetBase":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"AsciiCodec":{"Codec":["String","List<int>"]},"_UnicodeSubsetEncoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"AsciiEncoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"Base64Codec":{"Codec":["List<int>","String"]},"Base64Encoder":{"Converter":["List<int>","String"],"StreamTransformer":["List<int>","String"]},"_FusedCodec":{"Codec":["1","3"]},"Converter":{"StreamTransformer":["1","2"]},"Encoding":{"Codec":["String","List<int>"]},"Utf8Codec":{"Codec":["String","List<int>"]},"Utf8Encoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"BigInt":{"Comparable":["BigInt"]},"DateTime":{"Comparable":["DateTime"]},"double":{"num":[],"Comparable":["num"]},"Duration":{"Comparable":["Duration"]},"int":{"num":[],"Comparable":["num"]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"num":{"Comparable":["num"]},"RegExpMatch":{"Match":[]},"String":{"Comparable":["String"],"Pattern":[]},"_BigIntImpl":{"BigInt":[],"Comparable":["BigInt"]},"_Enum":{"Enum":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"IntegerDivisionByZeroException":{"Exception":[],"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"NullRejectionException":{"Exception":[]},"_JSSecureRandom":{"Random":[]},"DelegatingStreamSink":{"StreamSink":["1"],"EventSink":["1"]},"ConnectionClosedException":{"Exception":[]},"DriftRemoteException":{"Exception":[]},"Request":{"Message":[]},"SuccessResponse":{"Message":[]},"StatementMethod":{"Enum":[]},"ExecuteBatchedStatement":{"RequestPayload":[]},"NestedExecutorControl":{"Enum":[]},"NotifyTablesUpdated":{"RequestPayload":[]},"PrimitiveResponsePayload":{"ResponsePayload":[]},"ErrorResponse":{"Message":[]},"CancelledResponse":{"Message":[]},"NoArgsRequest":{"Enum":[],"RequestPayload":[]},"ExecuteQuery":{"RequestPayload":[]},"RequestCancellation":{"RequestPayload":[]},"RunNestedExecutorControl":{"RequestPayload":[]},"EnsureOpen":{"RequestPayload":[]},"ServerInfo":{"RequestPayload":[]},"RunBeforeOpen":{"RequestPayload":[]},"SelectResult":{"ResponsePayload":[]},"ServerImplementation":{"DriftServer":[]},"_ServerDbUser":{"QueryExecutorUser":[]},"UpdateKind":{"Enum":[]},"CancellationException":{"Exception":[]},"NoVersionDelegate":{"DbVersionDelegate":[]},"DynamicVersionDelegate":{"DbVersionDelegate":[]},"_BaseExecutor":{"QueryExecutor":[]},"_TransactionExecutor":{"_BaseExecutor":[],"TransactionExecutor":[],"QueryExecutor":[]},"_StatementBasedTransactionExecutor":{"_BaseExecutor":[],"TransactionExecutor":[],"QueryExecutor":[]},"DelegatedDatabase":{"_BaseExecutor":[],"QueryExecutor":[]},"_BeforeOpeningExecutor":{"_BaseExecutor":[],"QueryExecutor":[]},"_ExclusiveExecutor":{"_BaseExecutor":[],"QueryExecutor":[]},"_InterceptedExecutor":{"QueryExecutor":[]},"_InterceptedTransactionExecutor":{"TransactionExecutor":[],"QueryExecutor":[]},"SqlDialect":{"Enum":[]},"Sqlite3Delegate":{"DatabaseDelegate":[]},"_SqliteVersionDelegate":{"DbVersionDelegate":[]},"LazyDatabase":{"QueryExecutor":[]},"SharedWorkerCompatibilityResult":{"WasmInitializationMessage":[]},"ProtocolVersion":{"Enum":[]},"CompatibilityResult":{"WasmInitializationMessage":[]},"WorkerError":{"WasmInitializationMessage":[],"Exception":[]},"ServeDriftDatabase":{"WasmInitializationMessage":[]},"RequestCompatibilityCheck":{"WasmInitializationMessage":[]},"DedicatedWorkerCompatibilityResult":{"WasmInitializationMessage":[]},"StartFileSystemServer":{"WasmInitializationMessage":[]},"DeleteDatabase":{"WasmInitializationMessage":[]},"_CloseVfsOnClose":{"QueryInterceptor":[]},"WasmStorageImplementation":{"Enum":[]},"WebStorageApi":{"Enum":[]},"WasmDatabase":{"DelegatedDatabase":[],"_BaseExecutor":[],"QueryExecutor":[]},"_WasmDelegate":{"Sqlite3Delegate":["CommonDatabase"],"DatabaseDelegate":[],"Sqlite3Delegate.0":"CommonDatabase"},"PathException":{"Exception":[]},"PosixStyle":{"InternalStyle":[]},"UrlStyle":{"InternalStyle":[]},"WindowsStyle":{"InternalStyle":[]},"SqliteException":{"Exception":[]},"SqliteArguments":{"List":["Object?"],"EfficientLengthIterable":["Object?"],"Iterable":["Object?"]},"FinalizableDatabase":{"FinalizablePart":[]},"DatabaseImplementation":{"CommonDatabase":[]},"ValueList":{"ListBase":["Object?"],"List":["Object?"],"EfficientLengthIterable":["Object?"],"Iterable":["Object?"],"ListBase.E":"Object?"},"Sqlite3Implementation":{"CommonSqlite3":[]},"FinalizableStatement":{"FinalizablePart":[]},"StatementImplementation":{"CommonPreparedStatement":[]},"InMemoryFileSystem":{"VirtualFileSystem":[]},"_InMemoryFile":{"VirtualFileSystemFile":[]},"Row":{"UnmodifiableMapMixin":["String","@"],"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"ResultSet":{"ListBase":["Row"],"NonGrowableListMixin":["Row"],"List":["Row"],"EfficientLengthIterable":["Row"],"Cursor":[],"Iterable":["Row"],"ListBase.E":"Row"},"_ResultIterator":{"Iterator":["Row"]},"OpenMode":{"Enum":[]},"IndexedParameters":{"StatementParameters":[]},"VfsException":{"Exception":[]},"BaseVirtualFileSystem":{"VirtualFileSystem":[]},"BaseVfsFile":{"VirtualFileSystemFile":[]},"WasmValue":{"RawSqliteValue":[]},"WasmSqliteBindings":{"RawSqliteBindings":[]},"WasmDatabase0":{"RawSqliteDatabase":[]},"WasmStatement":{"RawSqliteStatement":[]},"WasmContext":{"RawSqliteContext":[]},"WasmValueList":{"ListBase":["WasmValue"],"List":["WasmValue"],"EfficientLengthIterable":["WasmValue"],"Iterable":["WasmValue"],"ListBase.E":"WasmValue"},"AsyncJavaScriptIteratable":{"Stream":["1"],"Stream.T":"1"},"WasmSqlite3":{"CommonSqlite3":[]},"WasmVfs":{"VirtualFileSystem":[]},"WasmFile":{"VirtualFileSystemFile":[]},"WorkerOperation":{"Enum":[]},"EmptyMessage":{"Message0":[]},"Flags":{"Message0":[]},"NameAndInt32Flags":{"Flags":[],"Message0":[]},"IndexedDbFileSystem":{"VirtualFileSystem":[]},"_IndexedDbWorkItem":{"LinkedListEntry":["_IndexedDbWorkItem"]},"_IndexedDbFile":{"VirtualFileSystemFile":[]},"_FunctionWorkItem":{"_IndexedDbWorkItem":[],"LinkedListEntry":["_IndexedDbWorkItem"],"LinkedListEntry.E":"_IndexedDbWorkItem"},"_DeleteFileWorkItem":{"_IndexedDbWorkItem":[],"LinkedListEntry":["_IndexedDbWorkItem"],"LinkedListEntry.E":"_IndexedDbWorkItem"},"_CreateFileWorkItem":{"_IndexedDbWorkItem":[],"LinkedListEntry":["_IndexedDbWorkItem"],"LinkedListEntry.E":"_IndexedDbWorkItem"},"_WriteFileWorkItem":{"_IndexedDbWorkItem":[],"LinkedListEntry":["_IndexedDbWorkItem"],"LinkedListEntry.E":"_IndexedDbWorkItem"},"FileType":{"Enum":[]},"SimpleOpfsFileSystem":{"VirtualFileSystem":[]},"_SimpleOpfsFile":{"VirtualFileSystemFile":[]},"Chain":{"StackTrace":[]},"LazyTrace":{"Trace":[],"StackTrace":[]},"Trace":{"StackTrace":[]},"UnparsedFrame":{"Frame":[]},"CloseGuaranteeChannel":{"StreamChannelMixin":["1"],"StreamChannel":["1"]},"_CloseGuaranteeStream":{"Stream":["1"],"Stream.T":"1"},"_CloseGuaranteeSink":{"DelegatingStreamSink":["1"],"StreamSink":["1"],"EventSink":["1"]},"GuaranteeChannel":{"StreamChannelMixin":["1"],"StreamChannel":["1"]},"_GuaranteeSink":{"StreamSink":["1"],"EventSink":["1"]},"StreamChannelMixin":{"StreamChannel":["1"]},"Uint8Buffer":{"TypedDataBuffer":["int"],"ListBase":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListBase.E":"int","TypedDataBuffer.E":"int"},"TypedDataBuffer":{"ListBase":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_IntBuffer":{"TypedDataBuffer":["int"],"ListBase":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"_EventStream":{"Stream":["1"],"Stream.T":"1"},"_EventStreamSubscription":{"StreamSubscription":["1"]},"Int8List":{"TypedDataList":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8List":{"TypedDataList":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8ClampedList":{"TypedDataList":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int16List":{"TypedDataList":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint16List":{"TypedDataList":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int32List":{"TypedDataList":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint32List":{"TypedDataList":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Float32List":{"TypedDataList":["double"],"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"Float64List":{"TypedDataList":["double"],"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]}}'));
  A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"UnmodifiableListBase":1,"__CastListBase__CastIterableBase_ListMixin":2,"NativeTypedArray":1,"StreamTransformerBase":2,"_DelayedEvent":1,"AggregateContext":1}'));
  var string$ = {
    x00_____: "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u03f6\x00\u0404\u03f4 \u03f4\u03f6\u01f6\u01f6\u03f6\u03fc\u01f4\u03ff\u03ff\u0584\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u05d4\u01f4\x00\u01f4\x00\u0504\u05c4\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0400\x00\u0400\u0200\u03f7\u0200\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0200\u0200\u0200\u03f7\x00",
    x3d_____: "===== asynchronous gap ===========================\n",
    Cannoteff: "Cannot extract a file path from a URI with a fragment component",
    Cannotefq: "Cannot extract a file path from a URI with a query component",
    Cannoten: "Cannot extract a non-Windows file path from a file URI with an authority",
    Cannotf: "Cannot fire new event. Controller is already firing an event",
    Error_: "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type",
    Tried_: "Tried to operate on a released prepared statement"
  };
  var type$ = (function rtii() {
    var findType = A.findType;
    return {
      AggregateContext_nullable_Object: findType("AggregateContext<Object?>"),
      AsyncError: findType("AsyncError"),
      AsyncJavaScriptIteratable_JSArray_nullable_Object: findType("AsyncJavaScriptIteratable<JSArray<Object?>>"),
      ByteBuffer: findType("ByteBuffer"),
      ByteData: findType("ByteData"),
      CancellationToken_dynamic: findType("CancellationToken<@>"),
      CommonPreparedStatement: findType("CommonPreparedStatement"),
      Comparable_dynamic: findType("Comparable<@>"),
      DateTime: findType("DateTime"),
      DedicatedWorkerCompatibilityResult: findType("DedicatedWorkerCompatibilityResult"),
      DriftCommunication: findType("DriftCommunication"),
      Duration: findType("Duration"),
      EfficientLengthIterable_dynamic: findType("EfficientLengthIterable<@>"),
      EmptyMessage: findType("EmptyMessage"),
      Error: findType("Error"),
      Exception: findType("Exception"),
      FileType: findType("FileType"),
      FinalizablePart: findType("FinalizablePart"),
      Flags: findType("Flags"),
      Float32List: findType("Float32List"),
      Float64List: findType("Float64List"),
      Frame: findType("Frame"),
      Frame_Function_String: findType("Frame(String)"),
      Function: findType("Function"),
      FutureOr_nullable_ResponsePayload_Function_Request: findType("ResponsePayload?/(Request)"),
      Future_bool: findType("Future<bool>"),
      Future_nullable_ResponsePayload: findType("Future<ResponsePayload?>"),
      Future_nullable_Uint8List: findType("Future<Uint8List?>"),
      IndexedDbFileSystem: findType("IndexedDbFileSystem"),
      Int16List: findType("Int16List"),
      Int32List: findType("Int32List"),
      Int8List: findType("Int8List"),
      Iterable_String: findType("Iterable<String>"),
      Iterable_double: findType("Iterable<double>"),
      Iterable_dynamic: findType("Iterable<@>"),
      Iterable_int: findType("Iterable<int>"),
      JSArray_ArgumentsForBatchedStatement: findType("JSArray<ArgumentsForBatchedStatement>"),
      JSArray_CommonPreparedStatement: findType("JSArray<CommonPreparedStatement>"),
      JSArray_FinalizableStatement: findType("JSArray<FinalizableStatement>"),
      JSArray_Frame: findType("JSArray<Frame>"),
      JSArray_Future_void: findType("JSArray<Future<~>>"),
      JSArray_JSArray_nullable_Object: findType("JSArray<JSArray<Object?>>"),
      JSArray_JSObject: findType("JSArray<JSObject>"),
      JSArray_List_dynamic: findType("JSArray<List<@>>"),
      JSArray_List_nullable_Object: findType("JSArray<List<Object?>>"),
      JSArray_Map_of_String_and_nullable_Object: findType("JSArray<Map<String,Object?>>"),
      JSArray_Object: findType("JSArray<Object>"),
      JSArray_Record_2_WebStorageApi_and_String: findType("JSArray<+(WebStorageApi,String)>"),
      JSArray_StatementImplementation: findType("JSArray<StatementImplementation>"),
      JSArray_String: findType("JSArray<String>"),
      JSArray_TableUpdate: findType("JSArray<TableUpdate>"),
      JSArray_Trace: findType("JSArray<Trace>"),
      JSArray__OffsetAndBuffer: findType("JSArray<_OffsetAndBuffer>"),
      JSArray_double: findType("JSArray<double>"),
      JSArray_dynamic: findType("JSArray<@>"),
      JSArray_int: findType("JSArray<int>"),
      JSArray_nullable_Object: findType("JSArray<Object?>"),
      JSArray_nullable_String: findType("JSArray<String?>"),
      JSArray_nullable_double: findType("JSArray<double?>"),
      JSArray_nullable_int: findType("JSArray<int?>"),
      JSArray_of_void_Function: findType("JSArray<~()>"),
      JSIndexable_dynamic: findType("JSIndexable<@>"),
      JSNull: findType("JSNull"),
      JSObject: findType("JSObject"),
      JavaScriptBigInt: findType("JavaScriptBigInt"),
      JavaScriptFunction: findType("JavaScriptFunction"),
      JavaScriptIndexingBehavior_dynamic: findType("JavaScriptIndexingBehavior<@>"),
      JavaScriptSymbol: findType("JavaScriptSymbol"),
      LinkedList__IndexedDbWorkItem: findType("LinkedList<_IndexedDbWorkItem>"),
      List_JSArray_nullable_Object: findType("List<JSArray<Object?>>"),
      List_JSObject: findType("List<JSObject>"),
      List_Map_of_String_and_nullable_Object: findType("List<Map<String,Object?>>"),
      List_RawSqliteValue: findType("List<RawSqliteValue>"),
      List_Record_2_WebStorageApi_and_String: findType("List<+(WebStorageApi,String)>"),
      List_String: findType("List<String>"),
      List_dynamic: findType("List<@>"),
      List_int: findType("List<int>"),
      List_nullable_Object: findType("List<Object?>"),
      Map_String_JSObject: findType("Map<String,JSObject>"),
      Map_String_int: findType("Map<String,int>"),
      Map_dynamic_dynamic: findType("Map<@,@>"),
      Map_of_String_and_Map_String_JSObject: findType("Map<String,Map<String,JSObject>>"),
      Map_of_String_and_nullable_Object: findType("Map<String,Object?>"),
      MappedIterable_String_Frame: findType("MappedIterable<String,Frame>"),
      MappedListIterable_String_Trace: findType("MappedListIterable<String,Trace>"),
      MappedListIterable_String_dynamic: findType("MappedListIterable<String,@>"),
      Message: findType("Message"),
      Message_2: findType("Message0"),
      NameAndInt32Flags: findType("NameAndInt32Flags"),
      NativeArrayBuffer: findType("NativeArrayBuffer"),
      NativeByteData: findType("NativeByteData"),
      NativeInt32List: findType("NativeInt32List"),
      NativeTypedArrayOfDouble: findType("NativeTypedArrayOfDouble"),
      NativeTypedArrayOfInt: findType("NativeTypedArrayOfInt"),
      NativeUint8List: findType("NativeUint8List"),
      NotifyTablesUpdated: findType("NotifyTablesUpdated"),
      Null: findType("Null"),
      Object: findType("Object"),
      QueryExecutor: findType("QueryExecutor"),
      QueryResult: findType("QueryResult"),
      Record: findType("Record"),
      Record_0: findType("+()"),
      Record_2_nullable_JSObject_and_JSObject: findType("+(JSObject?,JSObject)"),
      Record_2_nullable_Object_and_int: findType("+(Object?,int)"),
      RegExpMatch: findType("RegExpMatch"),
      RegisteredFunctionSet: findType("RegisteredFunctionSet"),
      Request: findType("Request"),
      ResponsePayload: findType("ResponsePayload"),
      ReversedListIterable_String: findType("ReversedListIterable<String>"),
      Row: findType("Row"),
      RunningWasmServer: findType("RunningWasmServer"),
      SelectResult: findType("SelectResult"),
      ServeDriftDatabase: findType("ServeDriftDatabase"),
      SessionApplyCallbacks: findType("SessionApplyCallbacks"),
      SharedWorkerCompatibilityResult: findType("SharedWorkerCompatibilityResult"),
      SimpleOpfsFileSystem: findType("SimpleOpfsFileSystem"),
      SqlDialect: findType("SqlDialect"),
      SqliteException: findType("SqliteException"),
      SqliteResult_nullable_RawSqliteStatement: findType("SqliteResult<RawSqliteStatement?>"),
      StackTrace: findType("StackTrace"),
      StatementImplementation: findType("StatementImplementation"),
      StreamChannelController_nullable_Object: findType("StreamChannelController<Object?>"),
      String: findType("String"),
      Timer: findType("Timer"),
      Trace: findType("Trace"),
      Trace_Function_String: findType("Trace(String)"),
      TransactionExecutor: findType("TransactionExecutor"),
      TrustedGetRuntimeType: findType("TrustedGetRuntimeType"),
      TypeError: findType("TypeError"),
      Uint16List: findType("Uint16List"),
      Uint32List: findType("Uint32List"),
      Uint8Buffer: findType("Uint8Buffer"),
      Uint8ClampedList: findType("Uint8ClampedList"),
      Uint8List: findType("Uint8List"),
      UnknownJavaScriptObject: findType("UnknownJavaScriptObject"),
      Uri: findType("Uri"),
      VfsWorker: findType("VfsWorker"),
      VirtualFileSystem: findType("VirtualFileSystem"),
      VirtualFileSystemFile: findType("VirtualFileSystemFile"),
      WasmBindings: findType("WasmBindings"),
      WasmSqlite3: findType("WasmSqlite3"),
      WasmStorageImplementation: findType("WasmStorageImplementation"),
      WasmValue: findType("WasmValue"),
      WasmVfs: findType("WasmVfs"),
      WhereIterable_String: findType("WhereIterable<String>"),
      WhereTypeIterable_String: findType("WhereTypeIterable<String>"),
      WorkerOperation_Flags_EmptyMessage: findType("WorkerOperation<Flags,EmptyMessage>"),
      WorkerOperation_Flags_Flags: findType("WorkerOperation<Flags,Flags>"),
      WorkerOperation_NameAndInt32Flags_Flags: findType("WorkerOperation<NameAndInt32Flags,Flags>"),
      Zone: findType("Zone"),
      _AsyncCompleter_SharedWorkerCompatibilityResult: findType("_AsyncCompleter<SharedWorkerCompatibilityResult>"),
      _AsyncCompleter_bool: findType("_AsyncCompleter<bool>"),
      _AsyncCompleter_nullable_Uint8List: findType("_AsyncCompleter<Uint8List?>"),
      _AsyncCompleter_void: findType("_AsyncCompleter<~>"),
      _BigIntImpl: findType("_BigIntImpl"),
      _CursorReader_JSObject: findType("_CursorReader<JSObject>"),
      _EventStream_JSObject: findType("_EventStream<JSObject>"),
      _Future_JSObject: findType("_Future<JSObject>"),
      _Future_SharedWorkerCompatibilityResult: findType("_Future<SharedWorkerCompatibilityResult>"),
      _Future_bool: findType("_Future<bool>"),
      _Future_dynamic: findType("_Future<@>"),
      _Future_int: findType("_Future<int>"),
      _Future_nullable_Uint8List: findType("_Future<Uint8List?>"),
      _Future_void: findType("_Future<~>"),
      _IdentityHashMap_of_nullable_Object_and_nullable_Object: findType("_IdentityHashMap<Object?,Object?>"),
      _OpenedFileHandle: findType("_OpenedFileHandle"),
      _PendingRequest: findType("_PendingRequest"),
      _ResolvedPath: findType("_ResolvedPath"),
      _StreamControllerAddStreamState_nullable_Object: findType("_StreamControllerAddStreamState<Object?>"),
      _StreamIterator_JSObject: findType("_StreamIterator<JSObject>"),
      _SyncBroadcastStreamController_void: findType("_SyncBroadcastStreamController<~>"),
      _SyncCompleter_JSObject: findType("_SyncCompleter<JSObject>"),
      _SyncCompleter_bool: findType("_SyncCompleter<bool>"),
      _SyncCompleter_void: findType("_SyncCompleter<~>"),
      _ZoneFunction_of_void_Function_Zone_ZoneDelegate_Zone_Object_StackTrace: findType("_ZoneFunction<~(Zone,ZoneDelegate,Zone,Object,StackTrace)>"),
      bool: findType("bool"),
      bool_Function_Object: findType("bool(Object)"),
      bool_Function_String: findType("bool(String)"),
      double: findType("double"),
      dynamic: findType("@"),
      dynamic_Function: findType("@()"),
      dynamic_Function_Object: findType("@(Object)"),
      dynamic_Function_Object_StackTrace: findType("@(Object,StackTrace)"),
      dynamic_Function_String: findType("@(String)"),
      int: findType("int"),
      nullable_FutureOr_nullable_Uint8List_Function: findType("Uint8List?/()?"),
      nullable_Future_Null: findType("Future<Null>?"),
      nullable_JSObject: findType("JSObject?"),
      nullable_JavaScriptFunction: findType("JavaScriptFunction?"),
      nullable_List_JSObject: findType("List<JSObject>?"),
      nullable_Map_of_nullable_Object_and_nullable_Object: findType("Map<Object?,Object?>?"),
      nullable_NativeUint8List: findType("NativeUint8List?"),
      nullable_Object: findType("Object?"),
      nullable_Object_Function_SqliteArguments: findType("Object?(SqliteArguments)"),
      nullable_RequestPayload: findType("RequestPayload?"),
      nullable_ResponsePayload: findType("ResponsePayload?"),
      nullable_StackTrace: findType("StackTrace?"),
      nullable_String: findType("String?"),
      nullable_Uint8Buffer: findType("Uint8Buffer?"),
      nullable_Uint8List: findType("Uint8List?"),
      nullable_Zone: findType("Zone?"),
      nullable_ZoneDelegate: findType("ZoneDelegate?"),
      nullable_ZoneSpecification: findType("ZoneSpecification?"),
      nullable__DelayedEvent_dynamic: findType("_DelayedEvent<@>?"),
      nullable__FutureListener_dynamic_dynamic: findType("_FutureListener<@,@>?"),
      nullable__LinkedHashSetCell: findType("_LinkedHashSetCell?"),
      nullable_bool: findType("bool?"),
      nullable_double: findType("double?"),
      nullable_int: findType("int?"),
      nullable_int_Function: findType("int()?"),
      nullable_num: findType("num?"),
      nullable_void_Function: findType("~()?"),
      nullable_void_Function_2_RawSqliteContext_and_List_RawSqliteValue: findType("~(RawSqliteContext,List<RawSqliteValue>)?"),
      nullable_void_Function_JSObject: findType("~(JSObject)?"),
      nullable_void_Function_int_String_int: findType("~(int,String,int)?"),
      num: findType("num"),
      void: findType("~"),
      void_Function: findType("~()"),
      void_Function_2_nullable_JSObject_and_nullable_List_JSObject: findType("~(JSObject?,List<JSObject>?)"),
      void_Function_Object: findType("~(Object)"),
      void_Function_Object_StackTrace: findType("~(Object,StackTrace)"),
      void_Function_Timer: findType("~(Timer)")
    };
  })();
  (function constants() {
    var makeConstList = hunkHelpers.makeConstList;
    B.Interceptor_methods = J.Interceptor.prototype;
    B.JSArray_methods = J.JSArray.prototype;
    B.JSInt_methods = J.JSInt.prototype;
    B.JSNumber_methods = J.JSNumber.prototype;
    B.JSString_methods = J.JSString.prototype;
    B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;
    B.JavaScriptObject_methods = J.JavaScriptObject.prototype;
    B.NativeByteData_methods = A.NativeByteData.prototype;
    B.NativeUint8List_methods = A.NativeUint8List.prototype;
    B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
    B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
    B.AllowedArgumentCount_0 = new A.AllowedArgumentCount(0);
    B.AllowedArgumentCount_1 = new A.AllowedArgumentCount(1);
    B.AllowedArgumentCount_2 = new A.AllowedArgumentCount(2);
    B.AllowedArgumentCount_3 = new A.AllowedArgumentCount(3);
    B.AllowedArgumentCount_m1 = new A.AllowedArgumentCount(-1);
    B.AsciiEncoder_127 = new A.AsciiEncoder(127);
    B.CONSTANT = new A.Instantiation1(A.math__max$closure(), A.findType("Instantiation1<int>"));
    B.C_AsciiCodec = new A.AsciiCodec();
    B.C_Base64Encoder = new A.Base64Encoder();
    B.C_Base64Codec = new A.Base64Codec();
    B.C_CancellationException = new A.CancellationException();
    B.C_ConnectionClosedException = new A.ConnectionClosedException();
    B.C_DefaultEquality = new A.DefaultEquality(A.findType("DefaultEquality<0&>"));
    B.C_DriftProtocol = new A.DriftProtocol();
    B.C_EmptyIterator = new A.EmptyIterator(A.findType("EmptyIterator<0&>"));
    B.C_EmptyMessage = new A.EmptyMessage();
    B.C_IntegerDivisionByZeroException = new A.IntegerDivisionByZeroException();
    B.C_JS_CONST = function getTagFallback(o) {
  var s = Object.prototype.toString.call(o);
  return s.substring(8, s.length - 1);
};
    B.C_JS_CONST0 = function() {
  var toStringFunction = Object.prototype.toString;
  function getTag(o) {
    var s = toStringFunction.call(o);
    return s.substring(8, s.length - 1);
  }
  function getUnknownTag(object, tag) {
    if (/^HTML[A-Z].*Element$/.test(tag)) {
      var name = toStringFunction.call(object);
      if (name == "[object Object]") return null;
      return "HTMLElement";
    }
  }
  function getUnknownTagGenericBrowser(object, tag) {
    if (object instanceof HTMLElement) return "HTMLElement";
    return getUnknownTag(object, tag);
  }
  function prototypeForTag(tag) {
    if (typeof window == "undefined") return null;
    if (typeof window[tag] == "undefined") return null;
    var constructor = window[tag];
    if (typeof constructor != "function") return null;
    return constructor.prototype;
  }
  function discriminator(tag) { return null; }
  var isBrowser = typeof HTMLElement == "function";
  return {
    getTag: getTag,
    getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
    prototypeForTag: prototypeForTag,
    discriminator: discriminator };
};
    B.C_JS_CONST6 = function(getTagFallback) {
  return function(hooks) {
    if (typeof navigator != "object") return hooks;
    var userAgent = navigator.userAgent;
    if (typeof userAgent != "string") return hooks;
    if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks;
    if (userAgent.indexOf("Chrome") >= 0) {
      function confirm(p) {
        return typeof window == "object" && window[p] && window[p].name == p;
      }
      if (confirm("Window") && confirm("HTMLElement")) return hooks;
    }
    hooks.getTag = getTagFallback;
  };
};
    B.C_JS_CONST1 = function(hooks) {
  if (typeof dartExperimentalFixupGetTag != "function") return hooks;
  hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
};
    B.C_JS_CONST5 = function(hooks) {
  if (typeof navigator != "object") return hooks;
  var userAgent = navigator.userAgent;
  if (typeof userAgent != "string") return hooks;
  if (userAgent.indexOf("Firefox") == -1) return hooks;
  var getTag = hooks.getTag;
  var quickMap = {
    "BeforeUnloadEvent": "Event",
    "DataTransfer": "Clipboard",
    "GeoGeolocation": "Geolocation",
    "Location": "!Location",
    "WorkerMessageEvent": "MessageEvent",
    "XMLDocument": "!Document"};
  function getTagFirefox(o) {
    var tag = getTag(o);
    return quickMap[tag] || tag;
  }
  hooks.getTag = getTagFirefox;
};
    B.C_JS_CONST4 = function(hooks) {
  if (typeof navigator != "object") return hooks;
  var userAgent = navigator.userAgent;
  if (typeof userAgent != "string") return hooks;
  if (userAgent.indexOf("Trident/") == -1) return hooks;
  var getTag = hooks.getTag;
  var quickMap = {
    "BeforeUnloadEvent": "Event",
    "DataTransfer": "Clipboard",
    "HTMLDDElement": "HTMLElement",
    "HTMLDTElement": "HTMLElement",
    "HTMLPhraseElement": "HTMLElement",
    "Position": "Geoposition"
  };
  function getTagIE(o) {
    var tag = getTag(o);
    var newTag = quickMap[tag];
    if (newTag) return newTag;
    if (tag == "Object") {
      if (window.DataView && (o instanceof window.DataView)) return "DataView";
    }
    return tag;
  }
  function prototypeForTagIE(tag) {
    var constructor = window[tag];
    if (constructor == null) return null;
    return constructor.prototype;
  }
  hooks.getTag = getTagIE;
  hooks.prototypeForTag = prototypeForTagIE;
};
    B.C_JS_CONST2 = function(hooks) {
  var getTag = hooks.getTag;
  var prototypeForTag = hooks.prototypeForTag;
  function getTagFixed(o) {
    var tag = getTag(o);
    if (tag == "Document") {
      if (!!o.xmlVersion) return "!Document";
      return "!HTMLDocument";
    }
    return tag;
  }
  function prototypeForTagFixed(tag) {
    if (tag == "Document") return null;
    return prototypeForTag(tag);
  }
  hooks.getTag = getTagFixed;
  hooks.prototypeForTag = prototypeForTagFixed;
};
    B.C_JS_CONST3 = function(hooks) { return hooks; }
;
    B.C_ListEquality = new A.ListEquality(A.findType("ListEquality<Object?>"));
    B.C_NoTransactionDelegate = new A.NoTransactionDelegate();
    B.C_NoVersionDelegate = new A.NoVersionDelegate();
    B.C_OutOfMemoryError = new A.OutOfMemoryError();
    B.C_SentinelValue = new A.SentinelValue();
    B.C_Utf8Codec = new A.Utf8Codec();
    B.C_Utf8Encoder = new A.Utf8Encoder();
    B.C__DelayedDone = new A._DelayedDone();
    B.C__RootZone = new A._RootZone();
    B.Duration_0 = new A.Duration(0);
    B.FormatException_IWx = new A.FormatException("Unknown tag", null, null);
    B.FormatException_NvI = new A.FormatException("Cannot read message", null, null);
    B.List_11 = makeConstList([11], type$.JSArray_int);
    B.WebStorageApi_0 = new A.WebStorageApi(0, "opfs");
    B.WasmStorageImplementation_0_opfsShared = new A.WasmStorageImplementation(0, "opfsShared");
    B.WasmStorageImplementation_1_opfsLocks = new A.WasmStorageImplementation(1, "opfsLocks");
    B.WebStorageApi_1 = new A.WebStorageApi(1, "indexedDb");
    B.WasmStorageImplementation_2_sharedIndexedDb = new A.WasmStorageImplementation(2, "sharedIndexedDb");
    B.WasmStorageImplementation_3_unsafeIndexedDb = new A.WasmStorageImplementation(3, "unsafeIndexedDb");
    B.WasmStorageImplementation_4_inMemory = new A.WasmStorageImplementation(4, "inMemory");
    B.List_5sp = makeConstList([B.WasmStorageImplementation_0_opfsShared, B.WasmStorageImplementation_1_opfsLocks, B.WasmStorageImplementation_2_sharedIndexedDb, B.WasmStorageImplementation_3_unsafeIndexedDb, B.WasmStorageImplementation_4_inMemory], A.findType("JSArray<WasmStorageImplementation>"));
    B.UpdateKind_0 = new A.UpdateKind(0, "insert");
    B.UpdateKind_1 = new A.UpdateKind(1, "update");
    B.UpdateKind_2 = new A.UpdateKind(2, "delete");
    B.List_L4j = makeConstList([B.UpdateKind_0, B.UpdateKind_1, B.UpdateKind_2], A.findType("JSArray<UpdateKind>"));
    B.List_WebStorageApi_0_WebStorageApi_1 = makeConstList([B.WebStorageApi_0, B.WebStorageApi_1], A.findType("JSArray<WebStorageApi>"));
    B.List_empty = makeConstList([], type$.JSArray_JSObject);
    B.List_empty2 = makeConstList([], type$.JSArray_List_nullable_Object);
    B.List_empty3 = makeConstList([], type$.JSArray_Object);
    B.List_empty0 = makeConstList([], type$.JSArray_String);
    B.List_empty1 = makeConstList([], type$.JSArray_nullable_Object);
    B.List_empty4 = makeConstList([], type$.JSArray_Record_2_WebStorageApi_and_String);
    B.FileType_Gi5 = new A.FileType("/database", 0, "database");
    B.FileType_Pwc = new A.FileType("/database-journal", 1, "journal");
    B.List_fyc = makeConstList([B.FileType_Gi5, B.FileType_Pwc], A.findType("JSArray<FileType>"));
    B.WorkerOperation_W3i = new A.WorkerOperation(A.sync_channel_MessageSerializer_readNameAndFlags$closure(), A.sync_channel_MessageSerializer_readFlags$closure(), 0, "xAccess", type$.WorkerOperation_NameAndInt32Flags_Flags);
    B.WorkerOperation_aCN = new A.WorkerOperation(A.sync_channel_MessageSerializer_readNameAndFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 1, "xDelete", A.findType("WorkerOperation<NameAndInt32Flags,EmptyMessage>"));
    B.WorkerOperation_readNameAndFlags_readFlags_2_xOpen = new A.WorkerOperation(A.sync_channel_MessageSerializer_readNameAndFlags$closure(), A.sync_channel_MessageSerializer_readFlags$closure(), 2, "xOpen", type$.WorkerOperation_NameAndInt32Flags_Flags);
    B.WorkerOperation_readFlags_readFlags_3_xRead = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readFlags$closure(), 3, "xRead", type$.WorkerOperation_Flags_Flags);
    B.WorkerOperation_readFlags_readEmpty_4_xWrite = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 4, "xWrite", type$.WorkerOperation_Flags_EmptyMessage);
    B.WorkerOperation_readFlags_readEmpty_5_xSleep = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 5, "xSleep", type$.WorkerOperation_Flags_EmptyMessage);
    B.WorkerOperation_readFlags_readEmpty_6_xClose = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 6, "xClose", type$.WorkerOperation_Flags_EmptyMessage);
    B.WorkerOperation_readFlags_readFlags_7_xFileSize = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readFlags$closure(), 7, "xFileSize", type$.WorkerOperation_Flags_Flags);
    B.WorkerOperation_readFlags_readEmpty_8_xSync = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 8, "xSync", type$.WorkerOperation_Flags_EmptyMessage);
    B.WorkerOperation_readFlags_readEmpty_9_xTruncate = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 9, "xTruncate", type$.WorkerOperation_Flags_EmptyMessage);
    B.WorkerOperation_readFlags_readEmpty_10_xLock = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 10, "xLock", type$.WorkerOperation_Flags_EmptyMessage);
    B.WorkerOperation_readFlags_readEmpty_11_xUnlock = new A.WorkerOperation(A.sync_channel_MessageSerializer_readFlags$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 11, "xUnlock", type$.WorkerOperation_Flags_EmptyMessage);
    B.WorkerOperation_readEmpty_readEmpty_12_stopServer = new A.WorkerOperation(A.sync_channel_MessageSerializer_readEmpty$closure(), A.sync_channel_MessageSerializer_readEmpty$closure(), 12, "stopServer", A.findType("WorkerOperation<EmptyMessage,EmptyMessage>"));
    B.List_mvT = makeConstList([B.WorkerOperation_W3i, B.WorkerOperation_aCN, B.WorkerOperation_readNameAndFlags_readFlags_2_xOpen, B.WorkerOperation_readFlags_readFlags_3_xRead, B.WorkerOperation_readFlags_readEmpty_4_xWrite, B.WorkerOperation_readFlags_readEmpty_5_xSleep, B.WorkerOperation_readFlags_readEmpty_6_xClose, B.WorkerOperation_readFlags_readFlags_7_xFileSize, B.WorkerOperation_readFlags_readEmpty_8_xSync, B.WorkerOperation_readFlags_readEmpty_9_xTruncate, B.WorkerOperation_readFlags_readEmpty_10_xLock, B.WorkerOperation_readFlags_readEmpty_11_xUnlock, B.WorkerOperation_readEmpty_readEmpty_12_stopServer], A.findType("JSArray<WorkerOperation<Message0,Message0>>"));
    B.SqlDialect_0_sqlite = new A.SqlDialect(0, "sqlite");
    B.SqlDialect_1_mysql = new A.SqlDialect(1, "mysql");
    B.SqlDialect_2_postgres = new A.SqlDialect(2, "postgres");
    B.SqlDialect_3_mariadb = new A.SqlDialect(3, "mariadb");
    B.List_rcv = makeConstList([B.SqlDialect_0_sqlite, B.SqlDialect_1_mysql, B.SqlDialect_2_postgres, B.SqlDialect_3_mariadb], A.findType("JSArray<SqlDialect>"));
    B.StatementMethod_0 = new A.StatementMethod(0, "custom");
    B.StatementMethod_1 = new A.StatementMethod(1, "deleteOrUpdate");
    B.StatementMethod_2 = new A.StatementMethod(2, "insert");
    B.StatementMethod_3 = new A.StatementMethod(3, "select");
    B.List_s6K = makeConstList([B.StatementMethod_0, B.StatementMethod_1, B.StatementMethod_2, B.StatementMethod_3], A.findType("JSArray<StatementMethod>"));
    B.NestedExecutorControl_0 = new A.NestedExecutorControl(0, "beginTransaction");
    B.NestedExecutorControl_1 = new A.NestedExecutorControl(1, "commit");
    B.NestedExecutorControl_2 = new A.NestedExecutorControl(2, "rollback");
    B.NestedExecutorControl_3 = new A.NestedExecutorControl(3, "startExclusive");
    B.NestedExecutorControl_4 = new A.NestedExecutorControl(4, "endExclusive");
    B.List_ttt = makeConstList([B.NestedExecutorControl_0, B.NestedExecutorControl_1, B.NestedExecutorControl_2, B.NestedExecutorControl_3, B.NestedExecutorControl_4], A.findType("JSArray<NestedExecutorControl>"));
    B.Object_empty = {};
    B.Map_empty = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,int>"));
    B.NoArgsRequest_0 = new A.NoArgsRequest(0, "terminateAll");
    B.OpenMode_2 = new A.OpenMode(2, "readWriteCreate");
    B.ProtocolVersion_0_0_legacy = new A.ProtocolVersion(0, 0, "legacy");
    B.ProtocolVersion_1_1_v1 = new A.ProtocolVersion(1, 1, "v1");
    B.ProtocolVersion_2_2_v2 = new A.ProtocolVersion(2, 2, "v2");
    B.ProtocolVersion_3_3_v3 = new A.ProtocolVersion(3, 3, "v3");
    B.ProtocolVersion_4_4_v4 = new A.ProtocolVersion(4, 4, "v4");
    B.List_empty5 = makeConstList([], type$.JSArray_Map_of_String_and_nullable_Object);
    B.SelectResult_List_empty = new A.SelectResult(B.List_empty5);
    B.Symbol_hNH = new A.Symbol("drift.runtime.cancellation");
    B.Type_ByteBuffer_rqD = A.typeLiteral("ByteBuffer");
    B.Type_ByteData_9dB = A.typeLiteral("ByteData");
    B.Type_Float32List_9Kz = A.typeLiteral("Float32List");
    B.Type_Float64List_9Kz = A.typeLiteral("Float64List");
    B.Type_Int16List_s5h = A.typeLiteral("Int16List");
    B.Type_Int32List_O8Z = A.typeLiteral("Int32List");
    B.Type_Int8List_rFV = A.typeLiteral("Int8List");
    B.Type_Object_A4p = A.typeLiteral("Object");
    B.Type_Uint16List_kmP = A.typeLiteral("Uint16List");
    B.Type_Uint32List_kmP = A.typeLiteral("Uint32List");
    B.Type_Uint8ClampedList_04U = A.typeLiteral("Uint8ClampedList");
    B.Type_Uint8List_8Eb = A.typeLiteral("Uint8List");
    B.VfsException_10 = new A.VfsException(10);
    B.VfsException_12 = new A.VfsException(12);
    B.VfsException_14 = new A.VfsException(14);
    B.VfsException_2570 = new A.VfsException(2570);
    B.VfsException_3850 = new A.VfsException(3850);
    B.VfsException_522 = new A.VfsException(522);
    B.VfsException_778 = new A.VfsException(778);
    B.VfsException_8 = new A.VfsException(8);
    B._PathDirection_6kc = new A._PathDirection("reaches root");
    B._PathDirection_Wme = new A._PathDirection("below root");
    B._PathDirection_dMN = new A._PathDirection("at root");
    B._PathDirection_vgO = new A._PathDirection("above root");
    B._PathRelation_different = new A._PathRelation("different");
    B._PathRelation_equal = new A._PathRelation("equal");
    B._PathRelation_inconclusive = new A._PathRelation("inconclusive");
    B._PathRelation_within = new A._PathRelation("within");
    B._StringStackTrace_OdL = new A._StringStackTrace("");
    B._ZoneFunction_KjJ = new A._ZoneFunction(B.C__RootZone, A.async___rootHandleUncaughtError$closure(), type$._ZoneFunction_of_void_Function_Zone_ZoneDelegate_Zone_Object_StackTrace);
    B._ZoneFunction_PAY = new A._ZoneFunction(B.C__RootZone, A.async___rootCreatePeriodicTimer$closure(), A.findType("_ZoneFunction<Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))>"));
    B._ZoneFunction_Xkh = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterUnaryCallback$closure(), A.findType("_ZoneFunction<0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?,Object?>>"));
    B._ZoneFunction__RootZone__rootCreateTimer = new A._ZoneFunction(B.C__RootZone, A.async___rootCreateTimer$closure(), A.findType("_ZoneFunction<Timer(Zone,ZoneDelegate,Zone,Duration,~())>"));
    B._ZoneFunction__RootZone__rootErrorCallback = new A._ZoneFunction(B.C__RootZone, A.async___rootErrorCallback$closure(), A.findType("_ZoneFunction<AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)>"));
    B._ZoneFunction__RootZone__rootFork = new A._ZoneFunction(B.C__RootZone, A.async___rootFork$closure(), A.findType("_ZoneFunction<Zone(Zone,ZoneDelegate,Zone,ZoneSpecification?,Map<Object?,Object?>?)>"));
    B._ZoneFunction__RootZone__rootPrint = new A._ZoneFunction(B.C__RootZone, A.async___rootPrint$closure(), A.findType("_ZoneFunction<~(Zone,ZoneDelegate,Zone,String)>"));
    B._ZoneFunction__RootZone__rootRegisterCallback = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterCallback$closure(), A.findType("_ZoneFunction<0^()(Zone,ZoneDelegate,Zone,0^())<Object?>>"));
    B._ZoneFunction__RootZone__rootRun = new A._ZoneFunction(B.C__RootZone, A.async___rootRun$closure(), A.findType("_ZoneFunction<0^(Zone,ZoneDelegate,Zone,0^())<Object?>>"));
    B._ZoneFunction__RootZone__rootRunBinary = new A._ZoneFunction(B.C__RootZone, A.async___rootRunBinary$closure(), A.findType("_ZoneFunction<0^(Zone,ZoneDelegate,Zone,0^(1^,2^),1^,2^)<Object?,Object?,Object?>>"));
    B._ZoneFunction__RootZone__rootRunUnary = new A._ZoneFunction(B.C__RootZone, A.async___rootRunUnary$closure(), A.findType("_ZoneFunction<0^(Zone,ZoneDelegate,Zone,0^(1^),1^)<Object?,Object?>>"));
    B._ZoneFunction__RootZone__rootScheduleMicrotask = new A._ZoneFunction(B.C__RootZone, A.async___rootScheduleMicrotask$closure(), A.findType("_ZoneFunction<~(Zone,ZoneDelegate,Zone,~())>"));
    B._ZoneFunction_e9o = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterBinaryCallback$closure(), A.findType("_ZoneFunction<0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?,Object?,Object?>>"));
    B._ZoneSpecification_Ipa = new A._ZoneSpecification(null, null, null, null, null, null, null, null, null, null, null, null, null);
  })();
  (function staticFields() {
    $._JS_INTEROP_INTERCEPTOR_TAG = null;
    $.toStringVisiting = A._setArrayType([], type$.JSArray_Object);
    $.printToZone = null;
    $.Primitives__identityHashCodeProperty = null;
    $.BoundClosure__receiverFieldNameCache = null;
    $.BoundClosure__interceptorFieldNameCache = null;
    $.getTagFunction = null;
    $.alternateTagFunction = null;
    $.prototypeForTagFunction = null;
    $.dispatchRecordsForInstanceTags = null;
    $.interceptorsForUncacheableTags = null;
    $.initNativeDispatchFlag = null;
    $._Record__computedFieldKeys = A._setArrayType([], A.findType("JSArray<List<Object>?>"));
    $._nextCallback = null;
    $._lastCallback = null;
    $._lastPriorityCallback = null;
    $._isInCallbackLoop = false;
    $.Zone__current = B.C__RootZone;
    $._RootZone__rootDelegate = null;
    $._BigIntImpl__lastDividendDigits = null;
    $._BigIntImpl__lastDividendUsed = null;
    $._BigIntImpl__lastDivisorDigits = null;
    $._BigIntImpl__lastDivisorUsed = null;
    $._BigIntImpl____lastQuoRemDigits = A._Cell$named("_lastQuoRemDigits");
    $._BigIntImpl____lastQuoRemUsed = A._Cell$named("_lastQuoRemUsed");
    $._BigIntImpl____lastRemUsed = A._Cell$named("_lastRemUsed");
    $._BigIntImpl____lastRem_nsh = A._Cell$named("_lastRem_nsh");
    $.Uri__cachedBaseString = "";
    $.Uri__cachedBaseUri = null;
    $._currentUriBase = null;
    $._current = null;
  })();
  (function lazyInitializers() {
    var _lazyFinal = hunkHelpers.lazyFinal,
      _lazy = hunkHelpers.lazy;
    _lazyFinal($, "DART_CLOSURE_PROPERTY_NAME", "$get$DART_CLOSURE_PROPERTY_NAME", () => A.getIsolateAffinityTag("_$dart_dartClosure"));
    _lazyFinal($, "nullFuture", "$get$nullFuture", () => B.C__RootZone.run$1$1(new A.nullFuture_closure(), A.findType("Future<~>")));
    _lazyFinal($, "_safeToStringHooks", "$get$_safeToStringHooks", () => A._setArrayType([new J.JSArraySafeToStringHook()], A.findType("JSArray<SafeToStringHook>")));
    _lazyFinal($, "TypeErrorDecoder_noSuchMethodPattern", "$get$TypeErrorDecoder_noSuchMethodPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({
      toString: function() {
        return "$receiver$";
      }
    })));
    _lazyFinal($, "TypeErrorDecoder_notClosurePattern", "$get$TypeErrorDecoder_notClosurePattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({$method$: null,
      toString: function() {
        return "$receiver$";
      }
    })));
    _lazyFinal($, "TypeErrorDecoder_nullCallPattern", "$get$TypeErrorDecoder_nullCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(null)));
    _lazyFinal($, "TypeErrorDecoder_nullLiteralCallPattern", "$get$TypeErrorDecoder_nullLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      var $argumentsExpr$ = "$arguments$";
      try {
        null.$method$($argumentsExpr$);
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "TypeErrorDecoder_undefinedCallPattern", "$get$TypeErrorDecoder_undefinedCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(void 0)));
    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralCallPattern", "$get$TypeErrorDecoder_undefinedLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      var $argumentsExpr$ = "$arguments$";
      try {
        (void 0).$method$($argumentsExpr$);
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "TypeErrorDecoder_nullPropertyPattern", "$get$TypeErrorDecoder_nullPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(null)));
    _lazyFinal($, "TypeErrorDecoder_nullLiteralPropertyPattern", "$get$TypeErrorDecoder_nullLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      try {
        null.$method$;
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "TypeErrorDecoder_undefinedPropertyPattern", "$get$TypeErrorDecoder_undefinedPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(void 0)));
    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralPropertyPattern", "$get$TypeErrorDecoder_undefinedLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      try {
        (void 0).$method$;
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "_AsyncRun__scheduleImmediateClosure", "$get$_AsyncRun__scheduleImmediateClosure", () => A._AsyncRun__initializeScheduleImmediate());
    _lazyFinal($, "Future__nullFuture", "$get$Future__nullFuture", () => $.$get$nullFuture());
    _lazyFinal($, "Future__falseFuture", "$get$Future__falseFuture", () => A._Future$zoneValue(false, B.C__RootZone, type$.bool));
    _lazyFinal($, "_RootZone__rootMap", "$get$_RootZone__rootMap", () => {
      var t1 = type$.dynamic;
      return A.HashMap_HashMap(t1, t1);
    });
    _lazyFinal($, "_Utf8Decoder__reusableBuffer", "$get$_Utf8Decoder__reusableBuffer", () => A.NativeUint8List_NativeUint8List(4096));
    _lazyFinal($, "_Utf8Decoder__decoder", "$get$_Utf8Decoder__decoder", () => new A._Utf8Decoder__decoder_closure().call$0());
    _lazyFinal($, "_Utf8Decoder__decoderNonfatal", "$get$_Utf8Decoder__decoderNonfatal", () => new A._Utf8Decoder__decoderNonfatal_closure().call$0());
    _lazyFinal($, "_Base64Decoder__inverseAlphabet", "$get$_Base64Decoder__inverseAlphabet", () => A.NativeInt8List__create1(A._ensureNativeList(A._setArrayType([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -1, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2], type$.JSArray_int))));
    _lazyFinal($, "_BigIntImpl_zero", "$get$_BigIntImpl_zero", () => A._BigIntImpl__BigIntImpl$_fromInt(0));
    _lazyFinal($, "_BigIntImpl_one", "$get$_BigIntImpl_one", () => A._BigIntImpl__BigIntImpl$_fromInt(1));
    _lazyFinal($, "_BigIntImpl_two", "$get$_BigIntImpl_two", () => A._BigIntImpl__BigIntImpl$_fromInt(2));
    _lazyFinal($, "_BigIntImpl__minusOne", "$get$_BigIntImpl__minusOne", () => $.$get$_BigIntImpl_one().$negate(0));
    _lazyFinal($, "_BigIntImpl__bigInt10000", "$get$_BigIntImpl__bigInt10000", () => A._BigIntImpl__BigIntImpl$_fromInt(10000));
    _lazy($, "_BigIntImpl__parseRE", "$get$_BigIntImpl__parseRE", () => A.RegExp_RegExp("^\\s*([+-]?)((0x[a-f0-9]+)|(\\d+)|([a-z0-9]+))\\s*$", false, false, false, false));
    _lazyFinal($, "_BigIntImpl__bitsForFromDouble", "$get$_BigIntImpl__bitsForFromDouble", () => A.NativeUint8List_NativeUint8List(8));
    _lazyFinal($, "_FinalizationRegistryWrapper__finalizationRegistryConstructor", "$get$_FinalizationRegistryWrapper__finalizationRegistryConstructor", () => typeof FinalizationRegistry == "function" ? FinalizationRegistry : null);
    _lazyFinal($, "_Uri__needsNoEncoding", "$get$_Uri__needsNoEncoding", () => A.RegExp_RegExp("^[\\-\\.0-9A-Z_a-z~]*$", true, false, false, false));
    _lazyFinal($, "_hashSeed", "$get$_hashSeed", () => A.objectHashCode(B.Type_Object_A4p));
    _lazyFinal($, "Random__secureRandom", "$get$Random__secureRandom", () => {
      var t1 = new A._JSSecureRandom(new DataView(new ArrayBuffer(A._checkLength(8))));
      t1._JSSecureRandom$0();
      return t1;
    });
    _lazyFinal($, "WebStorageApi_byName", "$get$WebStorageApi_byName", () => A.EnumByName_asNameMap(B.List_WebStorageApi_0_WebStorageApi_1, A.findType("WebStorageApi")));
    _lazyFinal($, "windows", "$get$windows", () => A.Context_Context(null, $.$get$Style_windows()));
    _lazyFinal($, "url", "$get$url", () => A.Context_Context(null, $.$get$Style_url()));
    _lazyFinal($, "context", "$get$context", () => new A.Context($.$get$Style_platform(), null));
    _lazyFinal($, "Style_posix", "$get$Style_posix", () => new A.PosixStyle(A.RegExp_RegExp("/", true, false, false, false), A.RegExp_RegExp("[^/]$", true, false, false, false), A.RegExp_RegExp("^/", true, false, false, false)));
    _lazyFinal($, "Style_windows", "$get$Style_windows", () => new A.WindowsStyle(A.RegExp_RegExp("[/\\\\]", true, false, false, false), A.RegExp_RegExp("[^/\\\\]$", true, false, false, false), A.RegExp_RegExp("^(\\\\\\\\[^\\\\]+\\\\[^\\\\/]+|[a-zA-Z]:[/\\\\])", true, false, false, false), A.RegExp_RegExp("^[/\\\\](?![/\\\\])", true, false, false, false)));
    _lazyFinal($, "Style_url", "$get$Style_url", () => new A.UrlStyle(A.RegExp_RegExp("/", true, false, false, false), A.RegExp_RegExp("(^[a-zA-Z][-+.a-zA-Z\\d]*://|[^/])$", true, false, false, false), A.RegExp_RegExp("[a-zA-Z][-+.a-zA-Z\\d]*://[^/]*", true, false, false, false), A.RegExp_RegExp("^/", true, false, false, false)));
    _lazyFinal($, "Style_platform", "$get$Style_platform", () => A.Style__getPlatformStyle());
    _lazyFinal($, "bigIntMinValue64", "$get$bigIntMinValue64", () => A.BigInt_parse("-9223372036854775808"));
    _lazyFinal($, "bigIntMaxValue64", "$get$bigIntMaxValue64", () => A.BigInt_parse("9223372036854775807"));
    _lazyFinal($, "disposeFinalizer", "$get$disposeFinalizer", () => {
      var t1 = $.$get$_FinalizationRegistryWrapper__finalizationRegistryConstructor();
      t1 = t1 == null ? null : new t1(A.convertDartClosureToJS(A.wrapZoneUnaryCallback(new A.disposeFinalizer_closure(), type$.FinalizablePart), 1));
      return new A._FinalizationRegistryWrapper(t1, A.findType("_FinalizationRegistryWrapper<FinalizablePart>"));
    });
    _lazyFinal($, "BaseVirtualFileSystem__fallbackRandom", "$get$BaseVirtualFileSystem__fallbackRandom", () => $.$get$Random__secureRandom());
    _lazyFinal($, "AsynchronousIndexedDbFileSystem__storesJs", "$get$AsynchronousIndexedDbFileSystem__storesJs", () => A.ListToJSArray_get_toJS(A._setArrayType(["files", "blocks"], type$.JSArray_String), type$.String));
    _lazyFinal($, "FileType_byName", "$get$FileType_byName", () => {
      var _i, entry,
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.FileType);
      for (_i = 0; _i < 2; ++_i) {
        entry = B.List_fyc[_i];
        t1.$indexSet(0, entry.filePath, entry);
      }
      return t1;
    });
    _lazyFinal($, "DartCallbacks_sqliteVfsPointer", "$get$DartCallbacks_sqliteVfsPointer", () => new A.Expando(new WeakMap(), A.findType("Expando<int>")));
    _lazyFinal($, "_vmFrame", "$get$_vmFrame", () => A.RegExp_RegExp("^#\\d+\\s+(\\S.*) \\((.+?)((?::\\d+){0,2})\\)$", true, false, false, false));
    _lazyFinal($, "_v8JsFrame", "$get$_v8JsFrame", () => A.RegExp_RegExp("^\\s*at (?:(\\S.*?)(?: \\[as [^\\]]+\\])? \\((.*)\\)|(.*))$", true, false, false, false));
    _lazyFinal($, "_v8JsUrlLocation", "$get$_v8JsUrlLocation", () => A.RegExp_RegExp("^(.*?):(\\d+)(?::(\\d+))?$|native$", true, false, false, false));
    _lazyFinal($, "_v8WasmFrame", "$get$_v8WasmFrame", () => A.RegExp_RegExp("^\\s*at (?:(?<member>.+) )?(?:\\(?(?:(?<uri>\\S+):wasm-function\\[(?<index>\\d+)\\]\\:0x(?<offset>[0-9a-fA-F]+))\\)?)$", true, false, false, false));
    _lazyFinal($, "_v8EvalLocation", "$get$_v8EvalLocation", () => A.RegExp_RegExp("^eval at (?:\\S.*?) \\((.*)\\)(?:, .*?:\\d+:\\d+)?$", true, false, false, false));
    _lazyFinal($, "_firefoxEvalLocation", "$get$_firefoxEvalLocation", () => A.RegExp_RegExp("(\\S+)@(\\S+) line (\\d+) >.* (Function|eval):\\d+:\\d+", true, false, false, false));
    _lazyFinal($, "_firefoxSafariJSFrame", "$get$_firefoxSafariJSFrame", () => A.RegExp_RegExp("^(?:([^@(/]*)(?:\\(.*\\))?((?:/[^/]*)*)(?:\\(.*\\))?@)?(.*?):(\\d*)(?::(\\d*))?$", true, false, false, false));
    _lazyFinal($, "_firefoxWasmFrame", "$get$_firefoxWasmFrame", () => A.RegExp_RegExp("^(?<member>.*?)@(?:(?<uri>\\S+).*?:wasm-function\\[(?<index>\\d+)\\]:0x(?<offset>[0-9a-fA-F]+))$", true, false, false, false));
    _lazyFinal($, "_safariWasmFrame", "$get$_safariWasmFrame", () => A.RegExp_RegExp("^.*?wasm-function\\[(?<member>.*)\\]@\\[wasm code\\]$", true, false, false, false));
    _lazyFinal($, "_friendlyFrame", "$get$_friendlyFrame", () => A.RegExp_RegExp("^(\\S+)(?: (\\d+)(?::(\\d+))?)?\\s+([^\\d].*)$", true, false, false, false));
    _lazyFinal($, "_asyncBody", "$get$_asyncBody", () => A.RegExp_RegExp("<(<anonymous closure>|[^>]+)_async_body>", true, false, false, false));
    _lazyFinal($, "_initialDot", "$get$_initialDot", () => A.RegExp_RegExp("^\\.", true, false, false, false));
    _lazyFinal($, "Frame__uriRegExp", "$get$Frame__uriRegExp", () => A.RegExp_RegExp("^[a-zA-Z][-+.a-zA-Z\\d]*://", true, false, false, false));
    _lazyFinal($, "Frame__windowsRegExp", "$get$Frame__windowsRegExp", () => A.RegExp_RegExp("^([a-zA-Z]:[\\\\/]|\\\\\\\\)", true, false, false, false));
    _lazyFinal($, "_v8Trace", "$get$_v8Trace", () => A.RegExp_RegExp("\\n    ?at ", true, false, false, false));
    _lazyFinal($, "_v8TraceLine", "$get$_v8TraceLine", () => A.RegExp_RegExp("    ?at ", true, false, false, false));
    _lazyFinal($, "_firefoxEvalTrace", "$get$_firefoxEvalTrace", () => A.RegExp_RegExp("@\\S+ line \\d+ >.* (Function|eval):\\d+:\\d+", true, false, false, false));
    _lazyFinal($, "_firefoxSafariTrace", "$get$_firefoxSafariTrace", () => A.RegExp_RegExp("^(([.0-9A-Za-z_$/<]|\\(.*\\))*@)?[^\\s]*:\\d*$", true, false, true, false));
    _lazyFinal($, "_friendlyTrace", "$get$_friendlyTrace", () => A.RegExp_RegExp("^[^\\s<][^\\s]*( \\d+(:\\d+)?)?[ \\t]+[^\\s]+$", true, false, true, false));
    _lazyFinal($, "vmChainGap", "$get$vmChainGap", () => A.RegExp_RegExp("^<asynchronous suspension>\\n?$", true, false, true, false));
  })();
  (function nativeSupport() {
    !function() {
      var intern = function(s) {
        var o = {};
        o[s] = 1;
        return Object.keys(hunkHelpers.convertToFastObject(o))[0];
      };
      init.getIsolateTag = function(name) {
        return intern("___dart_" + name + init.isolateTag);
      };
      var tableProperty = "___dart_isolate_tags_";
      var usedProperties = Object[tableProperty] || (Object[tableProperty] = Object.create(null));
      var rootProperty = "_ZxYxX";
      for (var i = 0;; i++) {
        var property = intern(rootProperty + "_" + i + "_");
        if (!(property in usedProperties)) {
          usedProperties[property] = 1;
          init.isolateTag = property;
          break;
        }
      }
      init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
    }();
    hunkHelpers.setOrUpdateInterceptorsByTag({SharedArrayBuffer: A.NativeByteBuffer, ArrayBuffer: A.NativeArrayBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeFloat32List, Float64Array: A.NativeFloat64List, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List});
    hunkHelpers.setOrUpdateLeafTags({SharedArrayBuffer: true, ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false});
    A.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A.NativeTypedArrayOfDouble.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView";
  })();
  Function.prototype.call$0 = function() {
    return this();
  };
  Function.prototype.call$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$2 = function(a, b) {
    return this(a, b);
  };
  Function.prototype.call$3$3 = function(a, b, c) {
    return this(a, b, c);
  };
  Function.prototype.call$2$2 = function(a, b) {
    return this(a, b);
  };
  Function.prototype.call$1$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$2$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$3 = function(a, b, c) {
    return this(a, b, c);
  };
  Function.prototype.call$4 = function(a, b, c, d) {
    return this(a, b, c, d);
  };
  Function.prototype.call$3$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$2$3 = function(a, b, c) {
    return this(a, b, c);
  };
  Function.prototype.call$1$2 = function(a, b) {
    return this(a, b);
  };
  Function.prototype.call$5 = function(a, b, c, d, e) {
    return this(a, b, c, d, e);
  };
  Function.prototype.call$3$4 = function(a, b, c, d) {
    return this(a, b, c, d);
  };
  Function.prototype.call$2$4 = function(a, b, c, d) {
    return this(a, b, c, d);
  };
  Function.prototype.call$1$4 = function(a, b, c, d) {
    return this(a, b, c, d);
  };
  Function.prototype.call$3$6 = function(a, b, c, d, e, f) {
    return this(a, b, c, d, e, f);
  };
  Function.prototype.call$2$5 = function(a, b, c, d, e) {
    return this(a, b, c, d, e);
  };
  Function.prototype.call$1$0 = function() {
    return this();
  };
  convertAllToFastObject(holders);
  convertToFastObject($);
  (function(callback) {
    if (typeof document === "undefined") {
      callback(null);
      return;
    }
    if (typeof document.currentScript != "undefined") {
      callback(document.currentScript);
      return;
    }
    var scripts = document.scripts;
    function onLoad(event) {
      for (var i = 0; i < scripts.length; ++i) {
        scripts[i].removeEventListener("load", onLoad, false);
      }
      callback(event.target);
    }
    for (var i = 0; i < scripts.length; ++i) {
      scripts[i].addEventListener("load", onLoad, false);
    }
  })(function(currentScript) {
    init.currentScript = currentScript;
    var callMain = A.main;
    if (typeof dartMainRunner === "function") {
      dartMainRunner(callMain, []);
    } else {
      callMain([]);
    }
  });
})();

//# sourceMappingURL=worker.dart.js.map
